From d124bc2444b90400c5b4b330e933e08dac8d874f Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Tue, 8 Nov 2022 02:13:44 +0800 Subject: [PATCH] Doc Hub proposal (#303) * Add description entity Signed-off-by: Kevin Su * Add id Signed-off-by: Kevin Su * wip Signed-off-by: Kevin Su * few update Signed-off-by: Kevin Su * update service Signed-off-by: Kevin Su * update service Signed-off-by: Kevin Su * Add description entity to task and workflow Signed-off-by: Kevin Su * update des entity Signed-off-by: Kevin Su * update Signed-off-by: Kevin Su * nit Signed-off-by: Kevin Su * typo Signed-off-by: Kevin Su * address comment Signed-off-by: Kevin Su * update idl Signed-off-by: Kevin Su * list description entity Signed-off-by: Kevin Su * make generate Signed-off-by: Kevin Su * make generate Signed-off-by: Kevin Su * Update service name Signed-off-by: Kevin Su * update endpoint Signed-off-by: Kevin Su * update endpoint Signed-off-by: Kevin Su * remove create_description_entity endpoint Signed-off-by: Kevin Su * Add description to task/workflow Signed-off-by: Kevin Su * update Signed-off-by: Kevin Su * address comments Signed-off-by: Kevin Su * address comments Signed-off-by: Kevin Su * fix tests Signed-off-by: Kevin Su * nit Signed-off-by: Kevin Su * fix test Signed-off-by: Kevin Su * Add id.resource_type Signed-off-by: Kevin Su * undeclared name: ResourceType Signed-off-by: Kevin Su * update wrong code manually Signed-off-by: Kevin Su * Fixed tests Signed-off-by: Kevin Su * Fixed tests Signed-off-by: Kevin Su Signed-off-by: Kevin Su Co-authored-by: Yee Hing Tong Signed-off-by: Eduardo Apolinario --- flyteidl/clients/go/admin/authtype_enumer.go | 1 - .../go/admin/mocks/AdminServiceClient.go | 96 + .../go/admin/mocks/AdminServiceServer.go | 82 + .../admin/description_entity.grpc.pb.cc | 24 + .../admin/description_entity.grpc.pb.h | 47 + .../flyteidl/admin/description_entity.pb.cc | 2658 +++++++ .../flyteidl/admin/description_entity.pb.h | 1832 +++++ flyteidl/gen/pb-cpp/flyteidl/admin/task.pb.cc | 211 +- flyteidl/gen/pb-cpp/flyteidl/admin/task.pb.h | 124 + .../gen/pb-cpp/flyteidl/admin/workflow.pb.cc | 241 +- .../gen/pb-cpp/flyteidl/admin/workflow.pb.h | 124 + .../pb-cpp/flyteidl/service/admin.grpc.pb.cc | 84 + .../pb-cpp/flyteidl/service/admin.grpc.pb.h | 336 +- .../gen/pb-cpp/flyteidl/service/admin.pb.cc | 729 +- .../gen/pb-cpp/flyteidl/service/admin.pb.h | 2 + .../flyteidl/admin/description_entity.pb.go | 476 ++ .../admin/description_entity.pb.validate.go | 465 ++ .../admin/description_entity.swagger.json | 19 + flyteidl/gen/pb-go/flyteidl/admin/task.pb.go | 84 +- .../pb-go/flyteidl/admin/task.pb.validate.go | 12 + .../gen/pb-go/flyteidl/admin/workflow.pb.go | 106 +- .../flyteidl/admin/workflow.pb.validate.go | 12 + .../gen/pb-go/flyteidl/service/admin.pb.go | 512 +- .../gen/pb-go/flyteidl/service/admin.pb.gw.go | 294 + .../pb-go/flyteidl/service/admin.swagger.json | 359 + .../flyteidl/service/flyteadmin/README.md | 8 + .../service/flyteadmin/api/swagger.yaml | 397 +- .../service/flyteadmin/api_admin_service.go | 350 + .../flyteadmin/model_admin_description.go | 18 + .../model_admin_description_entity.go | 24 + .../model_admin_description_entity_list.go | 17 + .../model_admin_description_format.go | 20 + .../flyteadmin/model_admin_source_code.go | 14 + .../service/flyteadmin/model_admin_task.go | 2 + .../flyteadmin/model_admin_task_spec.go | 2 + .../flyteadmin/model_admin_workflow.go | 2 + .../flyteadmin/model_admin_workflow_spec.go | 2 + .../gen/pb-go/flyteidl/service/openapi.go | 4 +- .../admin/DescriptionEntityOuterClass.java | 6299 +++++++++++++++++ .../flyteidl/admin/TaskOuterClass.java | 466 +- .../flyteidl/admin/WorkflowOuterClass.java | 490 +- .../gen/pb-java/flyteidl/service/Admin.java | 725 +- flyteidl/gen/pb-js/flyteidl.d.ts | 415 ++ flyteidl/gen/pb-js/flyteidl.js | 991 +++ .../flyteidl/admin/description_entity_pb2.py | 375 + .../admin/description_entity_pb2_grpc.py | 3 + .../gen/pb_python/flyteidl/admin/task_pb2.py | 44 +- .../pb_python/flyteidl/admin/workflow_pb2.py | 56 +- .../pb_python/flyteidl/service/admin_pb2.py | 28 +- .../flyteidl/service/admin_pb2_grpc.py | 35 + .../flyteidl/service/flyteadmin/README.md | 8 + .../service/flyteadmin/flyteadmin/__init__.py | 5 + .../flyteadmin/api/admin_service_api.py | 413 ++ .../flyteadmin/flyteadmin/models/__init__.py | 5 + .../flyteadmin/models/admin_description.py | 195 + .../models/admin_description_entity.py | 233 + .../models/admin_description_entity_list.py | 147 + .../models/admin_description_format.py | 95 + .../flyteadmin/models/admin_source_code.py | 115 + .../flyteadmin/models/admin_task.py | 34 +- .../flyteadmin/models/admin_task_spec.py | 35 +- .../flyteadmin/models/admin_workflow.py | 34 +- .../flyteadmin/models/admin_workflow_spec.py | 35 +- .../flyteadmin/test/test_admin_description.py | 40 + .../test/test_admin_description_entity.py | 40 + .../test_admin_description_entity_list.py | 40 + .../test/test_admin_description_format.py | 40 + .../flyteadmin/test/test_admin_service_api.py | 21 + .../flyteadmin/test/test_admin_source_code.py | 40 + flyteidl/generate_protos.sh | 6 + flyteidl/go.mod | 1 + flyteidl/go.sum | 3 + flyteidl/protos/docs/admin/admin.rst | 171 + flyteidl/protos/docs/service/service.rst | 2 + .../flyteidl/admin/description_entity.proto | 95 + flyteidl/protos/flyteidl/admin/task.proto | 7 + flyteidl/protos/flyteidl/admin/workflow.proto | 7 + .../protos/flyteidl/core/identifier.proto | 2 +- flyteidl/protos/flyteidl/service/admin.proto | 25 +- flyteidl/scripts/test_diff.sh | 8 +- 80 files changed, 20448 insertions(+), 1171 deletions(-) create mode 100644 flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.grpc.pb.cc create mode 100644 flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.grpc.pb.h create mode 100644 flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.pb.cc create mode 100644 flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.pb.h create mode 100644 flyteidl/gen/pb-go/flyteidl/admin/description_entity.pb.go create mode 100644 flyteidl/gen/pb-go/flyteidl/admin/description_entity.pb.validate.go create mode 100644 flyteidl/gen/pb-go/flyteidl/admin/description_entity.swagger.json create mode 100644 flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description.go create mode 100644 flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description_entity.go create mode 100644 flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description_entity_list.go create mode 100644 flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description_format.go create mode 100644 flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_source_code.go create mode 100644 flyteidl/gen/pb-java/flyteidl/admin/DescriptionEntityOuterClass.java create mode 100644 flyteidl/gen/pb_python/flyteidl/admin/description_entity_pb2.py create mode 100644 flyteidl/gen/pb_python/flyteidl/admin/description_entity_pb2_grpc.py create mode 100644 flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description.py create mode 100644 flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description_entity.py create mode 100644 flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description_entity_list.py create mode 100644 flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description_format.py create mode 100644 flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_source_code.py create mode 100644 flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description.py create mode 100644 flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description_entity.py create mode 100644 flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description_entity_list.py create mode 100644 flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description_format.py create mode 100644 flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_source_code.py create mode 100644 flyteidl/protos/flyteidl/admin/description_entity.proto diff --git a/flyteidl/clients/go/admin/authtype_enumer.go b/flyteidl/clients/go/admin/authtype_enumer.go index d09a85ac6f9..33a816637e9 100644 --- a/flyteidl/clients/go/admin/authtype_enumer.go +++ b/flyteidl/clients/go/admin/authtype_enumer.go @@ -1,6 +1,5 @@ // Code generated by "enumer --type=AuthType -json -yaml -trimprefix=AuthType"; DO NOT EDIT. -// package admin import ( diff --git a/flyteidl/clients/go/admin/mocks/AdminServiceClient.go b/flyteidl/clients/go/admin/mocks/AdminServiceClient.go index d63a1bf3d27..3858c5a6966 100644 --- a/flyteidl/clients/go/admin/mocks/AdminServiceClient.go +++ b/flyteidl/clients/go/admin/mocks/AdminServiceClient.go @@ -545,6 +545,54 @@ func (_m *AdminServiceClient) GetActiveLaunchPlan(ctx context.Context, in *admin return r0, r1 } +type AdminServiceClient_GetDescriptionEntity struct { + *mock.Call +} + +func (_m AdminServiceClient_GetDescriptionEntity) Return(_a0 *admin.DescriptionEntity, _a1 error) *AdminServiceClient_GetDescriptionEntity { + return &AdminServiceClient_GetDescriptionEntity{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AdminServiceClient) OnGetDescriptionEntity(ctx context.Context, in *admin.ObjectGetRequest, opts ...grpc.CallOption) *AdminServiceClient_GetDescriptionEntity { + c_call := _m.On("GetDescriptionEntity", ctx, in, opts) + return &AdminServiceClient_GetDescriptionEntity{Call: c_call} +} + +func (_m *AdminServiceClient) OnGetDescriptionEntityMatch(matchers ...interface{}) *AdminServiceClient_GetDescriptionEntity { + c_call := _m.On("GetDescriptionEntity", matchers...) + return &AdminServiceClient_GetDescriptionEntity{Call: c_call} +} + +// GetDescriptionEntity provides a mock function with given fields: ctx, in, opts +func (_m *AdminServiceClient) GetDescriptionEntity(ctx context.Context, in *admin.ObjectGetRequest, opts ...grpc.CallOption) (*admin.DescriptionEntity, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *admin.DescriptionEntity + if rf, ok := ret.Get(0).(func(context.Context, *admin.ObjectGetRequest, ...grpc.CallOption) *admin.DescriptionEntity); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.DescriptionEntity) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *admin.ObjectGetRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + type AdminServiceClient_GetExecution struct { *mock.Call } @@ -1265,6 +1313,54 @@ func (_m *AdminServiceClient) ListActiveLaunchPlans(ctx context.Context, in *adm return r0, r1 } +type AdminServiceClient_ListDescriptionEntities struct { + *mock.Call +} + +func (_m AdminServiceClient_ListDescriptionEntities) Return(_a0 *admin.DescriptionEntityList, _a1 error) *AdminServiceClient_ListDescriptionEntities { + return &AdminServiceClient_ListDescriptionEntities{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AdminServiceClient) OnListDescriptionEntities(ctx context.Context, in *admin.DescriptionEntityListRequest, opts ...grpc.CallOption) *AdminServiceClient_ListDescriptionEntities { + c_call := _m.On("ListDescriptionEntities", ctx, in, opts) + return &AdminServiceClient_ListDescriptionEntities{Call: c_call} +} + +func (_m *AdminServiceClient) OnListDescriptionEntitiesMatch(matchers ...interface{}) *AdminServiceClient_ListDescriptionEntities { + c_call := _m.On("ListDescriptionEntities", matchers...) + return &AdminServiceClient_ListDescriptionEntities{Call: c_call} +} + +// ListDescriptionEntities provides a mock function with given fields: ctx, in, opts +func (_m *AdminServiceClient) ListDescriptionEntities(ctx context.Context, in *admin.DescriptionEntityListRequest, opts ...grpc.CallOption) (*admin.DescriptionEntityList, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *admin.DescriptionEntityList + if rf, ok := ret.Get(0).(func(context.Context, *admin.DescriptionEntityListRequest, ...grpc.CallOption) *admin.DescriptionEntityList); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.DescriptionEntityList) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *admin.DescriptionEntityListRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + type AdminServiceClient_ListExecutions struct { *mock.Call } diff --git a/flyteidl/clients/go/admin/mocks/AdminServiceServer.go b/flyteidl/clients/go/admin/mocks/AdminServiceServer.go index ba57644391f..67bc3837809 100644 --- a/flyteidl/clients/go/admin/mocks/AdminServiceServer.go +++ b/flyteidl/clients/go/admin/mocks/AdminServiceServer.go @@ -466,6 +466,47 @@ func (_m *AdminServiceServer) GetActiveLaunchPlan(_a0 context.Context, _a1 *admi return r0, r1 } +type AdminServiceServer_GetDescriptionEntity struct { + *mock.Call +} + +func (_m AdminServiceServer_GetDescriptionEntity) Return(_a0 *admin.DescriptionEntity, _a1 error) *AdminServiceServer_GetDescriptionEntity { + return &AdminServiceServer_GetDescriptionEntity{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AdminServiceServer) OnGetDescriptionEntity(_a0 context.Context, _a1 *admin.ObjectGetRequest) *AdminServiceServer_GetDescriptionEntity { + c_call := _m.On("GetDescriptionEntity", _a0, _a1) + return &AdminServiceServer_GetDescriptionEntity{Call: c_call} +} + +func (_m *AdminServiceServer) OnGetDescriptionEntityMatch(matchers ...interface{}) *AdminServiceServer_GetDescriptionEntity { + c_call := _m.On("GetDescriptionEntity", matchers...) + return &AdminServiceServer_GetDescriptionEntity{Call: c_call} +} + +// GetDescriptionEntity provides a mock function with given fields: _a0, _a1 +func (_m *AdminServiceServer) GetDescriptionEntity(_a0 context.Context, _a1 *admin.ObjectGetRequest) (*admin.DescriptionEntity, error) { + ret := _m.Called(_a0, _a1) + + var r0 *admin.DescriptionEntity + if rf, ok := ret.Get(0).(func(context.Context, *admin.ObjectGetRequest) *admin.DescriptionEntity); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.DescriptionEntity) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *admin.ObjectGetRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + type AdminServiceServer_GetExecution struct { *mock.Call } @@ -1081,6 +1122,47 @@ func (_m *AdminServiceServer) ListActiveLaunchPlans(_a0 context.Context, _a1 *ad return r0, r1 } +type AdminServiceServer_ListDescriptionEntities struct { + *mock.Call +} + +func (_m AdminServiceServer_ListDescriptionEntities) Return(_a0 *admin.DescriptionEntityList, _a1 error) *AdminServiceServer_ListDescriptionEntities { + return &AdminServiceServer_ListDescriptionEntities{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AdminServiceServer) OnListDescriptionEntities(_a0 context.Context, _a1 *admin.DescriptionEntityListRequest) *AdminServiceServer_ListDescriptionEntities { + c_call := _m.On("ListDescriptionEntities", _a0, _a1) + return &AdminServiceServer_ListDescriptionEntities{Call: c_call} +} + +func (_m *AdminServiceServer) OnListDescriptionEntitiesMatch(matchers ...interface{}) *AdminServiceServer_ListDescriptionEntities { + c_call := _m.On("ListDescriptionEntities", matchers...) + return &AdminServiceServer_ListDescriptionEntities{Call: c_call} +} + +// ListDescriptionEntities provides a mock function with given fields: _a0, _a1 +func (_m *AdminServiceServer) ListDescriptionEntities(_a0 context.Context, _a1 *admin.DescriptionEntityListRequest) (*admin.DescriptionEntityList, error) { + ret := _m.Called(_a0, _a1) + + var r0 *admin.DescriptionEntityList + if rf, ok := ret.Get(0).(func(context.Context, *admin.DescriptionEntityListRequest) *admin.DescriptionEntityList); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.DescriptionEntityList) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *admin.DescriptionEntityListRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + type AdminServiceServer_ListExecutions struct { *mock.Call } diff --git a/flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.grpc.pb.cc b/flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.grpc.pb.cc new file mode 100644 index 00000000000..39709973578 --- /dev/null +++ b/flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.grpc.pb.cc @@ -0,0 +1,24 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: flyteidl/admin/description_entity.proto + +#include "flyteidl/admin/description_entity.pb.h" +#include "flyteidl/admin/description_entity.grpc.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace flyteidl { +namespace admin { + +} // namespace flyteidl +} // namespace admin + diff --git a/flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.grpc.pb.h b/flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.grpc.pb.h new file mode 100644 index 00000000000..0b4ebc8077f --- /dev/null +++ b/flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.grpc.pb.h @@ -0,0 +1,47 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: flyteidl/admin/description_entity.proto +#ifndef GRPC_flyteidl_2fadmin_2fdescription_5fentity_2eproto__INCLUDED +#define GRPC_flyteidl_2fadmin_2fdescription_5fentity_2eproto__INCLUDED + +#include "flyteidl/admin/description_entity.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace grpc_impl { +class Channel; +class CompletionQueue; +class ServerCompletionQueue; +} // namespace grpc_impl + +namespace grpc { +namespace experimental { +template +class MessageAllocator; +} // namespace experimental +} // namespace grpc_impl + +namespace grpc { +class ServerContext; +} // namespace grpc + +namespace flyteidl { +namespace admin { + +} // namespace admin +} // namespace flyteidl + + +#endif // GRPC_flyteidl_2fadmin_2fdescription_5fentity_2eproto__INCLUDED diff --git a/flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.pb.cc b/flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.pb.cc new file mode 100644 index 00000000000..5f2e78e8c72 --- /dev/null +++ b/flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.pb.cc @@ -0,0 +1,2658 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: flyteidl/admin/description_entity.proto + +#include "flyteidl/admin/description_entity.pb.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +// @@protoc_insertion_point(includes) +#include + +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_NamedEntityIdentifier_flyteidl_2fadmin_2fcommon_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Sort_flyteidl_2fadmin_2fcommon_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fdescription_5fentity_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Description_flyteidl_2fadmin_2fdescription_5fentity_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fdescription_5fentity_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_SourceCode_flyteidl_2fadmin_2fdescription_5fentity_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fdescription_5fentity_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_DescriptionEntity_flyteidl_2fadmin_2fdescription_5fentity_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fidentifier_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Identifier_flyteidl_2fcore_2fidentifier_2eproto; +namespace flyteidl { +namespace admin { +class DescriptionEntityDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _DescriptionEntity_default_instance_; +class DescriptionDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; + ::google::protobuf::internal::ArenaStringPtr value_; + ::google::protobuf::internal::ArenaStringPtr uri_; +} _Description_default_instance_; +class SourceCodeDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _SourceCode_default_instance_; +class DescriptionEntityListDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _DescriptionEntityList_default_instance_; +class DescriptionEntityListRequestDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _DescriptionEntityListRequest_default_instance_; +} // namespace admin +} // namespace flyteidl +static void InitDefaultsDescriptionEntity_flyteidl_2fadmin_2fdescription_5fentity_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::admin::_DescriptionEntity_default_instance_; + new (ptr) ::flyteidl::admin::DescriptionEntity(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::admin::DescriptionEntity::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<3> scc_info_DescriptionEntity_flyteidl_2fadmin_2fdescription_5fentity_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsDescriptionEntity_flyteidl_2fadmin_2fdescription_5fentity_2eproto}, { + &scc_info_Identifier_flyteidl_2fcore_2fidentifier_2eproto.base, + &scc_info_Description_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base, + &scc_info_SourceCode_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base,}}; + +static void InitDefaultsDescription_flyteidl_2fadmin_2fdescription_5fentity_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::admin::_Description_default_instance_; + new (ptr) ::flyteidl::admin::Description(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::admin::Description::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<0> scc_info_Description_flyteidl_2fadmin_2fdescription_5fentity_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsDescription_flyteidl_2fadmin_2fdescription_5fentity_2eproto}, {}}; + +static void InitDefaultsSourceCode_flyteidl_2fadmin_2fdescription_5fentity_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::admin::_SourceCode_default_instance_; + new (ptr) ::flyteidl::admin::SourceCode(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::admin::SourceCode::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<0> scc_info_SourceCode_flyteidl_2fadmin_2fdescription_5fentity_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsSourceCode_flyteidl_2fadmin_2fdescription_5fentity_2eproto}, {}}; + +static void InitDefaultsDescriptionEntityList_flyteidl_2fadmin_2fdescription_5fentity_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::admin::_DescriptionEntityList_default_instance_; + new (ptr) ::flyteidl::admin::DescriptionEntityList(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::admin::DescriptionEntityList::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<1> scc_info_DescriptionEntityList_flyteidl_2fadmin_2fdescription_5fentity_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsDescriptionEntityList_flyteidl_2fadmin_2fdescription_5fentity_2eproto}, { + &scc_info_DescriptionEntity_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base,}}; + +static void InitDefaultsDescriptionEntityListRequest_flyteidl_2fadmin_2fdescription_5fentity_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::admin::_DescriptionEntityListRequest_default_instance_; + new (ptr) ::flyteidl::admin::DescriptionEntityListRequest(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::admin::DescriptionEntityListRequest::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<2> scc_info_DescriptionEntityListRequest_flyteidl_2fadmin_2fdescription_5fentity_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsDescriptionEntityListRequest_flyteidl_2fadmin_2fdescription_5fentity_2eproto}, { + &scc_info_NamedEntityIdentifier_flyteidl_2fadmin_2fcommon_2eproto.base, + &scc_info_Sort_flyteidl_2fadmin_2fcommon_2eproto.base,}}; + +void InitDefaults_flyteidl_2fadmin_2fdescription_5fentity_2eproto() { + ::google::protobuf::internal::InitSCC(&scc_info_DescriptionEntity_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_Description_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_SourceCode_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_DescriptionEntityList_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_DescriptionEntityListRequest_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); +} + +::google::protobuf::Metadata file_level_metadata_flyteidl_2fadmin_2fdescription_5fentity_2eproto[5]; +const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_flyteidl_2fadmin_2fdescription_5fentity_2eproto[1]; +constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_flyteidl_2fadmin_2fdescription_5fentity_2eproto = nullptr; + +const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fdescription_5fentity_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntity, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntity, id_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntity, short_description_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntity, long_description_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntity, source_code_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntity, tags_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Description, _internal_metadata_), + ~0u, // no _extensions_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Description, _oneof_case_[0]), + ~0u, // no _weak_field_map_ + offsetof(::flyteidl::admin::DescriptionDefaultTypeInternal, value_), + offsetof(::flyteidl::admin::DescriptionDefaultTypeInternal, uri_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Description, format_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Description, icon_link_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Description, content_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::SourceCode, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::SourceCode, link_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntityList, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntityList, descriptionentities_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntityList, token_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntityListRequest, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntityListRequest, resource_type_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntityListRequest, id_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntityListRequest, limit_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntityListRequest, token_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntityListRequest, filters_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::DescriptionEntityListRequest, sort_by_), +}; +static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { + { 0, -1, sizeof(::flyteidl::admin::DescriptionEntity)}, + { 10, -1, sizeof(::flyteidl::admin::Description)}, + { 20, -1, sizeof(::flyteidl::admin::SourceCode)}, + { 26, -1, sizeof(::flyteidl::admin::DescriptionEntityList)}, + { 33, -1, sizeof(::flyteidl::admin::DescriptionEntityListRequest)}, +}; + +static ::google::protobuf::Message const * const file_default_instances[] = { + reinterpret_cast(&::flyteidl::admin::_DescriptionEntity_default_instance_), + reinterpret_cast(&::flyteidl::admin::_Description_default_instance_), + reinterpret_cast(&::flyteidl::admin::_SourceCode_default_instance_), + reinterpret_cast(&::flyteidl::admin::_DescriptionEntityList_default_instance_), + reinterpret_cast(&::flyteidl::admin::_DescriptionEntityListRequest_default_instance_), +}; + +::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_flyteidl_2fadmin_2fdescription_5fentity_2eproto = { + {}, AddDescriptors_flyteidl_2fadmin_2fdescription_5fentity_2eproto, "flyteidl/admin/description_entity.proto", schemas, + file_default_instances, TableStruct_flyteidl_2fadmin_2fdescription_5fentity_2eproto::offsets, + file_level_metadata_flyteidl_2fadmin_2fdescription_5fentity_2eproto, 5, file_level_enum_descriptors_flyteidl_2fadmin_2fdescription_5fentity_2eproto, file_level_service_descriptors_flyteidl_2fadmin_2fdescription_5fentity_2eproto, +}; + +const char descriptor_table_protodef_flyteidl_2fadmin_2fdescription_5fentity_2eproto[] = + "\n\'flyteidl/admin/description_entity.prot" + "o\022\016flyteidl.admin\032\036flyteidl/core/identif" + "ier.proto\032\033flyteidl/admin/common.proto\"\313" + "\001\n\021DescriptionEntity\022%\n\002id\030\001 \001(\0132\031.flyte" + "idl.core.Identifier\022\031\n\021short_description" + "\030\002 \001(\t\0225\n\020long_description\030\003 \001(\0132\033.flyte" + "idl.admin.Description\022/\n\013source_code\030\004 \001" + "(\0132\032.flyteidl.admin.SourceCode\022\014\n\004tags\030\005" + " \003(\t\"~\n\013Description\022\017\n\005value\030\001 \001(\tH\000\022\r\n\003" + "uri\030\002 \001(\tH\000\0221\n\006format\030\003 \001(\0162!.flyteidl.a" + "dmin.DescriptionFormat\022\021\n\ticon_link\030\004 \001(" + "\tB\t\n\007content\"\032\n\nSourceCode\022\014\n\004link\030\001 \001(\t" + "\"f\n\025DescriptionEntityList\022>\n\023description" + "Entities\030\001 \003(\0132!.flyteidl.admin.Descript" + "ionEntity\022\r\n\005token\030\002 \001(\t\"\333\001\n\034Description" + "EntityListRequest\0222\n\rresource_type\030\001 \001(\016" + "2\033.flyteidl.core.ResourceType\0221\n\002id\030\002 \001(" + "\0132%.flyteidl.admin.NamedEntityIdentifier" + "\022\r\n\005limit\030\003 \001(\r\022\r\n\005token\030\004 \001(\t\022\017\n\007filter" + "s\030\005 \001(\t\022%\n\007sort_by\030\006 \001(\0132\024.flyteidl.admi" + "n.Sort*\215\001\n\021DescriptionFormat\022\036\n\032DESCRIPT" + "ION_FORMAT_UNKNOWN\020\000\022\037\n\033DESCRIPTION_FORM" + "AT_MARKDOWN\020\001\022\033\n\027DESCRIPTION_FORMAT_HTML" + "\020\002\022\032\n\026DESCRIPTION_FORMAT_RST\020\003B7Z5github" + ".com/flyteorg/flyteidl/gen/pb-go/flyteid" + "l/adminb\006proto3" + ; +::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2fdescription_5fentity_2eproto = { + false, InitDefaults_flyteidl_2fadmin_2fdescription_5fentity_2eproto, + descriptor_table_protodef_flyteidl_2fadmin_2fdescription_5fentity_2eproto, + "flyteidl/admin/description_entity.proto", &assign_descriptors_table_flyteidl_2fadmin_2fdescription_5fentity_2eproto, 1015, +}; + +void AddDescriptors_flyteidl_2fadmin_2fdescription_5fentity_2eproto() { + static constexpr ::google::protobuf::internal::InitFunc deps[2] = + { + ::AddDescriptors_flyteidl_2fcore_2fidentifier_2eproto, + ::AddDescriptors_flyteidl_2fadmin_2fcommon_2eproto, + }; + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2fdescription_5fentity_2eproto, deps, 2); +} + +// Force running AddDescriptors() at dynamic initialization time. +static bool dynamic_init_dummy_flyteidl_2fadmin_2fdescription_5fentity_2eproto = []() { AddDescriptors_flyteidl_2fadmin_2fdescription_5fentity_2eproto(); return true; }(); +namespace flyteidl { +namespace admin { +const ::google::protobuf::EnumDescriptor* DescriptionFormat_descriptor() { + ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_flyteidl_2fadmin_2fdescription_5fentity_2eproto); + return file_level_enum_descriptors_flyteidl_2fadmin_2fdescription_5fentity_2eproto[0]; +} +bool DescriptionFormat_IsValid(int value) { + switch (value) { + case 0: + case 1: + case 2: + case 3: + return true; + default: + return false; + } +} + + +// =================================================================== + +void DescriptionEntity::InitAsDefaultInstance() { + ::flyteidl::admin::_DescriptionEntity_default_instance_._instance.get_mutable()->id_ = const_cast< ::flyteidl::core::Identifier*>( + ::flyteidl::core::Identifier::internal_default_instance()); + ::flyteidl::admin::_DescriptionEntity_default_instance_._instance.get_mutable()->long_description_ = const_cast< ::flyteidl::admin::Description*>( + ::flyteidl::admin::Description::internal_default_instance()); + ::flyteidl::admin::_DescriptionEntity_default_instance_._instance.get_mutable()->source_code_ = const_cast< ::flyteidl::admin::SourceCode*>( + ::flyteidl::admin::SourceCode::internal_default_instance()); +} +class DescriptionEntity::HasBitSetters { + public: + static const ::flyteidl::core::Identifier& id(const DescriptionEntity* msg); + static const ::flyteidl::admin::Description& long_description(const DescriptionEntity* msg); + static const ::flyteidl::admin::SourceCode& source_code(const DescriptionEntity* msg); +}; + +const ::flyteidl::core::Identifier& +DescriptionEntity::HasBitSetters::id(const DescriptionEntity* msg) { + return *msg->id_; +} +const ::flyteidl::admin::Description& +DescriptionEntity::HasBitSetters::long_description(const DescriptionEntity* msg) { + return *msg->long_description_; +} +const ::flyteidl::admin::SourceCode& +DescriptionEntity::HasBitSetters::source_code(const DescriptionEntity* msg) { + return *msg->source_code_; +} +void DescriptionEntity::clear_id() { + if (GetArenaNoVirtual() == nullptr && id_ != nullptr) { + delete id_; + } + id_ = nullptr; +} +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int DescriptionEntity::kIdFieldNumber; +const int DescriptionEntity::kShortDescriptionFieldNumber; +const int DescriptionEntity::kLongDescriptionFieldNumber; +const int DescriptionEntity::kSourceCodeFieldNumber; +const int DescriptionEntity::kTagsFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +DescriptionEntity::DescriptionEntity() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.admin.DescriptionEntity) +} +DescriptionEntity::DescriptionEntity(const DescriptionEntity& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr), + tags_(from.tags_) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + short_description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.short_description().size() > 0) { + short_description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.short_description_); + } + if (from.has_id()) { + id_ = new ::flyteidl::core::Identifier(*from.id_); + } else { + id_ = nullptr; + } + if (from.has_long_description()) { + long_description_ = new ::flyteidl::admin::Description(*from.long_description_); + } else { + long_description_ = nullptr; + } + if (from.has_source_code()) { + source_code_ = new ::flyteidl::admin::SourceCode(*from.source_code_); + } else { + source_code_ = nullptr; + } + // @@protoc_insertion_point(copy_constructor:flyteidl.admin.DescriptionEntity) +} + +void DescriptionEntity::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_DescriptionEntity_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + short_description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + ::memset(&id_, 0, static_cast( + reinterpret_cast(&source_code_) - + reinterpret_cast(&id_)) + sizeof(source_code_)); +} + +DescriptionEntity::~DescriptionEntity() { + // @@protoc_insertion_point(destructor:flyteidl.admin.DescriptionEntity) + SharedDtor(); +} + +void DescriptionEntity::SharedDtor() { + short_description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (this != internal_default_instance()) delete id_; + if (this != internal_default_instance()) delete long_description_; + if (this != internal_default_instance()) delete source_code_; +} + +void DescriptionEntity::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const DescriptionEntity& DescriptionEntity::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_DescriptionEntity_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + return *internal_default_instance(); +} + + +void DescriptionEntity::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.admin.DescriptionEntity) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + tags_.Clear(); + short_description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (GetArenaNoVirtual() == nullptr && id_ != nullptr) { + delete id_; + } + id_ = nullptr; + if (GetArenaNoVirtual() == nullptr && long_description_ != nullptr) { + delete long_description_; + } + long_description_ = nullptr; + if (GetArenaNoVirtual() == nullptr && source_code_ != nullptr) { + delete source_code_; + } + source_code_ = nullptr; + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* DescriptionEntity::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // .flyteidl.core.Identifier id = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::core::Identifier::_InternalParse; + object = msg->mutable_id(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + // string short_description = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.DescriptionEntity.short_description"); + object = msg->mutable_short_description(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // .flyteidl.admin.Description long_description = 3; + case 3: { + if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::admin::Description::_InternalParse; + object = msg->mutable_long_description(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + // .flyteidl.admin.SourceCode source_code = 4; + case 4: { + if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::admin::SourceCode::_InternalParse; + object = msg->mutable_source_code(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + // repeated string tags = 5; + case 5: { + if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual; + do { + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.DescriptionEntity.tags"); + object = msg->add_tags(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + if (ptr >= end) break; + } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 42 && (ptr += 1)); + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool DescriptionEntity::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.admin.DescriptionEntity) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // .flyteidl.core.Identifier id = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_id())); + } else { + goto handle_unusual; + } + break; + } + + // string short_description = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_short_description())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->short_description().data(), static_cast(this->short_description().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.DescriptionEntity.short_description")); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.admin.Description long_description = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_long_description())); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.admin.SourceCode source_code = 4; + case 4: { + if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_source_code())); + } else { + goto handle_unusual; + } + break; + } + + // repeated string tags = 5; + case 5: { + if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->add_tags())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tags(this->tags_size() - 1).data(), + static_cast(this->tags(this->tags_size() - 1).length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.DescriptionEntity.tags")); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.admin.DescriptionEntity) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.admin.DescriptionEntity) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void DescriptionEntity::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.admin.DescriptionEntity) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.Identifier id = 1; + if (this->has_id()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 1, HasBitSetters::id(this), output); + } + + // string short_description = 2; + if (this->short_description().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->short_description().data(), static_cast(this->short_description().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.DescriptionEntity.short_description"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 2, this->short_description(), output); + } + + // .flyteidl.admin.Description long_description = 3; + if (this->has_long_description()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 3, HasBitSetters::long_description(this), output); + } + + // .flyteidl.admin.SourceCode source_code = 4; + if (this->has_source_code()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 4, HasBitSetters::source_code(this), output); + } + + // repeated string tags = 5; + for (int i = 0, n = this->tags_size(); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tags(i).data(), static_cast(this->tags(i).length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.DescriptionEntity.tags"); + ::google::protobuf::internal::WireFormatLite::WriteString( + 5, this->tags(i), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.admin.DescriptionEntity) +} + +::google::protobuf::uint8* DescriptionEntity::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.admin.DescriptionEntity) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.Identifier id = 1; + if (this->has_id()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 1, HasBitSetters::id(this), target); + } + + // string short_description = 2; + if (this->short_description().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->short_description().data(), static_cast(this->short_description().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.DescriptionEntity.short_description"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 2, this->short_description(), target); + } + + // .flyteidl.admin.Description long_description = 3; + if (this->has_long_description()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 3, HasBitSetters::long_description(this), target); + } + + // .flyteidl.admin.SourceCode source_code = 4; + if (this->has_source_code()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 4, HasBitSetters::source_code(this), target); + } + + // repeated string tags = 5; + for (int i = 0, n = this->tags_size(); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tags(i).data(), static_cast(this->tags(i).length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.DescriptionEntity.tags"); + target = ::google::protobuf::internal::WireFormatLite:: + WriteStringToArray(5, this->tags(i), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.admin.DescriptionEntity) + return target; +} + +size_t DescriptionEntity::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.admin.DescriptionEntity) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // repeated string tags = 5; + total_size += 1 * + ::google::protobuf::internal::FromIntSize(this->tags_size()); + for (int i = 0, n = this->tags_size(); i < n; i++) { + total_size += ::google::protobuf::internal::WireFormatLite::StringSize( + this->tags(i)); + } + + // string short_description = 2; + if (this->short_description().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->short_description()); + } + + // .flyteidl.core.Identifier id = 1; + if (this->has_id()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *id_); + } + + // .flyteidl.admin.Description long_description = 3; + if (this->has_long_description()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *long_description_); + } + + // .flyteidl.admin.SourceCode source_code = 4; + if (this->has_source_code()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *source_code_); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void DescriptionEntity::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.admin.DescriptionEntity) + GOOGLE_DCHECK_NE(&from, this); + const DescriptionEntity* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.admin.DescriptionEntity) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.admin.DescriptionEntity) + MergeFrom(*source); + } +} + +void DescriptionEntity::MergeFrom(const DescriptionEntity& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.admin.DescriptionEntity) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + tags_.MergeFrom(from.tags_); + if (from.short_description().size() > 0) { + + short_description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.short_description_); + } + if (from.has_id()) { + mutable_id()->::flyteidl::core::Identifier::MergeFrom(from.id()); + } + if (from.has_long_description()) { + mutable_long_description()->::flyteidl::admin::Description::MergeFrom(from.long_description()); + } + if (from.has_source_code()) { + mutable_source_code()->::flyteidl::admin::SourceCode::MergeFrom(from.source_code()); + } +} + +void DescriptionEntity::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.admin.DescriptionEntity) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void DescriptionEntity::CopyFrom(const DescriptionEntity& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.admin.DescriptionEntity) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool DescriptionEntity::IsInitialized() const { + return true; +} + +void DescriptionEntity::Swap(DescriptionEntity* other) { + if (other == this) return; + InternalSwap(other); +} +void DescriptionEntity::InternalSwap(DescriptionEntity* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + tags_.InternalSwap(CastToBase(&other->tags_)); + short_description_.Swap(&other->short_description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + swap(id_, other->id_); + swap(long_description_, other->long_description_); + swap(source_code_, other->source_code_); +} + +::google::protobuf::Metadata DescriptionEntity::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fadmin_2fdescription_5fentity_2eproto); + return ::file_level_metadata_flyteidl_2fadmin_2fdescription_5fentity_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void Description::InitAsDefaultInstance() { + ::flyteidl::admin::_Description_default_instance_.value_.UnsafeSetDefault( + &::google::protobuf::internal::GetEmptyStringAlreadyInited()); + ::flyteidl::admin::_Description_default_instance_.uri_.UnsafeSetDefault( + &::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +class Description::HasBitSetters { + public: +}; + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int Description::kValueFieldNumber; +const int Description::kUriFieldNumber; +const int Description::kFormatFieldNumber; +const int Description::kIconLinkFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +Description::Description() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.admin.Description) +} +Description::Description(const Description& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + icon_link_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.icon_link().size() > 0) { + icon_link_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.icon_link_); + } + format_ = from.format_; + clear_has_content(); + switch (from.content_case()) { + case kValue: { + set_value(from.value()); + break; + } + case kUri: { + set_uri(from.uri()); + break; + } + case CONTENT_NOT_SET: { + break; + } + } + // @@protoc_insertion_point(copy_constructor:flyteidl.admin.Description) +} + +void Description::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_Description_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + icon_link_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + format_ = 0; + clear_has_content(); +} + +Description::~Description() { + // @@protoc_insertion_point(destructor:flyteidl.admin.Description) + SharedDtor(); +} + +void Description::SharedDtor() { + icon_link_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (has_content()) { + clear_content(); + } +} + +void Description::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const Description& Description::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_Description_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + return *internal_default_instance(); +} + + +void Description::clear_content() { +// @@protoc_insertion_point(one_of_clear_start:flyteidl.admin.Description) + switch (content_case()) { + case kValue: { + content_.value_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + break; + } + case kUri: { + content_.uri_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + break; + } + case CONTENT_NOT_SET: { + break; + } + } + _oneof_case_[0] = CONTENT_NOT_SET; +} + + +void Description::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.admin.Description) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + icon_link_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + format_ = 0; + clear_content(); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* Description::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // string value = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.Description.value"); + object = msg->mutable_value(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // string uri = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.Description.uri"); + object = msg->mutable_uri(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // .flyteidl.admin.DescriptionFormat format = 3; + case 3: { + if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual; + ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr); + msg->set_format(static_cast<::flyteidl::admin::DescriptionFormat>(val)); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + break; + } + // string icon_link = 4; + case 4: { + if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.Description.icon_link"); + object = msg->mutable_icon_link(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool Description::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.admin.Description) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // string value = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_value())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->value().data(), static_cast(this->value().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.Description.value")); + } else { + goto handle_unusual; + } + break; + } + + // string uri = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_uri())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->uri().data(), static_cast(this->uri().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.Description.uri")); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.admin.DescriptionFormat format = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) { + int value = 0; + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( + input, &value))); + set_format(static_cast< ::flyteidl::admin::DescriptionFormat >(value)); + } else { + goto handle_unusual; + } + break; + } + + // string icon_link = 4; + case 4: { + if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_icon_link())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->icon_link().data(), static_cast(this->icon_link().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.Description.icon_link")); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.admin.Description) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.admin.Description) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void Description::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.admin.Description) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string value = 1; + if (has_value()) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->value().data(), static_cast(this->value().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.Description.value"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 1, this->value(), output); + } + + // string uri = 2; + if (has_uri()) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->uri().data(), static_cast(this->uri().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.Description.uri"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 2, this->uri(), output); + } + + // .flyteidl.admin.DescriptionFormat format = 3; + if (this->format() != 0) { + ::google::protobuf::internal::WireFormatLite::WriteEnum( + 3, this->format(), output); + } + + // string icon_link = 4; + if (this->icon_link().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->icon_link().data(), static_cast(this->icon_link().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.Description.icon_link"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 4, this->icon_link(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.admin.Description) +} + +::google::protobuf::uint8* Description::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.admin.Description) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string value = 1; + if (has_value()) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->value().data(), static_cast(this->value().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.Description.value"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 1, this->value(), target); + } + + // string uri = 2; + if (has_uri()) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->uri().data(), static_cast(this->uri().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.Description.uri"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 2, this->uri(), target); + } + + // .flyteidl.admin.DescriptionFormat format = 3; + if (this->format() != 0) { + target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( + 3, this->format(), target); + } + + // string icon_link = 4; + if (this->icon_link().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->icon_link().data(), static_cast(this->icon_link().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.Description.icon_link"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 4, this->icon_link(), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.admin.Description) + return target; +} + +size_t Description::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.admin.Description) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // string icon_link = 4; + if (this->icon_link().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->icon_link()); + } + + // .flyteidl.admin.DescriptionFormat format = 3; + if (this->format() != 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::EnumSize(this->format()); + } + + switch (content_case()) { + // string value = 1; + case kValue: { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->value()); + break; + } + // string uri = 2; + case kUri: { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->uri()); + break; + } + case CONTENT_NOT_SET: { + break; + } + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void Description::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.admin.Description) + GOOGLE_DCHECK_NE(&from, this); + const Description* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.admin.Description) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.admin.Description) + MergeFrom(*source); + } +} + +void Description::MergeFrom(const Description& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.admin.Description) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.icon_link().size() > 0) { + + icon_link_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.icon_link_); + } + if (from.format() != 0) { + set_format(from.format()); + } + switch (from.content_case()) { + case kValue: { + set_value(from.value()); + break; + } + case kUri: { + set_uri(from.uri()); + break; + } + case CONTENT_NOT_SET: { + break; + } + } +} + +void Description::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.admin.Description) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void Description::CopyFrom(const Description& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.admin.Description) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool Description::IsInitialized() const { + return true; +} + +void Description::Swap(Description* other) { + if (other == this) return; + InternalSwap(other); +} +void Description::InternalSwap(Description* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + icon_link_.Swap(&other->icon_link_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + swap(format_, other->format_); + swap(content_, other->content_); + swap(_oneof_case_[0], other->_oneof_case_[0]); +} + +::google::protobuf::Metadata Description::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fadmin_2fdescription_5fentity_2eproto); + return ::file_level_metadata_flyteidl_2fadmin_2fdescription_5fentity_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void SourceCode::InitAsDefaultInstance() { +} +class SourceCode::HasBitSetters { + public: +}; + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int SourceCode::kLinkFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +SourceCode::SourceCode() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.admin.SourceCode) +} +SourceCode::SourceCode(const SourceCode& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + link_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.link().size() > 0) { + link_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.link_); + } + // @@protoc_insertion_point(copy_constructor:flyteidl.admin.SourceCode) +} + +void SourceCode::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_SourceCode_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + link_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +SourceCode::~SourceCode() { + // @@protoc_insertion_point(destructor:flyteidl.admin.SourceCode) + SharedDtor(); +} + +void SourceCode::SharedDtor() { + link_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +void SourceCode::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const SourceCode& SourceCode::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_SourceCode_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + return *internal_default_instance(); +} + + +void SourceCode::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.admin.SourceCode) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + link_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* SourceCode::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // string link = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.SourceCode.link"); + object = msg->mutable_link(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool SourceCode::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.admin.SourceCode) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // string link = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_link())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->link().data(), static_cast(this->link().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.SourceCode.link")); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.admin.SourceCode) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.admin.SourceCode) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void SourceCode::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.admin.SourceCode) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string link = 1; + if (this->link().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->link().data(), static_cast(this->link().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.SourceCode.link"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 1, this->link(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.admin.SourceCode) +} + +::google::protobuf::uint8* SourceCode::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.admin.SourceCode) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string link = 1; + if (this->link().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->link().data(), static_cast(this->link().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.SourceCode.link"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 1, this->link(), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.admin.SourceCode) + return target; +} + +size_t SourceCode::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.admin.SourceCode) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // string link = 1; + if (this->link().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->link()); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void SourceCode::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.admin.SourceCode) + GOOGLE_DCHECK_NE(&from, this); + const SourceCode* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.admin.SourceCode) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.admin.SourceCode) + MergeFrom(*source); + } +} + +void SourceCode::MergeFrom(const SourceCode& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.admin.SourceCode) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.link().size() > 0) { + + link_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.link_); + } +} + +void SourceCode::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.admin.SourceCode) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void SourceCode::CopyFrom(const SourceCode& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.admin.SourceCode) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool SourceCode::IsInitialized() const { + return true; +} + +void SourceCode::Swap(SourceCode* other) { + if (other == this) return; + InternalSwap(other); +} +void SourceCode::InternalSwap(SourceCode* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + link_.Swap(&other->link_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); +} + +::google::protobuf::Metadata SourceCode::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fadmin_2fdescription_5fentity_2eproto); + return ::file_level_metadata_flyteidl_2fadmin_2fdescription_5fentity_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void DescriptionEntityList::InitAsDefaultInstance() { +} +class DescriptionEntityList::HasBitSetters { + public: +}; + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int DescriptionEntityList::kDescriptionEntitiesFieldNumber; +const int DescriptionEntityList::kTokenFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +DescriptionEntityList::DescriptionEntityList() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.admin.DescriptionEntityList) +} +DescriptionEntityList::DescriptionEntityList(const DescriptionEntityList& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr), + descriptionentities_(from.descriptionentities_) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + token_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.token().size() > 0) { + token_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.token_); + } + // @@protoc_insertion_point(copy_constructor:flyteidl.admin.DescriptionEntityList) +} + +void DescriptionEntityList::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_DescriptionEntityList_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + token_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +DescriptionEntityList::~DescriptionEntityList() { + // @@protoc_insertion_point(destructor:flyteidl.admin.DescriptionEntityList) + SharedDtor(); +} + +void DescriptionEntityList::SharedDtor() { + token_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +void DescriptionEntityList::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const DescriptionEntityList& DescriptionEntityList::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_DescriptionEntityList_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + return *internal_default_instance(); +} + + +void DescriptionEntityList::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.admin.DescriptionEntityList) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + descriptionentities_.Clear(); + token_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* DescriptionEntityList::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + do { + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::admin::DescriptionEntity::_InternalParse; + object = msg->add_descriptionentities(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + if (ptr >= end) break; + } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1)); + break; + } + // string token = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.DescriptionEntityList.token"); + object = msg->mutable_token(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool DescriptionEntityList::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.admin.DescriptionEntityList) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, add_descriptionentities())); + } else { + goto handle_unusual; + } + break; + } + + // string token = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_token())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->token().data(), static_cast(this->token().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.DescriptionEntityList.token")); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.admin.DescriptionEntityList) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.admin.DescriptionEntityList) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void DescriptionEntityList::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.admin.DescriptionEntityList) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + for (unsigned int i = 0, + n = static_cast(this->descriptionentities_size()); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 1, + this->descriptionentities(static_cast(i)), + output); + } + + // string token = 2; + if (this->token().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->token().data(), static_cast(this->token().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.DescriptionEntityList.token"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 2, this->token(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.admin.DescriptionEntityList) +} + +::google::protobuf::uint8* DescriptionEntityList::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.admin.DescriptionEntityList) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + for (unsigned int i = 0, + n = static_cast(this->descriptionentities_size()); i < n; i++) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 1, this->descriptionentities(static_cast(i)), target); + } + + // string token = 2; + if (this->token().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->token().data(), static_cast(this->token().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.DescriptionEntityList.token"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 2, this->token(), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.admin.DescriptionEntityList) + return target; +} + +size_t DescriptionEntityList::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.admin.DescriptionEntityList) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + { + unsigned int count = static_cast(this->descriptionentities_size()); + total_size += 1UL * count; + for (unsigned int i = 0; i < count; i++) { + total_size += + ::google::protobuf::internal::WireFormatLite::MessageSize( + this->descriptionentities(static_cast(i))); + } + } + + // string token = 2; + if (this->token().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->token()); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void DescriptionEntityList::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.admin.DescriptionEntityList) + GOOGLE_DCHECK_NE(&from, this); + const DescriptionEntityList* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.admin.DescriptionEntityList) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.admin.DescriptionEntityList) + MergeFrom(*source); + } +} + +void DescriptionEntityList::MergeFrom(const DescriptionEntityList& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.admin.DescriptionEntityList) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + descriptionentities_.MergeFrom(from.descriptionentities_); + if (from.token().size() > 0) { + + token_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.token_); + } +} + +void DescriptionEntityList::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.admin.DescriptionEntityList) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void DescriptionEntityList::CopyFrom(const DescriptionEntityList& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.admin.DescriptionEntityList) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool DescriptionEntityList::IsInitialized() const { + return true; +} + +void DescriptionEntityList::Swap(DescriptionEntityList* other) { + if (other == this) return; + InternalSwap(other); +} +void DescriptionEntityList::InternalSwap(DescriptionEntityList* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + CastToBase(&descriptionentities_)->InternalSwap(CastToBase(&other->descriptionentities_)); + token_.Swap(&other->token_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); +} + +::google::protobuf::Metadata DescriptionEntityList::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fadmin_2fdescription_5fentity_2eproto); + return ::file_level_metadata_flyteidl_2fadmin_2fdescription_5fentity_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void DescriptionEntityListRequest::InitAsDefaultInstance() { + ::flyteidl::admin::_DescriptionEntityListRequest_default_instance_._instance.get_mutable()->id_ = const_cast< ::flyteidl::admin::NamedEntityIdentifier*>( + ::flyteidl::admin::NamedEntityIdentifier::internal_default_instance()); + ::flyteidl::admin::_DescriptionEntityListRequest_default_instance_._instance.get_mutable()->sort_by_ = const_cast< ::flyteidl::admin::Sort*>( + ::flyteidl::admin::Sort::internal_default_instance()); +} +class DescriptionEntityListRequest::HasBitSetters { + public: + static const ::flyteidl::admin::NamedEntityIdentifier& id(const DescriptionEntityListRequest* msg); + static const ::flyteidl::admin::Sort& sort_by(const DescriptionEntityListRequest* msg); +}; + +const ::flyteidl::admin::NamedEntityIdentifier& +DescriptionEntityListRequest::HasBitSetters::id(const DescriptionEntityListRequest* msg) { + return *msg->id_; +} +const ::flyteidl::admin::Sort& +DescriptionEntityListRequest::HasBitSetters::sort_by(const DescriptionEntityListRequest* msg) { + return *msg->sort_by_; +} +void DescriptionEntityListRequest::clear_id() { + if (GetArenaNoVirtual() == nullptr && id_ != nullptr) { + delete id_; + } + id_ = nullptr; +} +void DescriptionEntityListRequest::clear_sort_by() { + if (GetArenaNoVirtual() == nullptr && sort_by_ != nullptr) { + delete sort_by_; + } + sort_by_ = nullptr; +} +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int DescriptionEntityListRequest::kResourceTypeFieldNumber; +const int DescriptionEntityListRequest::kIdFieldNumber; +const int DescriptionEntityListRequest::kLimitFieldNumber; +const int DescriptionEntityListRequest::kTokenFieldNumber; +const int DescriptionEntityListRequest::kFiltersFieldNumber; +const int DescriptionEntityListRequest::kSortByFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +DescriptionEntityListRequest::DescriptionEntityListRequest() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.admin.DescriptionEntityListRequest) +} +DescriptionEntityListRequest::DescriptionEntityListRequest(const DescriptionEntityListRequest& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + token_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.token().size() > 0) { + token_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.token_); + } + filters_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.filters().size() > 0) { + filters_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.filters_); + } + if (from.has_id()) { + id_ = new ::flyteidl::admin::NamedEntityIdentifier(*from.id_); + } else { + id_ = nullptr; + } + if (from.has_sort_by()) { + sort_by_ = new ::flyteidl::admin::Sort(*from.sort_by_); + } else { + sort_by_ = nullptr; + } + ::memcpy(&resource_type_, &from.resource_type_, + static_cast(reinterpret_cast(&limit_) - + reinterpret_cast(&resource_type_)) + sizeof(limit_)); + // @@protoc_insertion_point(copy_constructor:flyteidl.admin.DescriptionEntityListRequest) +} + +void DescriptionEntityListRequest::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_DescriptionEntityListRequest_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + token_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + filters_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + ::memset(&id_, 0, static_cast( + reinterpret_cast(&limit_) - + reinterpret_cast(&id_)) + sizeof(limit_)); +} + +DescriptionEntityListRequest::~DescriptionEntityListRequest() { + // @@protoc_insertion_point(destructor:flyteidl.admin.DescriptionEntityListRequest) + SharedDtor(); +} + +void DescriptionEntityListRequest::SharedDtor() { + token_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + filters_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (this != internal_default_instance()) delete id_; + if (this != internal_default_instance()) delete sort_by_; +} + +void DescriptionEntityListRequest::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const DescriptionEntityListRequest& DescriptionEntityListRequest::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_DescriptionEntityListRequest_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base); + return *internal_default_instance(); +} + + +void DescriptionEntityListRequest::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.admin.DescriptionEntityListRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + token_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + filters_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (GetArenaNoVirtual() == nullptr && id_ != nullptr) { + delete id_; + } + id_ = nullptr; + if (GetArenaNoVirtual() == nullptr && sort_by_ != nullptr) { + delete sort_by_; + } + sort_by_ = nullptr; + ::memset(&resource_type_, 0, static_cast( + reinterpret_cast(&limit_) - + reinterpret_cast(&resource_type_)) + sizeof(limit_)); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* DescriptionEntityListRequest::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // .flyteidl.core.ResourceType resource_type = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual; + ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr); + msg->set_resource_type(static_cast<::flyteidl::core::ResourceType>(val)); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + break; + } + // .flyteidl.admin.NamedEntityIdentifier id = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::admin::NamedEntityIdentifier::_InternalParse; + object = msg->mutable_id(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + // uint32 limit = 3; + case 3: { + if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual; + msg->set_limit(::google::protobuf::internal::ReadVarint(&ptr)); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + break; + } + // string token = 4; + case 4: { + if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.DescriptionEntityListRequest.token"); + object = msg->mutable_token(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // string filters = 5; + case 5: { + if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.DescriptionEntityListRequest.filters"); + object = msg->mutable_filters(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // .flyteidl.admin.Sort sort_by = 6; + case 6: { + if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::admin::Sort::_InternalParse; + object = msg->mutable_sort_by(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool DescriptionEntityListRequest::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.admin.DescriptionEntityListRequest) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // .flyteidl.core.ResourceType resource_type = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) { + int value = 0; + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( + input, &value))); + set_resource_type(static_cast< ::flyteidl::core::ResourceType >(value)); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.admin.NamedEntityIdentifier id = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_id())); + } else { + goto handle_unusual; + } + break; + } + + // uint32 limit = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) { + + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( + input, &limit_))); + } else { + goto handle_unusual; + } + break; + } + + // string token = 4; + case 4: { + if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_token())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->token().data(), static_cast(this->token().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.DescriptionEntityListRequest.token")); + } else { + goto handle_unusual; + } + break; + } + + // string filters = 5; + case 5: { + if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_filters())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->filters().data(), static_cast(this->filters().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.DescriptionEntityListRequest.filters")); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.admin.Sort sort_by = 6; + case 6: { + if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_sort_by())); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.admin.DescriptionEntityListRequest) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.admin.DescriptionEntityListRequest) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void DescriptionEntityListRequest::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.admin.DescriptionEntityListRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.ResourceType resource_type = 1; + if (this->resource_type() != 0) { + ::google::protobuf::internal::WireFormatLite::WriteEnum( + 1, this->resource_type(), output); + } + + // .flyteidl.admin.NamedEntityIdentifier id = 2; + if (this->has_id()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 2, HasBitSetters::id(this), output); + } + + // uint32 limit = 3; + if (this->limit() != 0) { + ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->limit(), output); + } + + // string token = 4; + if (this->token().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->token().data(), static_cast(this->token().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.DescriptionEntityListRequest.token"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 4, this->token(), output); + } + + // string filters = 5; + if (this->filters().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->filters().data(), static_cast(this->filters().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.DescriptionEntityListRequest.filters"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 5, this->filters(), output); + } + + // .flyteidl.admin.Sort sort_by = 6; + if (this->has_sort_by()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 6, HasBitSetters::sort_by(this), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.admin.DescriptionEntityListRequest) +} + +::google::protobuf::uint8* DescriptionEntityListRequest::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.admin.DescriptionEntityListRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.ResourceType resource_type = 1; + if (this->resource_type() != 0) { + target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( + 1, this->resource_type(), target); + } + + // .flyteidl.admin.NamedEntityIdentifier id = 2; + if (this->has_id()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 2, HasBitSetters::id(this), target); + } + + // uint32 limit = 3; + if (this->limit() != 0) { + target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(3, this->limit(), target); + } + + // string token = 4; + if (this->token().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->token().data(), static_cast(this->token().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.DescriptionEntityListRequest.token"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 4, this->token(), target); + } + + // string filters = 5; + if (this->filters().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->filters().data(), static_cast(this->filters().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.DescriptionEntityListRequest.filters"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 5, this->filters(), target); + } + + // .flyteidl.admin.Sort sort_by = 6; + if (this->has_sort_by()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 6, HasBitSetters::sort_by(this), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.admin.DescriptionEntityListRequest) + return target; +} + +size_t DescriptionEntityListRequest::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.admin.DescriptionEntityListRequest) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // string token = 4; + if (this->token().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->token()); + } + + // string filters = 5; + if (this->filters().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->filters()); + } + + // .flyteidl.admin.NamedEntityIdentifier id = 2; + if (this->has_id()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *id_); + } + + // .flyteidl.admin.Sort sort_by = 6; + if (this->has_sort_by()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *sort_by_); + } + + // .flyteidl.core.ResourceType resource_type = 1; + if (this->resource_type() != 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::EnumSize(this->resource_type()); + } + + // uint32 limit = 3; + if (this->limit() != 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt32Size( + this->limit()); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void DescriptionEntityListRequest::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.admin.DescriptionEntityListRequest) + GOOGLE_DCHECK_NE(&from, this); + const DescriptionEntityListRequest* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.admin.DescriptionEntityListRequest) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.admin.DescriptionEntityListRequest) + MergeFrom(*source); + } +} + +void DescriptionEntityListRequest::MergeFrom(const DescriptionEntityListRequest& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.admin.DescriptionEntityListRequest) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.token().size() > 0) { + + token_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.token_); + } + if (from.filters().size() > 0) { + + filters_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.filters_); + } + if (from.has_id()) { + mutable_id()->::flyteidl::admin::NamedEntityIdentifier::MergeFrom(from.id()); + } + if (from.has_sort_by()) { + mutable_sort_by()->::flyteidl::admin::Sort::MergeFrom(from.sort_by()); + } + if (from.resource_type() != 0) { + set_resource_type(from.resource_type()); + } + if (from.limit() != 0) { + set_limit(from.limit()); + } +} + +void DescriptionEntityListRequest::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.admin.DescriptionEntityListRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void DescriptionEntityListRequest::CopyFrom(const DescriptionEntityListRequest& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.admin.DescriptionEntityListRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool DescriptionEntityListRequest::IsInitialized() const { + return true; +} + +void DescriptionEntityListRequest::Swap(DescriptionEntityListRequest* other) { + if (other == this) return; + InternalSwap(other); +} +void DescriptionEntityListRequest::InternalSwap(DescriptionEntityListRequest* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + token_.Swap(&other->token_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + filters_.Swap(&other->filters_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + swap(id_, other->id_); + swap(sort_by_, other->sort_by_); + swap(resource_type_, other->resource_type_); + swap(limit_, other->limit_); +} + +::google::protobuf::Metadata DescriptionEntityListRequest::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fadmin_2fdescription_5fentity_2eproto); + return ::file_level_metadata_flyteidl_2fadmin_2fdescription_5fentity_2eproto[kIndexInFileMessages]; +} + + +// @@protoc_insertion_point(namespace_scope) +} // namespace admin +} // namespace flyteidl +namespace google { +namespace protobuf { +template<> PROTOBUF_NOINLINE ::flyteidl::admin::DescriptionEntity* Arena::CreateMaybeMessage< ::flyteidl::admin::DescriptionEntity >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::admin::DescriptionEntity >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::admin::Description* Arena::CreateMaybeMessage< ::flyteidl::admin::Description >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::admin::Description >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::admin::SourceCode* Arena::CreateMaybeMessage< ::flyteidl::admin::SourceCode >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::admin::SourceCode >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::admin::DescriptionEntityList* Arena::CreateMaybeMessage< ::flyteidl::admin::DescriptionEntityList >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::admin::DescriptionEntityList >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::admin::DescriptionEntityListRequest* Arena::CreateMaybeMessage< ::flyteidl::admin::DescriptionEntityListRequest >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::admin::DescriptionEntityListRequest >(arena); +} +} // namespace protobuf +} // namespace google + +// @@protoc_insertion_point(global_scope) +#include diff --git a/flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.pb.h b/flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.pb.h new file mode 100644 index 00000000000..13eb991d54c --- /dev/null +++ b/flyteidl/gen/pb-cpp/flyteidl/admin/description_entity.pb.h @@ -0,0 +1,1832 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: flyteidl/admin/description_entity.proto + +#ifndef PROTOBUF_INCLUDED_flyteidl_2fadmin_2fdescription_5fentity_2eproto +#define PROTOBUF_INCLUDED_flyteidl_2fadmin_2fdescription_5fentity_2eproto + +#include +#include + +#include +#if PROTOBUF_VERSION < 3007000 +#error This file was generated by a newer version of protoc which is +#error incompatible with your Protocol Buffer headers. Please update +#error your headers. +#endif +#if 3007000 < PROTOBUF_MIN_PROTOC_VERSION +#error This file was generated by an older version of protoc which is +#error incompatible with your Protocol Buffer headers. Please +#error regenerate this file with a newer version of protoc. +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // IWYU pragma: export +#include // IWYU pragma: export +#include +#include +#include "flyteidl/core/identifier.pb.h" +#include "flyteidl/admin/common.pb.h" +// @@protoc_insertion_point(includes) +#include +#define PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fdescription_5fentity_2eproto + +// Internal implementation detail -- do not use these members. +struct TableStruct_flyteidl_2fadmin_2fdescription_5fentity_2eproto { + static const ::google::protobuf::internal::ParseTableField entries[] + PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::google::protobuf::internal::AuxillaryParseTableField aux[] + PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::google::protobuf::internal::ParseTable schema[5] + PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::google::protobuf::internal::FieldMetadata field_metadata[]; + static const ::google::protobuf::internal::SerializationTable serialization_table[]; + static const ::google::protobuf::uint32 offsets[]; +}; +void AddDescriptors_flyteidl_2fadmin_2fdescription_5fentity_2eproto(); +namespace flyteidl { +namespace admin { +class Description; +class DescriptionDefaultTypeInternal; +extern DescriptionDefaultTypeInternal _Description_default_instance_; +class DescriptionEntity; +class DescriptionEntityDefaultTypeInternal; +extern DescriptionEntityDefaultTypeInternal _DescriptionEntity_default_instance_; +class DescriptionEntityList; +class DescriptionEntityListDefaultTypeInternal; +extern DescriptionEntityListDefaultTypeInternal _DescriptionEntityList_default_instance_; +class DescriptionEntityListRequest; +class DescriptionEntityListRequestDefaultTypeInternal; +extern DescriptionEntityListRequestDefaultTypeInternal _DescriptionEntityListRequest_default_instance_; +class SourceCode; +class SourceCodeDefaultTypeInternal; +extern SourceCodeDefaultTypeInternal _SourceCode_default_instance_; +} // namespace admin +} // namespace flyteidl +namespace google { +namespace protobuf { +template<> ::flyteidl::admin::Description* Arena::CreateMaybeMessage<::flyteidl::admin::Description>(Arena*); +template<> ::flyteidl::admin::DescriptionEntity* Arena::CreateMaybeMessage<::flyteidl::admin::DescriptionEntity>(Arena*); +template<> ::flyteidl::admin::DescriptionEntityList* Arena::CreateMaybeMessage<::flyteidl::admin::DescriptionEntityList>(Arena*); +template<> ::flyteidl::admin::DescriptionEntityListRequest* Arena::CreateMaybeMessage<::flyteidl::admin::DescriptionEntityListRequest>(Arena*); +template<> ::flyteidl::admin::SourceCode* Arena::CreateMaybeMessage<::flyteidl::admin::SourceCode>(Arena*); +} // namespace protobuf +} // namespace google +namespace flyteidl { +namespace admin { + +enum DescriptionFormat { + DESCRIPTION_FORMAT_UNKNOWN = 0, + DESCRIPTION_FORMAT_MARKDOWN = 1, + DESCRIPTION_FORMAT_HTML = 2, + DESCRIPTION_FORMAT_RST = 3, + DescriptionFormat_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(), + DescriptionFormat_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max() +}; +bool DescriptionFormat_IsValid(int value); +const DescriptionFormat DescriptionFormat_MIN = DESCRIPTION_FORMAT_UNKNOWN; +const DescriptionFormat DescriptionFormat_MAX = DESCRIPTION_FORMAT_RST; +const int DescriptionFormat_ARRAYSIZE = DescriptionFormat_MAX + 1; + +const ::google::protobuf::EnumDescriptor* DescriptionFormat_descriptor(); +inline const ::std::string& DescriptionFormat_Name(DescriptionFormat value) { + return ::google::protobuf::internal::NameOfEnum( + DescriptionFormat_descriptor(), value); +} +inline bool DescriptionFormat_Parse( + const ::std::string& name, DescriptionFormat* value) { + return ::google::protobuf::internal::ParseNamedEnum( + DescriptionFormat_descriptor(), name, value); +} +// =================================================================== + +class DescriptionEntity final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.admin.DescriptionEntity) */ { + public: + DescriptionEntity(); + virtual ~DescriptionEntity(); + + DescriptionEntity(const DescriptionEntity& from); + + inline DescriptionEntity& operator=(const DescriptionEntity& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + DescriptionEntity(DescriptionEntity&& from) noexcept + : DescriptionEntity() { + *this = ::std::move(from); + } + + inline DescriptionEntity& operator=(DescriptionEntity&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const ::google::protobuf::Descriptor* descriptor() { + return default_instance().GetDescriptor(); + } + static const DescriptionEntity& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const DescriptionEntity* internal_default_instance() { + return reinterpret_cast( + &_DescriptionEntity_default_instance_); + } + static constexpr int kIndexInFileMessages = + 0; + + void Swap(DescriptionEntity* other); + friend void swap(DescriptionEntity& a, DescriptionEntity& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline DescriptionEntity* New() const final { + return CreateMaybeMessage(nullptr); + } + + DescriptionEntity* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const DescriptionEntity& from); + void MergeFrom(const DescriptionEntity& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx); + ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; } + #else + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DescriptionEntity* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // repeated string tags = 5; + int tags_size() const; + void clear_tags(); + static const int kTagsFieldNumber = 5; + const ::std::string& tags(int index) const; + ::std::string* mutable_tags(int index); + void set_tags(int index, const ::std::string& value); + #if LANG_CXX11 + void set_tags(int index, ::std::string&& value); + #endif + void set_tags(int index, const char* value); + void set_tags(int index, const char* value, size_t size); + ::std::string* add_tags(); + void add_tags(const ::std::string& value); + #if LANG_CXX11 + void add_tags(::std::string&& value); + #endif + void add_tags(const char* value); + void add_tags(const char* value, size_t size); + const ::google::protobuf::RepeatedPtrField<::std::string>& tags() const; + ::google::protobuf::RepeatedPtrField<::std::string>* mutable_tags(); + + // string short_description = 2; + void clear_short_description(); + static const int kShortDescriptionFieldNumber = 2; + const ::std::string& short_description() const; + void set_short_description(const ::std::string& value); + #if LANG_CXX11 + void set_short_description(::std::string&& value); + #endif + void set_short_description(const char* value); + void set_short_description(const char* value, size_t size); + ::std::string* mutable_short_description(); + ::std::string* release_short_description(); + void set_allocated_short_description(::std::string* short_description); + + // .flyteidl.core.Identifier id = 1; + bool has_id() const; + void clear_id(); + static const int kIdFieldNumber = 1; + const ::flyteidl::core::Identifier& id() const; + ::flyteidl::core::Identifier* release_id(); + ::flyteidl::core::Identifier* mutable_id(); + void set_allocated_id(::flyteidl::core::Identifier* id); + + // .flyteidl.admin.Description long_description = 3; + bool has_long_description() const; + void clear_long_description(); + static const int kLongDescriptionFieldNumber = 3; + const ::flyteidl::admin::Description& long_description() const; + ::flyteidl::admin::Description* release_long_description(); + ::flyteidl::admin::Description* mutable_long_description(); + void set_allocated_long_description(::flyteidl::admin::Description* long_description); + + // .flyteidl.admin.SourceCode source_code = 4; + bool has_source_code() const; + void clear_source_code(); + static const int kSourceCodeFieldNumber = 4; + const ::flyteidl::admin::SourceCode& source_code() const; + ::flyteidl::admin::SourceCode* release_source_code(); + ::flyteidl::admin::SourceCode* mutable_source_code(); + void set_allocated_source_code(::flyteidl::admin::SourceCode* source_code); + + // @@protoc_insertion_point(class_scope:flyteidl.admin.DescriptionEntity) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::RepeatedPtrField<::std::string> tags_; + ::google::protobuf::internal::ArenaStringPtr short_description_; + ::flyteidl::core::Identifier* id_; + ::flyteidl::admin::Description* long_description_; + ::flyteidl::admin::SourceCode* source_code_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fadmin_2fdescription_5fentity_2eproto; +}; +// ------------------------------------------------------------------- + +class Description final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.admin.Description) */ { + public: + Description(); + virtual ~Description(); + + Description(const Description& from); + + inline Description& operator=(const Description& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + Description(Description&& from) noexcept + : Description() { + *this = ::std::move(from); + } + + inline Description& operator=(Description&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const ::google::protobuf::Descriptor* descriptor() { + return default_instance().GetDescriptor(); + } + static const Description& default_instance(); + + enum ContentCase { + kValue = 1, + kUri = 2, + CONTENT_NOT_SET = 0, + }; + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const Description* internal_default_instance() { + return reinterpret_cast( + &_Description_default_instance_); + } + static constexpr int kIndexInFileMessages = + 1; + + void Swap(Description* other); + friend void swap(Description& a, Description& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline Description* New() const final { + return CreateMaybeMessage(nullptr); + } + + Description* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const Description& from); + void MergeFrom(const Description& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx); + ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; } + #else + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Description* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // string icon_link = 4; + void clear_icon_link(); + static const int kIconLinkFieldNumber = 4; + const ::std::string& icon_link() const; + void set_icon_link(const ::std::string& value); + #if LANG_CXX11 + void set_icon_link(::std::string&& value); + #endif + void set_icon_link(const char* value); + void set_icon_link(const char* value, size_t size); + ::std::string* mutable_icon_link(); + ::std::string* release_icon_link(); + void set_allocated_icon_link(::std::string* icon_link); + + // .flyteidl.admin.DescriptionFormat format = 3; + void clear_format(); + static const int kFormatFieldNumber = 3; + ::flyteidl::admin::DescriptionFormat format() const; + void set_format(::flyteidl::admin::DescriptionFormat value); + + // string value = 1; + private: + bool has_value() const; + public: + void clear_value(); + static const int kValueFieldNumber = 1; + const ::std::string& value() const; + void set_value(const ::std::string& value); + #if LANG_CXX11 + void set_value(::std::string&& value); + #endif + void set_value(const char* value); + void set_value(const char* value, size_t size); + ::std::string* mutable_value(); + ::std::string* release_value(); + void set_allocated_value(::std::string* value); + + // string uri = 2; + private: + bool has_uri() const; + public: + void clear_uri(); + static const int kUriFieldNumber = 2; + const ::std::string& uri() const; + void set_uri(const ::std::string& value); + #if LANG_CXX11 + void set_uri(::std::string&& value); + #endif + void set_uri(const char* value); + void set_uri(const char* value, size_t size); + ::std::string* mutable_uri(); + ::std::string* release_uri(); + void set_allocated_uri(::std::string* uri); + + void clear_content(); + ContentCase content_case() const; + // @@protoc_insertion_point(class_scope:flyteidl.admin.Description) + private: + class HasBitSetters; + void set_has_value(); + void set_has_uri(); + + inline bool has_content() const; + inline void clear_has_content(); + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr icon_link_; + int format_; + union ContentUnion { + ContentUnion() {} + ::google::protobuf::internal::ArenaStringPtr value_; + ::google::protobuf::internal::ArenaStringPtr uri_; + } content_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + ::google::protobuf::uint32 _oneof_case_[1]; + + friend struct ::TableStruct_flyteidl_2fadmin_2fdescription_5fentity_2eproto; +}; +// ------------------------------------------------------------------- + +class SourceCode final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.admin.SourceCode) */ { + public: + SourceCode(); + virtual ~SourceCode(); + + SourceCode(const SourceCode& from); + + inline SourceCode& operator=(const SourceCode& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + SourceCode(SourceCode&& from) noexcept + : SourceCode() { + *this = ::std::move(from); + } + + inline SourceCode& operator=(SourceCode&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const ::google::protobuf::Descriptor* descriptor() { + return default_instance().GetDescriptor(); + } + static const SourceCode& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const SourceCode* internal_default_instance() { + return reinterpret_cast( + &_SourceCode_default_instance_); + } + static constexpr int kIndexInFileMessages = + 2; + + void Swap(SourceCode* other); + friend void swap(SourceCode& a, SourceCode& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline SourceCode* New() const final { + return CreateMaybeMessage(nullptr); + } + + SourceCode* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const SourceCode& from); + void MergeFrom(const SourceCode& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx); + ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; } + #else + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(SourceCode* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // string link = 1; + void clear_link(); + static const int kLinkFieldNumber = 1; + const ::std::string& link() const; + void set_link(const ::std::string& value); + #if LANG_CXX11 + void set_link(::std::string&& value); + #endif + void set_link(const char* value); + void set_link(const char* value, size_t size); + ::std::string* mutable_link(); + ::std::string* release_link(); + void set_allocated_link(::std::string* link); + + // @@protoc_insertion_point(class_scope:flyteidl.admin.SourceCode) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr link_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fadmin_2fdescription_5fentity_2eproto; +}; +// ------------------------------------------------------------------- + +class DescriptionEntityList final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.admin.DescriptionEntityList) */ { + public: + DescriptionEntityList(); + virtual ~DescriptionEntityList(); + + DescriptionEntityList(const DescriptionEntityList& from); + + inline DescriptionEntityList& operator=(const DescriptionEntityList& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + DescriptionEntityList(DescriptionEntityList&& from) noexcept + : DescriptionEntityList() { + *this = ::std::move(from); + } + + inline DescriptionEntityList& operator=(DescriptionEntityList&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const ::google::protobuf::Descriptor* descriptor() { + return default_instance().GetDescriptor(); + } + static const DescriptionEntityList& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const DescriptionEntityList* internal_default_instance() { + return reinterpret_cast( + &_DescriptionEntityList_default_instance_); + } + static constexpr int kIndexInFileMessages = + 3; + + void Swap(DescriptionEntityList* other); + friend void swap(DescriptionEntityList& a, DescriptionEntityList& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline DescriptionEntityList* New() const final { + return CreateMaybeMessage(nullptr); + } + + DescriptionEntityList* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const DescriptionEntityList& from); + void MergeFrom(const DescriptionEntityList& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx); + ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; } + #else + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DescriptionEntityList* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + int descriptionentities_size() const; + void clear_descriptionentities(); + static const int kDescriptionEntitiesFieldNumber = 1; + ::flyteidl::admin::DescriptionEntity* mutable_descriptionentities(int index); + ::google::protobuf::RepeatedPtrField< ::flyteidl::admin::DescriptionEntity >* + mutable_descriptionentities(); + const ::flyteidl::admin::DescriptionEntity& descriptionentities(int index) const; + ::flyteidl::admin::DescriptionEntity* add_descriptionentities(); + const ::google::protobuf::RepeatedPtrField< ::flyteidl::admin::DescriptionEntity >& + descriptionentities() const; + + // string token = 2; + void clear_token(); + static const int kTokenFieldNumber = 2; + const ::std::string& token() const; + void set_token(const ::std::string& value); + #if LANG_CXX11 + void set_token(::std::string&& value); + #endif + void set_token(const char* value); + void set_token(const char* value, size_t size); + ::std::string* mutable_token(); + ::std::string* release_token(); + void set_allocated_token(::std::string* token); + + // @@protoc_insertion_point(class_scope:flyteidl.admin.DescriptionEntityList) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::RepeatedPtrField< ::flyteidl::admin::DescriptionEntity > descriptionentities_; + ::google::protobuf::internal::ArenaStringPtr token_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fadmin_2fdescription_5fentity_2eproto; +}; +// ------------------------------------------------------------------- + +class DescriptionEntityListRequest final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.admin.DescriptionEntityListRequest) */ { + public: + DescriptionEntityListRequest(); + virtual ~DescriptionEntityListRequest(); + + DescriptionEntityListRequest(const DescriptionEntityListRequest& from); + + inline DescriptionEntityListRequest& operator=(const DescriptionEntityListRequest& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + DescriptionEntityListRequest(DescriptionEntityListRequest&& from) noexcept + : DescriptionEntityListRequest() { + *this = ::std::move(from); + } + + inline DescriptionEntityListRequest& operator=(DescriptionEntityListRequest&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const ::google::protobuf::Descriptor* descriptor() { + return default_instance().GetDescriptor(); + } + static const DescriptionEntityListRequest& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const DescriptionEntityListRequest* internal_default_instance() { + return reinterpret_cast( + &_DescriptionEntityListRequest_default_instance_); + } + static constexpr int kIndexInFileMessages = + 4; + + void Swap(DescriptionEntityListRequest* other); + friend void swap(DescriptionEntityListRequest& a, DescriptionEntityListRequest& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline DescriptionEntityListRequest* New() const final { + return CreateMaybeMessage(nullptr); + } + + DescriptionEntityListRequest* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const DescriptionEntityListRequest& from); + void MergeFrom(const DescriptionEntityListRequest& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx); + ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; } + #else + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DescriptionEntityListRequest* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // string token = 4; + void clear_token(); + static const int kTokenFieldNumber = 4; + const ::std::string& token() const; + void set_token(const ::std::string& value); + #if LANG_CXX11 + void set_token(::std::string&& value); + #endif + void set_token(const char* value); + void set_token(const char* value, size_t size); + ::std::string* mutable_token(); + ::std::string* release_token(); + void set_allocated_token(::std::string* token); + + // string filters = 5; + void clear_filters(); + static const int kFiltersFieldNumber = 5; + const ::std::string& filters() const; + void set_filters(const ::std::string& value); + #if LANG_CXX11 + void set_filters(::std::string&& value); + #endif + void set_filters(const char* value); + void set_filters(const char* value, size_t size); + ::std::string* mutable_filters(); + ::std::string* release_filters(); + void set_allocated_filters(::std::string* filters); + + // .flyteidl.admin.NamedEntityIdentifier id = 2; + bool has_id() const; + void clear_id(); + static const int kIdFieldNumber = 2; + const ::flyteidl::admin::NamedEntityIdentifier& id() const; + ::flyteidl::admin::NamedEntityIdentifier* release_id(); + ::flyteidl::admin::NamedEntityIdentifier* mutable_id(); + void set_allocated_id(::flyteidl::admin::NamedEntityIdentifier* id); + + // .flyteidl.admin.Sort sort_by = 6; + bool has_sort_by() const; + void clear_sort_by(); + static const int kSortByFieldNumber = 6; + const ::flyteidl::admin::Sort& sort_by() const; + ::flyteidl::admin::Sort* release_sort_by(); + ::flyteidl::admin::Sort* mutable_sort_by(); + void set_allocated_sort_by(::flyteidl::admin::Sort* sort_by); + + // .flyteidl.core.ResourceType resource_type = 1; + void clear_resource_type(); + static const int kResourceTypeFieldNumber = 1; + ::flyteidl::core::ResourceType resource_type() const; + void set_resource_type(::flyteidl::core::ResourceType value); + + // uint32 limit = 3; + void clear_limit(); + static const int kLimitFieldNumber = 3; + ::google::protobuf::uint32 limit() const; + void set_limit(::google::protobuf::uint32 value); + + // @@protoc_insertion_point(class_scope:flyteidl.admin.DescriptionEntityListRequest) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr token_; + ::google::protobuf::internal::ArenaStringPtr filters_; + ::flyteidl::admin::NamedEntityIdentifier* id_; + ::flyteidl::admin::Sort* sort_by_; + int resource_type_; + ::google::protobuf::uint32 limit_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fadmin_2fdescription_5fentity_2eproto; +}; +// =================================================================== + + +// =================================================================== + +#ifdef __GNUC__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif // __GNUC__ +// DescriptionEntity + +// .flyteidl.core.Identifier id = 1; +inline bool DescriptionEntity::has_id() const { + return this != internal_default_instance() && id_ != nullptr; +} +inline const ::flyteidl::core::Identifier& DescriptionEntity::id() const { + const ::flyteidl::core::Identifier* p = id_; + // @@protoc_insertion_point(field_get:flyteidl.admin.DescriptionEntity.id) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::core::_Identifier_default_instance_); +} +inline ::flyteidl::core::Identifier* DescriptionEntity::release_id() { + // @@protoc_insertion_point(field_release:flyteidl.admin.DescriptionEntity.id) + + ::flyteidl::core::Identifier* temp = id_; + id_ = nullptr; + return temp; +} +inline ::flyteidl::core::Identifier* DescriptionEntity::mutable_id() { + + if (id_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::core::Identifier>(GetArenaNoVirtual()); + id_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.DescriptionEntity.id) + return id_; +} +inline void DescriptionEntity::set_allocated_id(::flyteidl::core::Identifier* id) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(id_); + } + if (id) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + id = ::google::protobuf::internal::GetOwnedMessage( + message_arena, id, submessage_arena); + } + + } else { + + } + id_ = id; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.DescriptionEntity.id) +} + +// string short_description = 2; +inline void DescriptionEntity::clear_short_description() { + short_description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& DescriptionEntity::short_description() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.DescriptionEntity.short_description) + return short_description_.GetNoArena(); +} +inline void DescriptionEntity::set_short_description(const ::std::string& value) { + + short_description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.DescriptionEntity.short_description) +} +#if LANG_CXX11 +inline void DescriptionEntity::set_short_description(::std::string&& value) { + + short_description_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.DescriptionEntity.short_description) +} +#endif +inline void DescriptionEntity::set_short_description(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + short_description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.DescriptionEntity.short_description) +} +inline void DescriptionEntity::set_short_description(const char* value, size_t size) { + + short_description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.DescriptionEntity.short_description) +} +inline ::std::string* DescriptionEntity::mutable_short_description() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.DescriptionEntity.short_description) + return short_description_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* DescriptionEntity::release_short_description() { + // @@protoc_insertion_point(field_release:flyteidl.admin.DescriptionEntity.short_description) + + return short_description_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void DescriptionEntity::set_allocated_short_description(::std::string* short_description) { + if (short_description != nullptr) { + + } else { + + } + short_description_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), short_description); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.DescriptionEntity.short_description) +} + +// .flyteidl.admin.Description long_description = 3; +inline bool DescriptionEntity::has_long_description() const { + return this != internal_default_instance() && long_description_ != nullptr; +} +inline void DescriptionEntity::clear_long_description() { + if (GetArenaNoVirtual() == nullptr && long_description_ != nullptr) { + delete long_description_; + } + long_description_ = nullptr; +} +inline const ::flyteidl::admin::Description& DescriptionEntity::long_description() const { + const ::flyteidl::admin::Description* p = long_description_; + // @@protoc_insertion_point(field_get:flyteidl.admin.DescriptionEntity.long_description) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_Description_default_instance_); +} +inline ::flyteidl::admin::Description* DescriptionEntity::release_long_description() { + // @@protoc_insertion_point(field_release:flyteidl.admin.DescriptionEntity.long_description) + + ::flyteidl::admin::Description* temp = long_description_; + long_description_ = nullptr; + return temp; +} +inline ::flyteidl::admin::Description* DescriptionEntity::mutable_long_description() { + + if (long_description_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::Description>(GetArenaNoVirtual()); + long_description_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.DescriptionEntity.long_description) + return long_description_; +} +inline void DescriptionEntity::set_allocated_long_description(::flyteidl::admin::Description* long_description) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete long_description_; + } + if (long_description) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + long_description = ::google::protobuf::internal::GetOwnedMessage( + message_arena, long_description, submessage_arena); + } + + } else { + + } + long_description_ = long_description; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.DescriptionEntity.long_description) +} + +// .flyteidl.admin.SourceCode source_code = 4; +inline bool DescriptionEntity::has_source_code() const { + return this != internal_default_instance() && source_code_ != nullptr; +} +inline void DescriptionEntity::clear_source_code() { + if (GetArenaNoVirtual() == nullptr && source_code_ != nullptr) { + delete source_code_; + } + source_code_ = nullptr; +} +inline const ::flyteidl::admin::SourceCode& DescriptionEntity::source_code() const { + const ::flyteidl::admin::SourceCode* p = source_code_; + // @@protoc_insertion_point(field_get:flyteidl.admin.DescriptionEntity.source_code) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_SourceCode_default_instance_); +} +inline ::flyteidl::admin::SourceCode* DescriptionEntity::release_source_code() { + // @@protoc_insertion_point(field_release:flyteidl.admin.DescriptionEntity.source_code) + + ::flyteidl::admin::SourceCode* temp = source_code_; + source_code_ = nullptr; + return temp; +} +inline ::flyteidl::admin::SourceCode* DescriptionEntity::mutable_source_code() { + + if (source_code_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::SourceCode>(GetArenaNoVirtual()); + source_code_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.DescriptionEntity.source_code) + return source_code_; +} +inline void DescriptionEntity::set_allocated_source_code(::flyteidl::admin::SourceCode* source_code) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete source_code_; + } + if (source_code) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + source_code = ::google::protobuf::internal::GetOwnedMessage( + message_arena, source_code, submessage_arena); + } + + } else { + + } + source_code_ = source_code; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.DescriptionEntity.source_code) +} + +// repeated string tags = 5; +inline int DescriptionEntity::tags_size() const { + return tags_.size(); +} +inline void DescriptionEntity::clear_tags() { + tags_.Clear(); +} +inline const ::std::string& DescriptionEntity::tags(int index) const { + // @@protoc_insertion_point(field_get:flyteidl.admin.DescriptionEntity.tags) + return tags_.Get(index); +} +inline ::std::string* DescriptionEntity::mutable_tags(int index) { + // @@protoc_insertion_point(field_mutable:flyteidl.admin.DescriptionEntity.tags) + return tags_.Mutable(index); +} +inline void DescriptionEntity::set_tags(int index, const ::std::string& value) { + // @@protoc_insertion_point(field_set:flyteidl.admin.DescriptionEntity.tags) + tags_.Mutable(index)->assign(value); +} +#if LANG_CXX11 +inline void DescriptionEntity::set_tags(int index, ::std::string&& value) { + // @@protoc_insertion_point(field_set:flyteidl.admin.DescriptionEntity.tags) + tags_.Mutable(index)->assign(std::move(value)); +} +#endif +inline void DescriptionEntity::set_tags(int index, const char* value) { + GOOGLE_DCHECK(value != nullptr); + tags_.Mutable(index)->assign(value); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.DescriptionEntity.tags) +} +inline void DescriptionEntity::set_tags(int index, const char* value, size_t size) { + tags_.Mutable(index)->assign( + reinterpret_cast(value), size); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.DescriptionEntity.tags) +} +inline ::std::string* DescriptionEntity::add_tags() { + // @@protoc_insertion_point(field_add_mutable:flyteidl.admin.DescriptionEntity.tags) + return tags_.Add(); +} +inline void DescriptionEntity::add_tags(const ::std::string& value) { + tags_.Add()->assign(value); + // @@protoc_insertion_point(field_add:flyteidl.admin.DescriptionEntity.tags) +} +#if LANG_CXX11 +inline void DescriptionEntity::add_tags(::std::string&& value) { + tags_.Add(std::move(value)); + // @@protoc_insertion_point(field_add:flyteidl.admin.DescriptionEntity.tags) +} +#endif +inline void DescriptionEntity::add_tags(const char* value) { + GOOGLE_DCHECK(value != nullptr); + tags_.Add()->assign(value); + // @@protoc_insertion_point(field_add_char:flyteidl.admin.DescriptionEntity.tags) +} +inline void DescriptionEntity::add_tags(const char* value, size_t size) { + tags_.Add()->assign(reinterpret_cast(value), size); + // @@protoc_insertion_point(field_add_pointer:flyteidl.admin.DescriptionEntity.tags) +} +inline const ::google::protobuf::RepeatedPtrField<::std::string>& +DescriptionEntity::tags() const { + // @@protoc_insertion_point(field_list:flyteidl.admin.DescriptionEntity.tags) + return tags_; +} +inline ::google::protobuf::RepeatedPtrField<::std::string>* +DescriptionEntity::mutable_tags() { + // @@protoc_insertion_point(field_mutable_list:flyteidl.admin.DescriptionEntity.tags) + return &tags_; +} + +// ------------------------------------------------------------------- + +// Description + +// string value = 1; +inline bool Description::has_value() const { + return content_case() == kValue; +} +inline void Description::set_has_value() { + _oneof_case_[0] = kValue; +} +inline void Description::clear_value() { + if (has_value()) { + content_.value_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + clear_has_content(); + } +} +inline const ::std::string& Description::value() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.Description.value) + if (has_value()) { + return content_.value_.GetNoArena(); + } + return *&::google::protobuf::internal::GetEmptyStringAlreadyInited(); +} +inline void Description::set_value(const ::std::string& value) { + // @@protoc_insertion_point(field_set:flyteidl.admin.Description.value) + if (!has_value()) { + clear_content(); + set_has_value(); + content_.value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + content_.value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.Description.value) +} +#if LANG_CXX11 +inline void Description::set_value(::std::string&& value) { + // @@protoc_insertion_point(field_set:flyteidl.admin.Description.value) + if (!has_value()) { + clear_content(); + set_has_value(); + content_.value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + content_.value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.Description.value) +} +#endif +inline void Description::set_value(const char* value) { + GOOGLE_DCHECK(value != nullptr); + if (!has_value()) { + clear_content(); + set_has_value(); + content_.value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + content_.value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.Description.value) +} +inline void Description::set_value(const char* value, size_t size) { + if (!has_value()) { + clear_content(); + set_has_value(); + content_.value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + content_.value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string( + reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.Description.value) +} +inline ::std::string* Description::mutable_value() { + if (!has_value()) { + clear_content(); + set_has_value(); + content_.value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.Description.value) + return content_.value_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* Description::release_value() { + // @@protoc_insertion_point(field_release:flyteidl.admin.Description.value) + if (has_value()) { + clear_has_content(); + return content_.value_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } else { + return nullptr; + } +} +inline void Description::set_allocated_value(::std::string* value) { + if (has_content()) { + clear_content(); + } + if (value != nullptr) { + set_has_value(); + content_.value_.UnsafeSetDefault(value); + } + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.Description.value) +} + +// string uri = 2; +inline bool Description::has_uri() const { + return content_case() == kUri; +} +inline void Description::set_has_uri() { + _oneof_case_[0] = kUri; +} +inline void Description::clear_uri() { + if (has_uri()) { + content_.uri_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + clear_has_content(); + } +} +inline const ::std::string& Description::uri() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.Description.uri) + if (has_uri()) { + return content_.uri_.GetNoArena(); + } + return *&::google::protobuf::internal::GetEmptyStringAlreadyInited(); +} +inline void Description::set_uri(const ::std::string& value) { + // @@protoc_insertion_point(field_set:flyteidl.admin.Description.uri) + if (!has_uri()) { + clear_content(); + set_has_uri(); + content_.uri_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + content_.uri_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.Description.uri) +} +#if LANG_CXX11 +inline void Description::set_uri(::std::string&& value) { + // @@protoc_insertion_point(field_set:flyteidl.admin.Description.uri) + if (!has_uri()) { + clear_content(); + set_has_uri(); + content_.uri_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + content_.uri_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.Description.uri) +} +#endif +inline void Description::set_uri(const char* value) { + GOOGLE_DCHECK(value != nullptr); + if (!has_uri()) { + clear_content(); + set_has_uri(); + content_.uri_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + content_.uri_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.Description.uri) +} +inline void Description::set_uri(const char* value, size_t size) { + if (!has_uri()) { + clear_content(); + set_has_uri(); + content_.uri_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + content_.uri_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string( + reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.Description.uri) +} +inline ::std::string* Description::mutable_uri() { + if (!has_uri()) { + clear_content(); + set_has_uri(); + content_.uri_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.Description.uri) + return content_.uri_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* Description::release_uri() { + // @@protoc_insertion_point(field_release:flyteidl.admin.Description.uri) + if (has_uri()) { + clear_has_content(); + return content_.uri_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } else { + return nullptr; + } +} +inline void Description::set_allocated_uri(::std::string* uri) { + if (has_content()) { + clear_content(); + } + if (uri != nullptr) { + set_has_uri(); + content_.uri_.UnsafeSetDefault(uri); + } + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.Description.uri) +} + +// .flyteidl.admin.DescriptionFormat format = 3; +inline void Description::clear_format() { + format_ = 0; +} +inline ::flyteidl::admin::DescriptionFormat Description::format() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.Description.format) + return static_cast< ::flyteidl::admin::DescriptionFormat >(format_); +} +inline void Description::set_format(::flyteidl::admin::DescriptionFormat value) { + + format_ = value; + // @@protoc_insertion_point(field_set:flyteidl.admin.Description.format) +} + +// string icon_link = 4; +inline void Description::clear_icon_link() { + icon_link_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& Description::icon_link() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.Description.icon_link) + return icon_link_.GetNoArena(); +} +inline void Description::set_icon_link(const ::std::string& value) { + + icon_link_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.Description.icon_link) +} +#if LANG_CXX11 +inline void Description::set_icon_link(::std::string&& value) { + + icon_link_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.Description.icon_link) +} +#endif +inline void Description::set_icon_link(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + icon_link_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.Description.icon_link) +} +inline void Description::set_icon_link(const char* value, size_t size) { + + icon_link_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.Description.icon_link) +} +inline ::std::string* Description::mutable_icon_link() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.Description.icon_link) + return icon_link_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* Description::release_icon_link() { + // @@protoc_insertion_point(field_release:flyteidl.admin.Description.icon_link) + + return icon_link_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void Description::set_allocated_icon_link(::std::string* icon_link) { + if (icon_link != nullptr) { + + } else { + + } + icon_link_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), icon_link); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.Description.icon_link) +} + +inline bool Description::has_content() const { + return content_case() != CONTENT_NOT_SET; +} +inline void Description::clear_has_content() { + _oneof_case_[0] = CONTENT_NOT_SET; +} +inline Description::ContentCase Description::content_case() const { + return Description::ContentCase(_oneof_case_[0]); +} +// ------------------------------------------------------------------- + +// SourceCode + +// string link = 1; +inline void SourceCode::clear_link() { + link_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& SourceCode::link() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.SourceCode.link) + return link_.GetNoArena(); +} +inline void SourceCode::set_link(const ::std::string& value) { + + link_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.SourceCode.link) +} +#if LANG_CXX11 +inline void SourceCode::set_link(::std::string&& value) { + + link_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.SourceCode.link) +} +#endif +inline void SourceCode::set_link(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + link_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.SourceCode.link) +} +inline void SourceCode::set_link(const char* value, size_t size) { + + link_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.SourceCode.link) +} +inline ::std::string* SourceCode::mutable_link() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.SourceCode.link) + return link_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* SourceCode::release_link() { + // @@protoc_insertion_point(field_release:flyteidl.admin.SourceCode.link) + + return link_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void SourceCode::set_allocated_link(::std::string* link) { + if (link != nullptr) { + + } else { + + } + link_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), link); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.SourceCode.link) +} + +// ------------------------------------------------------------------- + +// DescriptionEntityList + +// repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; +inline int DescriptionEntityList::descriptionentities_size() const { + return descriptionentities_.size(); +} +inline void DescriptionEntityList::clear_descriptionentities() { + descriptionentities_.Clear(); +} +inline ::flyteidl::admin::DescriptionEntity* DescriptionEntityList::mutable_descriptionentities(int index) { + // @@protoc_insertion_point(field_mutable:flyteidl.admin.DescriptionEntityList.descriptionEntities) + return descriptionentities_.Mutable(index); +} +inline ::google::protobuf::RepeatedPtrField< ::flyteidl::admin::DescriptionEntity >* +DescriptionEntityList::mutable_descriptionentities() { + // @@protoc_insertion_point(field_mutable_list:flyteidl.admin.DescriptionEntityList.descriptionEntities) + return &descriptionentities_; +} +inline const ::flyteidl::admin::DescriptionEntity& DescriptionEntityList::descriptionentities(int index) const { + // @@protoc_insertion_point(field_get:flyteidl.admin.DescriptionEntityList.descriptionEntities) + return descriptionentities_.Get(index); +} +inline ::flyteidl::admin::DescriptionEntity* DescriptionEntityList::add_descriptionentities() { + // @@protoc_insertion_point(field_add:flyteidl.admin.DescriptionEntityList.descriptionEntities) + return descriptionentities_.Add(); +} +inline const ::google::protobuf::RepeatedPtrField< ::flyteidl::admin::DescriptionEntity >& +DescriptionEntityList::descriptionentities() const { + // @@protoc_insertion_point(field_list:flyteidl.admin.DescriptionEntityList.descriptionEntities) + return descriptionentities_; +} + +// string token = 2; +inline void DescriptionEntityList::clear_token() { + token_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& DescriptionEntityList::token() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.DescriptionEntityList.token) + return token_.GetNoArena(); +} +inline void DescriptionEntityList::set_token(const ::std::string& value) { + + token_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.DescriptionEntityList.token) +} +#if LANG_CXX11 +inline void DescriptionEntityList::set_token(::std::string&& value) { + + token_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.DescriptionEntityList.token) +} +#endif +inline void DescriptionEntityList::set_token(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + token_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.DescriptionEntityList.token) +} +inline void DescriptionEntityList::set_token(const char* value, size_t size) { + + token_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.DescriptionEntityList.token) +} +inline ::std::string* DescriptionEntityList::mutable_token() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.DescriptionEntityList.token) + return token_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* DescriptionEntityList::release_token() { + // @@protoc_insertion_point(field_release:flyteidl.admin.DescriptionEntityList.token) + + return token_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void DescriptionEntityList::set_allocated_token(::std::string* token) { + if (token != nullptr) { + + } else { + + } + token_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), token); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.DescriptionEntityList.token) +} + +// ------------------------------------------------------------------- + +// DescriptionEntityListRequest + +// .flyteidl.core.ResourceType resource_type = 1; +inline void DescriptionEntityListRequest::clear_resource_type() { + resource_type_ = 0; +} +inline ::flyteidl::core::ResourceType DescriptionEntityListRequest::resource_type() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.DescriptionEntityListRequest.resource_type) + return static_cast< ::flyteidl::core::ResourceType >(resource_type_); +} +inline void DescriptionEntityListRequest::set_resource_type(::flyteidl::core::ResourceType value) { + + resource_type_ = value; + // @@protoc_insertion_point(field_set:flyteidl.admin.DescriptionEntityListRequest.resource_type) +} + +// .flyteidl.admin.NamedEntityIdentifier id = 2; +inline bool DescriptionEntityListRequest::has_id() const { + return this != internal_default_instance() && id_ != nullptr; +} +inline const ::flyteidl::admin::NamedEntityIdentifier& DescriptionEntityListRequest::id() const { + const ::flyteidl::admin::NamedEntityIdentifier* p = id_; + // @@protoc_insertion_point(field_get:flyteidl.admin.DescriptionEntityListRequest.id) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_NamedEntityIdentifier_default_instance_); +} +inline ::flyteidl::admin::NamedEntityIdentifier* DescriptionEntityListRequest::release_id() { + // @@protoc_insertion_point(field_release:flyteidl.admin.DescriptionEntityListRequest.id) + + ::flyteidl::admin::NamedEntityIdentifier* temp = id_; + id_ = nullptr; + return temp; +} +inline ::flyteidl::admin::NamedEntityIdentifier* DescriptionEntityListRequest::mutable_id() { + + if (id_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::NamedEntityIdentifier>(GetArenaNoVirtual()); + id_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.DescriptionEntityListRequest.id) + return id_; +} +inline void DescriptionEntityListRequest::set_allocated_id(::flyteidl::admin::NamedEntityIdentifier* id) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(id_); + } + if (id) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + id = ::google::protobuf::internal::GetOwnedMessage( + message_arena, id, submessage_arena); + } + + } else { + + } + id_ = id; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.DescriptionEntityListRequest.id) +} + +// uint32 limit = 3; +inline void DescriptionEntityListRequest::clear_limit() { + limit_ = 0u; +} +inline ::google::protobuf::uint32 DescriptionEntityListRequest::limit() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.DescriptionEntityListRequest.limit) + return limit_; +} +inline void DescriptionEntityListRequest::set_limit(::google::protobuf::uint32 value) { + + limit_ = value; + // @@protoc_insertion_point(field_set:flyteidl.admin.DescriptionEntityListRequest.limit) +} + +// string token = 4; +inline void DescriptionEntityListRequest::clear_token() { + token_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& DescriptionEntityListRequest::token() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.DescriptionEntityListRequest.token) + return token_.GetNoArena(); +} +inline void DescriptionEntityListRequest::set_token(const ::std::string& value) { + + token_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.DescriptionEntityListRequest.token) +} +#if LANG_CXX11 +inline void DescriptionEntityListRequest::set_token(::std::string&& value) { + + token_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.DescriptionEntityListRequest.token) +} +#endif +inline void DescriptionEntityListRequest::set_token(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + token_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.DescriptionEntityListRequest.token) +} +inline void DescriptionEntityListRequest::set_token(const char* value, size_t size) { + + token_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.DescriptionEntityListRequest.token) +} +inline ::std::string* DescriptionEntityListRequest::mutable_token() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.DescriptionEntityListRequest.token) + return token_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* DescriptionEntityListRequest::release_token() { + // @@protoc_insertion_point(field_release:flyteidl.admin.DescriptionEntityListRequest.token) + + return token_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void DescriptionEntityListRequest::set_allocated_token(::std::string* token) { + if (token != nullptr) { + + } else { + + } + token_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), token); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.DescriptionEntityListRequest.token) +} + +// string filters = 5; +inline void DescriptionEntityListRequest::clear_filters() { + filters_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& DescriptionEntityListRequest::filters() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.DescriptionEntityListRequest.filters) + return filters_.GetNoArena(); +} +inline void DescriptionEntityListRequest::set_filters(const ::std::string& value) { + + filters_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.DescriptionEntityListRequest.filters) +} +#if LANG_CXX11 +inline void DescriptionEntityListRequest::set_filters(::std::string&& value) { + + filters_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.DescriptionEntityListRequest.filters) +} +#endif +inline void DescriptionEntityListRequest::set_filters(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + filters_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.DescriptionEntityListRequest.filters) +} +inline void DescriptionEntityListRequest::set_filters(const char* value, size_t size) { + + filters_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.DescriptionEntityListRequest.filters) +} +inline ::std::string* DescriptionEntityListRequest::mutable_filters() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.DescriptionEntityListRequest.filters) + return filters_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* DescriptionEntityListRequest::release_filters() { + // @@protoc_insertion_point(field_release:flyteidl.admin.DescriptionEntityListRequest.filters) + + return filters_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void DescriptionEntityListRequest::set_allocated_filters(::std::string* filters) { + if (filters != nullptr) { + + } else { + + } + filters_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), filters); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.DescriptionEntityListRequest.filters) +} + +// .flyteidl.admin.Sort sort_by = 6; +inline bool DescriptionEntityListRequest::has_sort_by() const { + return this != internal_default_instance() && sort_by_ != nullptr; +} +inline const ::flyteidl::admin::Sort& DescriptionEntityListRequest::sort_by() const { + const ::flyteidl::admin::Sort* p = sort_by_; + // @@protoc_insertion_point(field_get:flyteidl.admin.DescriptionEntityListRequest.sort_by) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_Sort_default_instance_); +} +inline ::flyteidl::admin::Sort* DescriptionEntityListRequest::release_sort_by() { + // @@protoc_insertion_point(field_release:flyteidl.admin.DescriptionEntityListRequest.sort_by) + + ::flyteidl::admin::Sort* temp = sort_by_; + sort_by_ = nullptr; + return temp; +} +inline ::flyteidl::admin::Sort* DescriptionEntityListRequest::mutable_sort_by() { + + if (sort_by_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::Sort>(GetArenaNoVirtual()); + sort_by_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.DescriptionEntityListRequest.sort_by) + return sort_by_; +} +inline void DescriptionEntityListRequest::set_allocated_sort_by(::flyteidl::admin::Sort* sort_by) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(sort_by_); + } + if (sort_by) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + sort_by = ::google::protobuf::internal::GetOwnedMessage( + message_arena, sort_by, submessage_arena); + } + + } else { + + } + sort_by_ = sort_by; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.DescriptionEntityListRequest.sort_by) +} + +#ifdef __GNUC__ + #pragma GCC diagnostic pop +#endif // __GNUC__ +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + + +// @@protoc_insertion_point(namespace_scope) + +} // namespace admin +} // namespace flyteidl + +namespace google { +namespace protobuf { + +template <> struct is_proto_enum< ::flyteidl::admin::DescriptionFormat> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::flyteidl::admin::DescriptionFormat>() { + return ::flyteidl::admin::DescriptionFormat_descriptor(); +} + +} // namespace protobuf +} // namespace google + +// @@protoc_insertion_point(global_scope) + +#include +#endif // PROTOBUF_INCLUDED_flyteidl_2fadmin_2fdescription_5fentity_2eproto diff --git a/flyteidl/gen/pb-cpp/flyteidl/admin/task.pb.cc b/flyteidl/gen/pb-cpp/flyteidl/admin/task.pb.cc index 2f3903a1c1b..8cbbf7f154a 100644 --- a/flyteidl/gen/pb-cpp/flyteidl/admin/task.pb.cc +++ b/flyteidl/gen/pb-cpp/flyteidl/admin/task.pb.cc @@ -16,8 +16,9 @@ // @@protoc_insertion_point(includes) #include -extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2ftask_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TaskSpec_flyteidl_2fadmin_2ftask_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fdescription_5fentity_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_DescriptionEntity_flyteidl_2fadmin_2fdescription_5fentity_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2ftask_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TaskClosure_flyteidl_2fadmin_2ftask_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2ftask_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TaskSpec_flyteidl_2fadmin_2ftask_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2ftask_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_Task_flyteidl_2fadmin_2ftask_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fcompiler_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_CompiledTask_flyteidl_2fcore_2fcompiler_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fidentifier_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Identifier_flyteidl_2fcore_2fidentifier_2eproto; @@ -123,9 +124,10 @@ static void InitDefaultsTaskSpec_flyteidl_2fadmin_2ftask_2eproto() { ::flyteidl::admin::TaskSpec::InitAsDefaultInstance(); } -::google::protobuf::internal::SCCInfo<1> scc_info_TaskSpec_flyteidl_2fadmin_2ftask_2eproto = - {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTaskSpec_flyteidl_2fadmin_2ftask_2eproto}, { - &scc_info_TaskTemplate_flyteidl_2fcore_2ftasks_2eproto.base,}}; +::google::protobuf::internal::SCCInfo<2> scc_info_TaskSpec_flyteidl_2fadmin_2ftask_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsTaskSpec_flyteidl_2fadmin_2ftask_2eproto}, { + &scc_info_TaskTemplate_flyteidl_2fcore_2ftasks_2eproto.base, + &scc_info_DescriptionEntity_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base,}}; static void InitDefaultsTaskClosure_flyteidl_2fadmin_2ftask_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; @@ -176,6 +178,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2ftask_2eproto::of ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Task, id_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Task, closure_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Task, short_description_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::TaskList, _internal_metadata_), ~0u, // no _extensions_ @@ -189,6 +192,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2ftask_2eproto::of ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::TaskSpec, template__), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::TaskSpec, description_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::TaskClosure, _internal_metadata_), ~0u, // no _extensions_ @@ -201,9 +205,9 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SE { 0, -1, sizeof(::flyteidl::admin::TaskCreateRequest)}, { 7, -1, sizeof(::flyteidl::admin::TaskCreateResponse)}, { 12, -1, sizeof(::flyteidl::admin::Task)}, - { 19, -1, sizeof(::flyteidl::admin::TaskList)}, - { 26, -1, sizeof(::flyteidl::admin::TaskSpec)}, - { 32, -1, sizeof(::flyteidl::admin::TaskClosure)}, + { 20, -1, sizeof(::flyteidl::admin::TaskList)}, + { 27, -1, sizeof(::flyteidl::admin::TaskSpec)}, + { 34, -1, sizeof(::flyteidl::admin::TaskClosure)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -225,37 +229,41 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2ftask_2eproto[] = "\n\031flyteidl/admin/task.proto\022\016flyteidl.ad" "min\032\036flyteidl/core/identifier.proto\032\031fly" "teidl/core/tasks.proto\032\034flyteidl/core/co" - "mpiler.proto\032\037google/protobuf/timestamp." - "proto\"b\n\021TaskCreateRequest\022%\n\002id\030\001 \001(\0132\031" - ".flyteidl.core.Identifier\022&\n\004spec\030\002 \001(\0132" - "\030.flyteidl.admin.TaskSpec\"\024\n\022TaskCreateR" - "esponse\"[\n\004Task\022%\n\002id\030\001 \001(\0132\031.flyteidl.c" - "ore.Identifier\022,\n\007closure\030\002 \001(\0132\033.flytei" - "dl.admin.TaskClosure\">\n\010TaskList\022#\n\005task" - "s\030\001 \003(\0132\024.flyteidl.admin.Task\022\r\n\005token\030\002" - " \001(\t\"9\n\010TaskSpec\022-\n\010template\030\001 \001(\0132\033.fly" - "teidl.core.TaskTemplate\"q\n\013TaskClosure\0222" - "\n\rcompiled_task\030\001 \001(\0132\033.flyteidl.core.Co" - "mpiledTask\022.\n\ncreated_at\030\002 \001(\0132\032.google." - "protobuf.TimestampB7Z5github.com/flyteor" - "g/flyteidl/gen/pb-go/flyteidl/adminb\006pro" - "to3" + "mpiler.proto\032\'flyteidl/admin/description" + "_entity.proto\032\037google/protobuf/timestamp" + ".proto\"b\n\021TaskCreateRequest\022%\n\002id\030\001 \001(\0132" + "\031.flyteidl.core.Identifier\022&\n\004spec\030\002 \001(\013" + "2\030.flyteidl.admin.TaskSpec\"\024\n\022TaskCreate" + "Response\"v\n\004Task\022%\n\002id\030\001 \001(\0132\031.flyteidl." + "core.Identifier\022,\n\007closure\030\002 \001(\0132\033.flyte" + "idl.admin.TaskClosure\022\031\n\021short_descripti" + "on\030\003 \001(\t\">\n\010TaskList\022#\n\005tasks\030\001 \003(\0132\024.fl" + "yteidl.admin.Task\022\r\n\005token\030\002 \001(\t\"q\n\010Task" + "Spec\022-\n\010template\030\001 \001(\0132\033.flyteidl.core.T" + "askTemplate\0226\n\013description\030\002 \001(\0132!.flyte" + "idl.admin.DescriptionEntity\"q\n\013TaskClosu" + "re\0222\n\rcompiled_task\030\001 \001(\0132\033.flyteidl.cor" + "e.CompiledTask\022.\n\ncreated_at\030\002 \001(\0132\032.goo" + "gle.protobuf.TimestampB7Z5github.com/fly" + "teorg/flyteidl/gen/pb-go/flyteidl/adminb" + "\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2ftask_2eproto = { false, InitDefaults_flyteidl_2fadmin_2ftask_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2ftask_2eproto, - "flyteidl/admin/task.proto", &assign_descriptors_table_flyteidl_2fadmin_2ftask_2eproto, 683, + "flyteidl/admin/task.proto", &assign_descriptors_table_flyteidl_2fadmin_2ftask_2eproto, 807, }; void AddDescriptors_flyteidl_2fadmin_2ftask_2eproto() { - static constexpr ::google::protobuf::internal::InitFunc deps[4] = + static constexpr ::google::protobuf::internal::InitFunc deps[5] = { ::AddDescriptors_flyteidl_2fcore_2fidentifier_2eproto, ::AddDescriptors_flyteidl_2fcore_2ftasks_2eproto, ::AddDescriptors_flyteidl_2fcore_2fcompiler_2eproto, + ::AddDescriptors_flyteidl_2fadmin_2fdescription_5fentity_2eproto, ::AddDescriptors_google_2fprotobuf_2ftimestamp_2eproto, }; - ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2ftask_2eproto, deps, 4); + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2ftask_2eproto, deps, 5); } // Force running AddDescriptors() at dynamic initialization time. @@ -864,6 +872,7 @@ void Task::clear_id() { #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int Task::kIdFieldNumber; const int Task::kClosureFieldNumber; +const int Task::kShortDescriptionFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 Task::Task() @@ -875,6 +884,10 @@ Task::Task(const Task& from) : ::google::protobuf::Message(), _internal_metadata_(nullptr) { _internal_metadata_.MergeFrom(from._internal_metadata_); + short_description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.short_description().size() > 0) { + short_description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.short_description_); + } if (from.has_id()) { id_ = new ::flyteidl::core::Identifier(*from.id_); } else { @@ -891,6 +904,7 @@ Task::Task(const Task& from) void Task::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_Task_flyteidl_2fadmin_2ftask_2eproto.base); + short_description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); ::memset(&id_, 0, static_cast( reinterpret_cast(&closure_) - reinterpret_cast(&id_)) + sizeof(closure_)); @@ -902,6 +916,7 @@ Task::~Task() { } void Task::SharedDtor() { + short_description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete id_; if (this != internal_default_instance()) delete closure_; } @@ -921,6 +936,7 @@ void Task::Clear() { // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; + short_description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); if (GetArenaNoVirtual() == nullptr && id_ != nullptr) { delete id_; } @@ -971,6 +987,22 @@ const char* Task::_InternalParse(const char* begin, const char* end, void* objec {parser_till_end, object}, ptr - size, ptr)); break; } + // string short_description = 3; + case 3: { + if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.Task.short_description"); + object = msg->mutable_short_description(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -986,6 +1018,10 @@ const char* Task::_InternalParse(const char* begin, const char* end, void* objec } // switch } // while return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; len_delim_till_end: return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, {parser_till_end, object}, size); @@ -1023,6 +1059,21 @@ bool Task::MergePartialFromCodedStream( break; } + // string short_description = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_short_description())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->short_description().data(), static_cast(this->short_description().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.Task.short_description")); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -1062,6 +1113,16 @@ void Task::SerializeWithCachedSizes( 2, HasBitSetters::closure(this), output); } + // string short_description = 3; + if (this->short_description().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->short_description().data(), static_cast(this->short_description().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.Task.short_description"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 3, this->short_description(), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -1089,6 +1150,17 @@ ::google::protobuf::uint8* Task::InternalSerializeWithCachedSizesToArray( 2, HasBitSetters::closure(this), target); } + // string short_description = 3; + if (this->short_description().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->short_description().data(), static_cast(this->short_description().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.Task.short_description"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 3, this->short_description(), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -1110,6 +1182,13 @@ size_t Task::ByteSizeLong() const { // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; + // string short_description = 3; + if (this->short_description().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->short_description()); + } + // .flyteidl.core.Identifier id = 1; if (this->has_id()) { total_size += 1 + @@ -1151,6 +1230,10 @@ void Task::MergeFrom(const Task& from) { ::google::protobuf::uint32 cached_has_bits = 0; (void) cached_has_bits; + if (from.short_description().size() > 0) { + + short_description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.short_description_); + } if (from.has_id()) { mutable_id()->::flyteidl::core::Identifier::MergeFrom(from.id()); } @@ -1184,6 +1267,8 @@ void Task::Swap(Task* other) { void Task::InternalSwap(Task* other) { using std::swap; _internal_metadata_.Swap(&other->_internal_metadata_); + short_description_.Swap(&other->short_description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); swap(id_, other->id_); swap(closure_, other->closure_); } @@ -1556,24 +1641,38 @@ ::google::protobuf::Metadata TaskList::GetMetadata() const { void TaskSpec::InitAsDefaultInstance() { ::flyteidl::admin::_TaskSpec_default_instance_._instance.get_mutable()->template__ = const_cast< ::flyteidl::core::TaskTemplate*>( ::flyteidl::core::TaskTemplate::internal_default_instance()); + ::flyteidl::admin::_TaskSpec_default_instance_._instance.get_mutable()->description_ = const_cast< ::flyteidl::admin::DescriptionEntity*>( + ::flyteidl::admin::DescriptionEntity::internal_default_instance()); } class TaskSpec::HasBitSetters { public: static const ::flyteidl::core::TaskTemplate& template_(const TaskSpec* msg); + static const ::flyteidl::admin::DescriptionEntity& description(const TaskSpec* msg); }; const ::flyteidl::core::TaskTemplate& TaskSpec::HasBitSetters::template_(const TaskSpec* msg) { return *msg->template__; } +const ::flyteidl::admin::DescriptionEntity& +TaskSpec::HasBitSetters::description(const TaskSpec* msg) { + return *msg->description_; +} void TaskSpec::clear_template_() { if (GetArenaNoVirtual() == nullptr && template__ != nullptr) { delete template__; } template__ = nullptr; } +void TaskSpec::clear_description() { + if (GetArenaNoVirtual() == nullptr && description_ != nullptr) { + delete description_; + } + description_ = nullptr; +} #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int TaskSpec::kTemplateFieldNumber; +const int TaskSpec::kDescriptionFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 TaskSpec::TaskSpec() @@ -1590,13 +1689,20 @@ TaskSpec::TaskSpec(const TaskSpec& from) } else { template__ = nullptr; } + if (from.has_description()) { + description_ = new ::flyteidl::admin::DescriptionEntity(*from.description_); + } else { + description_ = nullptr; + } // @@protoc_insertion_point(copy_constructor:flyteidl.admin.TaskSpec) } void TaskSpec::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_TaskSpec_flyteidl_2fadmin_2ftask_2eproto.base); - template__ = nullptr; + ::memset(&template__, 0, static_cast( + reinterpret_cast(&description_) - + reinterpret_cast(&template__)) + sizeof(description_)); } TaskSpec::~TaskSpec() { @@ -1606,6 +1712,7 @@ TaskSpec::~TaskSpec() { void TaskSpec::SharedDtor() { if (this != internal_default_instance()) delete template__; + if (this != internal_default_instance()) delete description_; } void TaskSpec::SetCachedSize(int size) const { @@ -1627,6 +1734,10 @@ void TaskSpec::Clear() { delete template__; } template__ = nullptr; + if (GetArenaNoVirtual() == nullptr && description_ != nullptr) { + delete description_; + } + description_ = nullptr; _internal_metadata_.Clear(); } @@ -1656,6 +1767,19 @@ const char* TaskSpec::_InternalParse(const char* begin, const char* end, void* o {parser_till_end, object}, ptr - size, ptr)); break; } + // .flyteidl.admin.DescriptionEntity description = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::admin::DescriptionEntity::_InternalParse; + object = msg->mutable_description(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -1697,6 +1821,17 @@ bool TaskSpec::MergePartialFromCodedStream( break; } + // .flyteidl.admin.DescriptionEntity description = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_description())); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -1730,6 +1865,12 @@ void TaskSpec::SerializeWithCachedSizes( 1, HasBitSetters::template_(this), output); } + // .flyteidl.admin.DescriptionEntity description = 2; + if (this->has_description()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 2, HasBitSetters::description(this), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -1750,6 +1891,13 @@ ::google::protobuf::uint8* TaskSpec::InternalSerializeWithCachedSizesToArray( 1, HasBitSetters::template_(this), target); } + // .flyteidl.admin.DescriptionEntity description = 2; + if (this->has_description()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 2, HasBitSetters::description(this), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -1778,6 +1926,13 @@ size_t TaskSpec::ByteSizeLong() const { *template__); } + // .flyteidl.admin.DescriptionEntity description = 2; + if (this->has_description()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *description_); + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -1808,6 +1963,9 @@ void TaskSpec::MergeFrom(const TaskSpec& from) { if (from.has_template_()) { mutable_template_()->::flyteidl::core::TaskTemplate::MergeFrom(from.template_()); } + if (from.has_description()) { + mutable_description()->::flyteidl::admin::DescriptionEntity::MergeFrom(from.description()); + } } void TaskSpec::CopyFrom(const ::google::protobuf::Message& from) { @@ -1836,6 +1994,7 @@ void TaskSpec::InternalSwap(TaskSpec* other) { using std::swap; _internal_metadata_.Swap(&other->_internal_metadata_); swap(template__, other->template__); + swap(description_, other->description_); } ::google::protobuf::Metadata TaskSpec::GetMetadata() const { diff --git a/flyteidl/gen/pb-cpp/flyteidl/admin/task.pb.h b/flyteidl/gen/pb-cpp/flyteidl/admin/task.pb.h index 7946c0a91be..b11636d135a 100644 --- a/flyteidl/gen/pb-cpp/flyteidl/admin/task.pb.h +++ b/flyteidl/gen/pb-cpp/flyteidl/admin/task.pb.h @@ -34,6 +34,7 @@ #include "flyteidl/core/identifier.pb.h" #include "flyteidl/core/tasks.pb.h" #include "flyteidl/core/compiler.pb.h" +#include "flyteidl/admin/description_entity.pb.h" #include // @@protoc_insertion_point(includes) #include @@ -414,6 +415,20 @@ class Task final : // accessors ------------------------------------------------------- + // string short_description = 3; + void clear_short_description(); + static const int kShortDescriptionFieldNumber = 3; + const ::std::string& short_description() const; + void set_short_description(const ::std::string& value); + #if LANG_CXX11 + void set_short_description(::std::string&& value); + #endif + void set_short_description(const char* value); + void set_short_description(const char* value, size_t size); + ::std::string* mutable_short_description(); + ::std::string* release_short_description(); + void set_allocated_short_description(::std::string* short_description); + // .flyteidl.core.Identifier id = 1; bool has_id() const; void clear_id(); @@ -437,6 +452,7 @@ class Task final : class HasBitSetters; ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr short_description_; ::flyteidl::core::Identifier* id_; ::flyteidl::admin::TaskClosure* closure_; mutable ::google::protobuf::internal::CachedSize _cached_size_; @@ -681,12 +697,22 @@ class TaskSpec final : ::flyteidl::core::TaskTemplate* mutable_template_(); void set_allocated_template_(::flyteidl::core::TaskTemplate* template_); + // .flyteidl.admin.DescriptionEntity description = 2; + bool has_description() const; + void clear_description(); + static const int kDescriptionFieldNumber = 2; + const ::flyteidl::admin::DescriptionEntity& description() const; + ::flyteidl::admin::DescriptionEntity* release_description(); + ::flyteidl::admin::DescriptionEntity* mutable_description(); + void set_allocated_description(::flyteidl::admin::DescriptionEntity* description); + // @@protoc_insertion_point(class_scope:flyteidl.admin.TaskSpec) private: class HasBitSetters; ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; ::flyteidl::core::TaskTemplate* template__; + ::flyteidl::admin::DescriptionEntity* description_; mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fadmin_2ftask_2eproto; }; @@ -1026,6 +1052,59 @@ inline void Task::set_allocated_closure(::flyteidl::admin::TaskClosure* closure) // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.Task.closure) } +// string short_description = 3; +inline void Task::clear_short_description() { + short_description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& Task::short_description() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.Task.short_description) + return short_description_.GetNoArena(); +} +inline void Task::set_short_description(const ::std::string& value) { + + short_description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.Task.short_description) +} +#if LANG_CXX11 +inline void Task::set_short_description(::std::string&& value) { + + short_description_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.Task.short_description) +} +#endif +inline void Task::set_short_description(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + short_description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.Task.short_description) +} +inline void Task::set_short_description(const char* value, size_t size) { + + short_description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.Task.short_description) +} +inline ::std::string* Task::mutable_short_description() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.Task.short_description) + return short_description_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* Task::release_short_description() { + // @@protoc_insertion_point(field_release:flyteidl.admin.Task.short_description) + + return short_description_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void Task::set_allocated_short_description(::std::string* short_description) { + if (short_description != nullptr) { + + } else { + + } + short_description_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), short_description); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.Task.short_description) +} + // ------------------------------------------------------------------- // TaskList @@ -1162,6 +1241,51 @@ inline void TaskSpec::set_allocated_template_(::flyteidl::core::TaskTemplate* te // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.TaskSpec.template) } +// .flyteidl.admin.DescriptionEntity description = 2; +inline bool TaskSpec::has_description() const { + return this != internal_default_instance() && description_ != nullptr; +} +inline const ::flyteidl::admin::DescriptionEntity& TaskSpec::description() const { + const ::flyteidl::admin::DescriptionEntity* p = description_; + // @@protoc_insertion_point(field_get:flyteidl.admin.TaskSpec.description) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_DescriptionEntity_default_instance_); +} +inline ::flyteidl::admin::DescriptionEntity* TaskSpec::release_description() { + // @@protoc_insertion_point(field_release:flyteidl.admin.TaskSpec.description) + + ::flyteidl::admin::DescriptionEntity* temp = description_; + description_ = nullptr; + return temp; +} +inline ::flyteidl::admin::DescriptionEntity* TaskSpec::mutable_description() { + + if (description_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::DescriptionEntity>(GetArenaNoVirtual()); + description_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.TaskSpec.description) + return description_; +} +inline void TaskSpec::set_allocated_description(::flyteidl::admin::DescriptionEntity* description) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(description_); + } + if (description) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + description = ::google::protobuf::internal::GetOwnedMessage( + message_arena, description, submessage_arena); + } + + } else { + + } + description_ = description; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.TaskSpec.description) +} + // ------------------------------------------------------------------- // TaskClosure diff --git a/flyteidl/gen/pb-cpp/flyteidl/admin/workflow.pb.cc b/flyteidl/gen/pb-cpp/flyteidl/admin/workflow.pb.cc index 09b61dd1887..dbe431e07d4 100644 --- a/flyteidl/gen/pb-cpp/flyteidl/admin/workflow.pb.cc +++ b/flyteidl/gen/pb-cpp/flyteidl/admin/workflow.pb.cc @@ -16,10 +16,11 @@ // @@protoc_insertion_point(includes) #include +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fdescription_5fentity_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_DescriptionEntity_flyteidl_2fadmin_2fdescription_5fentity_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_WorkflowErrorExistsDifferentStructure_flyteidl_2fadmin_2fworkflow_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_WorkflowErrorExistsIdenticalStructure_flyteidl_2fadmin_2fworkflow_2eproto; -extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_WorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_WorkflowClosure_flyteidl_2fadmin_2fworkflow_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_WorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_Workflow_flyteidl_2fadmin_2fworkflow_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fcompiler_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_CompiledWorkflowClosure_flyteidl_2fcore_2fcompiler_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fidentifier_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Identifier_flyteidl_2fcore_2fidentifier_2eproto; @@ -139,9 +140,10 @@ static void InitDefaultsWorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto() { ::flyteidl::admin::WorkflowSpec::InitAsDefaultInstance(); } -::google::protobuf::internal::SCCInfo<1> scc_info_WorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto = - {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsWorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto}, { - &scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto.base,}}; +::google::protobuf::internal::SCCInfo<2> scc_info_WorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsWorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto}, { + &scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto.base, + &scc_info_DescriptionEntity_flyteidl_2fadmin_2fdescription_5fentity_2eproto.base,}}; static void InitDefaultsWorkflowClosure_flyteidl_2fadmin_2fworkflow_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; @@ -241,6 +243,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fworkflow_2eproto ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Workflow, id_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Workflow, closure_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Workflow, short_description_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowList, _internal_metadata_), ~0u, // no _extensions_ @@ -255,6 +258,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fworkflow_2eproto ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowSpec, template__), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowSpec, sub_workflows_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowSpec, description_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowClosure, _internal_metadata_), ~0u, // no _extensions_ @@ -287,12 +291,12 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SE { 0, -1, sizeof(::flyteidl::admin::WorkflowCreateRequest)}, { 7, -1, sizeof(::flyteidl::admin::WorkflowCreateResponse)}, { 12, -1, sizeof(::flyteidl::admin::Workflow)}, - { 19, -1, sizeof(::flyteidl::admin::WorkflowList)}, - { 26, -1, sizeof(::flyteidl::admin::WorkflowSpec)}, - { 33, -1, sizeof(::flyteidl::admin::WorkflowClosure)}, - { 40, -1, sizeof(::flyteidl::admin::WorkflowErrorExistsDifferentStructure)}, - { 46, -1, sizeof(::flyteidl::admin::WorkflowErrorExistsIdenticalStructure)}, - { 52, -1, sizeof(::flyteidl::admin::CreateWorkflowFailureReason)}, + { 20, -1, sizeof(::flyteidl::admin::WorkflowList)}, + { 27, -1, sizeof(::flyteidl::admin::WorkflowSpec)}, + { 35, -1, sizeof(::flyteidl::admin::WorkflowClosure)}, + { 42, -1, sizeof(::flyteidl::admin::WorkflowErrorExistsDifferentStructure)}, + { 48, -1, sizeof(::flyteidl::admin::WorkflowErrorExistsIdenticalStructure)}, + { 54, -1, sizeof(::flyteidl::admin::CreateWorkflowFailureReason)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -317,49 +321,53 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2fworkflow_2eproto[] = "\n\035flyteidl/admin/workflow.proto\022\016flyteid" "l.admin\032\034flyteidl/core/compiler.proto\032\036f" "lyteidl/core/identifier.proto\032\034flyteidl/" - "core/workflow.proto\032\037google/protobuf/tim" - "estamp.proto\"j\n\025WorkflowCreateRequest\022%\n" - "\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\022*\n\004" - "spec\030\002 \001(\0132\034.flyteidl.admin.WorkflowSpec" - "\"\030\n\026WorkflowCreateResponse\"c\n\010Workflow\022%" - "\n\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\0220\n" - "\007closure\030\002 \001(\0132\037.flyteidl.admin.Workflow" - "Closure\"J\n\014WorkflowList\022+\n\tworkflows\030\001 \003" - "(\0132\030.flyteidl.admin.Workflow\022\r\n\005token\030\002 " - "\001(\t\"y\n\014WorkflowSpec\0221\n\010template\030\001 \001(\0132\037." - "flyteidl.core.WorkflowTemplate\0226\n\rsub_wo" - "rkflows\030\002 \003(\0132\037.flyteidl.core.WorkflowTe" - "mplate\"\204\001\n\017WorkflowClosure\022A\n\021compiled_w" - "orkflow\030\001 \001(\0132&.flyteidl.core.CompiledWo" - "rkflowClosure\022.\n\ncreated_at\030\002 \001(\0132\032.goog" - "le.protobuf.Timestamp\"N\n%WorkflowErrorEx" - "istsDifferentStructure\022%\n\002id\030\001 \001(\0132\031.fly" - "teidl.core.Identifier\"N\n%WorkflowErrorEx" - "istsIdenticalStructure\022%\n\002id\030\001 \001(\0132\031.fly" - "teidl.core.Identifier\"\341\001\n\033CreateWorkflow" - "FailureReason\022[\n\032exists_different_struct" - "ure\030\001 \001(\01325.flyteidl.admin.WorkflowError" - "ExistsDifferentStructureH\000\022[\n\032exists_ide" - "ntical_structure\030\002 \001(\01325.flyteidl.admin." - "WorkflowErrorExistsIdenticalStructureH\000B" - "\010\n\006reasonB7Z5github.com/flyteorg/flyteid" - "l/gen/pb-go/flyteidl/adminb\006proto3" + "core/workflow.proto\032\'flyteidl/admin/desc" + "ription_entity.proto\032\037google/protobuf/ti" + "mestamp.proto\"j\n\025WorkflowCreateRequest\022%" + "\n\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\022*\n" + "\004spec\030\002 \001(\0132\034.flyteidl.admin.WorkflowSpe" + "c\"\030\n\026WorkflowCreateResponse\"~\n\010Workflow\022" + "%\n\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\0220" + "\n\007closure\030\002 \001(\0132\037.flyteidl.admin.Workflo" + "wClosure\022\031\n\021short_description\030\003 \001(\t\"J\n\014W" + "orkflowList\022+\n\tworkflows\030\001 \003(\0132\030.flyteid" + "l.admin.Workflow\022\r\n\005token\030\002 \001(\t\"\261\001\n\014Work" + "flowSpec\0221\n\010template\030\001 \001(\0132\037.flyteidl.co" + "re.WorkflowTemplate\0226\n\rsub_workflows\030\002 \003" + "(\0132\037.flyteidl.core.WorkflowTemplate\0226\n\013d" + "escription\030\003 \001(\0132!.flyteidl.admin.Descri" + "ptionEntity\"\204\001\n\017WorkflowClosure\022A\n\021compi" + "led_workflow\030\001 \001(\0132&.flyteidl.core.Compi" + "ledWorkflowClosure\022.\n\ncreated_at\030\002 \001(\0132\032" + ".google.protobuf.Timestamp\"N\n%WorkflowEr" + "rorExistsDifferentStructure\022%\n\002id\030\001 \001(\0132" + "\031.flyteidl.core.Identifier\"N\n%WorkflowEr" + "rorExistsIdenticalStructure\022%\n\002id\030\001 \001(\0132" + "\031.flyteidl.core.Identifier\"\341\001\n\033CreateWor" + "kflowFailureReason\022[\n\032exists_different_s" + "tructure\030\001 \001(\01325.flyteidl.admin.Workflow" + "ErrorExistsDifferentStructureH\000\022[\n\032exist" + "s_identical_structure\030\002 \001(\01325.flyteidl.a" + "dmin.WorkflowErrorExistsIdenticalStructu" + "reH\000B\010\n\006reasonB7Z5github.com/flyteorg/fl" + "yteidl/gen/pb-go/flyteidl/adminb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2fworkflow_2eproto = { false, InitDefaults_flyteidl_2fadmin_2fworkflow_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2fworkflow_2eproto, - "flyteidl/admin/workflow.proto", &assign_descriptors_table_flyteidl_2fadmin_2fworkflow_2eproto, 1194, + "flyteidl/admin/workflow.proto", &assign_descriptors_table_flyteidl_2fadmin_2fworkflow_2eproto, 1319, }; void AddDescriptors_flyteidl_2fadmin_2fworkflow_2eproto() { - static constexpr ::google::protobuf::internal::InitFunc deps[4] = + static constexpr ::google::protobuf::internal::InitFunc deps[5] = { ::AddDescriptors_flyteidl_2fcore_2fcompiler_2eproto, ::AddDescriptors_flyteidl_2fcore_2fidentifier_2eproto, ::AddDescriptors_flyteidl_2fcore_2fworkflow_2eproto, + ::AddDescriptors_flyteidl_2fadmin_2fdescription_5fentity_2eproto, ::AddDescriptors_google_2fprotobuf_2ftimestamp_2eproto, }; - ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2fworkflow_2eproto, deps, 4); + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2fworkflow_2eproto, deps, 5); } // Force running AddDescriptors() at dynamic initialization time. @@ -968,6 +976,7 @@ void Workflow::clear_id() { #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int Workflow::kIdFieldNumber; const int Workflow::kClosureFieldNumber; +const int Workflow::kShortDescriptionFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 Workflow::Workflow() @@ -979,6 +988,10 @@ Workflow::Workflow(const Workflow& from) : ::google::protobuf::Message(), _internal_metadata_(nullptr) { _internal_metadata_.MergeFrom(from._internal_metadata_); + short_description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.short_description().size() > 0) { + short_description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.short_description_); + } if (from.has_id()) { id_ = new ::flyteidl::core::Identifier(*from.id_); } else { @@ -995,6 +1008,7 @@ Workflow::Workflow(const Workflow& from) void Workflow::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_Workflow_flyteidl_2fadmin_2fworkflow_2eproto.base); + short_description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); ::memset(&id_, 0, static_cast( reinterpret_cast(&closure_) - reinterpret_cast(&id_)) + sizeof(closure_)); @@ -1006,6 +1020,7 @@ Workflow::~Workflow() { } void Workflow::SharedDtor() { + short_description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete id_; if (this != internal_default_instance()) delete closure_; } @@ -1025,6 +1040,7 @@ void Workflow::Clear() { // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; + short_description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); if (GetArenaNoVirtual() == nullptr && id_ != nullptr) { delete id_; } @@ -1075,6 +1091,22 @@ const char* Workflow::_InternalParse(const char* begin, const char* end, void* o {parser_till_end, object}, ptr - size, ptr)); break; } + // string short_description = 3; + case 3: { + if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.Workflow.short_description"); + object = msg->mutable_short_description(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -1090,6 +1122,10 @@ const char* Workflow::_InternalParse(const char* begin, const char* end, void* o } // switch } // while return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; len_delim_till_end: return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, {parser_till_end, object}, size); @@ -1127,6 +1163,21 @@ bool Workflow::MergePartialFromCodedStream( break; } + // string short_description = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_short_description())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->short_description().data(), static_cast(this->short_description().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.Workflow.short_description")); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -1166,6 +1217,16 @@ void Workflow::SerializeWithCachedSizes( 2, HasBitSetters::closure(this), output); } + // string short_description = 3; + if (this->short_description().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->short_description().data(), static_cast(this->short_description().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.Workflow.short_description"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 3, this->short_description(), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -1193,6 +1254,17 @@ ::google::protobuf::uint8* Workflow::InternalSerializeWithCachedSizesToArray( 2, HasBitSetters::closure(this), target); } + // string short_description = 3; + if (this->short_description().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->short_description().data(), static_cast(this->short_description().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.Workflow.short_description"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 3, this->short_description(), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -1214,6 +1286,13 @@ size_t Workflow::ByteSizeLong() const { // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; + // string short_description = 3; + if (this->short_description().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->short_description()); + } + // .flyteidl.core.Identifier id = 1; if (this->has_id()) { total_size += 1 + @@ -1255,6 +1334,10 @@ void Workflow::MergeFrom(const Workflow& from) { ::google::protobuf::uint32 cached_has_bits = 0; (void) cached_has_bits; + if (from.short_description().size() > 0) { + + short_description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.short_description_); + } if (from.has_id()) { mutable_id()->::flyteidl::core::Identifier::MergeFrom(from.id()); } @@ -1288,6 +1371,8 @@ void Workflow::Swap(Workflow* other) { void Workflow::InternalSwap(Workflow* other) { using std::swap; _internal_metadata_.Swap(&other->_internal_metadata_); + short_description_.Swap(&other->short_description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); swap(id_, other->id_); swap(closure_, other->closure_); } @@ -1660,16 +1745,23 @@ ::google::protobuf::Metadata WorkflowList::GetMetadata() const { void WorkflowSpec::InitAsDefaultInstance() { ::flyteidl::admin::_WorkflowSpec_default_instance_._instance.get_mutable()->template__ = const_cast< ::flyteidl::core::WorkflowTemplate*>( ::flyteidl::core::WorkflowTemplate::internal_default_instance()); + ::flyteidl::admin::_WorkflowSpec_default_instance_._instance.get_mutable()->description_ = const_cast< ::flyteidl::admin::DescriptionEntity*>( + ::flyteidl::admin::DescriptionEntity::internal_default_instance()); } class WorkflowSpec::HasBitSetters { public: static const ::flyteidl::core::WorkflowTemplate& template_(const WorkflowSpec* msg); + static const ::flyteidl::admin::DescriptionEntity& description(const WorkflowSpec* msg); }; const ::flyteidl::core::WorkflowTemplate& WorkflowSpec::HasBitSetters::template_(const WorkflowSpec* msg) { return *msg->template__; } +const ::flyteidl::admin::DescriptionEntity& +WorkflowSpec::HasBitSetters::description(const WorkflowSpec* msg) { + return *msg->description_; +} void WorkflowSpec::clear_template_() { if (GetArenaNoVirtual() == nullptr && template__ != nullptr) { delete template__; @@ -1679,9 +1771,16 @@ void WorkflowSpec::clear_template_() { void WorkflowSpec::clear_sub_workflows() { sub_workflows_.Clear(); } +void WorkflowSpec::clear_description() { + if (GetArenaNoVirtual() == nullptr && description_ != nullptr) { + delete description_; + } + description_ = nullptr; +} #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int WorkflowSpec::kTemplateFieldNumber; const int WorkflowSpec::kSubWorkflowsFieldNumber; +const int WorkflowSpec::kDescriptionFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 WorkflowSpec::WorkflowSpec() @@ -1699,13 +1798,20 @@ WorkflowSpec::WorkflowSpec(const WorkflowSpec& from) } else { template__ = nullptr; } + if (from.has_description()) { + description_ = new ::flyteidl::admin::DescriptionEntity(*from.description_); + } else { + description_ = nullptr; + } // @@protoc_insertion_point(copy_constructor:flyteidl.admin.WorkflowSpec) } void WorkflowSpec::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_WorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto.base); - template__ = nullptr; + ::memset(&template__, 0, static_cast( + reinterpret_cast(&description_) - + reinterpret_cast(&template__)) + sizeof(description_)); } WorkflowSpec::~WorkflowSpec() { @@ -1715,6 +1821,7 @@ WorkflowSpec::~WorkflowSpec() { void WorkflowSpec::SharedDtor() { if (this != internal_default_instance()) delete template__; + if (this != internal_default_instance()) delete description_; } void WorkflowSpec::SetCachedSize(int size) const { @@ -1737,6 +1844,10 @@ void WorkflowSpec::Clear() { delete template__; } template__ = nullptr; + if (GetArenaNoVirtual() == nullptr && description_ != nullptr) { + delete description_; + } + description_ = nullptr; _internal_metadata_.Clear(); } @@ -1782,6 +1893,19 @@ const char* WorkflowSpec::_InternalParse(const char* begin, const char* end, voi } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1)); break; } + // .flyteidl.admin.DescriptionEntity description = 3; + case 3: { + if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::admin::DescriptionEntity::_InternalParse; + object = msg->mutable_description(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -1834,6 +1958,17 @@ bool WorkflowSpec::MergePartialFromCodedStream( break; } + // .flyteidl.admin.DescriptionEntity description = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_description())); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -1876,6 +2011,12 @@ void WorkflowSpec::SerializeWithCachedSizes( output); } + // .flyteidl.admin.DescriptionEntity description = 3; + if (this->has_description()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 3, HasBitSetters::description(this), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -1904,6 +2045,13 @@ ::google::protobuf::uint8* WorkflowSpec::InternalSerializeWithCachedSizesToArray 2, this->sub_workflows(static_cast(i)), target); } + // .flyteidl.admin.DescriptionEntity description = 3; + if (this->has_description()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 3, HasBitSetters::description(this), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -1943,6 +2091,13 @@ size_t WorkflowSpec::ByteSizeLong() const { *template__); } + // .flyteidl.admin.DescriptionEntity description = 3; + if (this->has_description()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *description_); + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -1974,6 +2129,9 @@ void WorkflowSpec::MergeFrom(const WorkflowSpec& from) { if (from.has_template_()) { mutable_template_()->::flyteidl::core::WorkflowTemplate::MergeFrom(from.template_()); } + if (from.has_description()) { + mutable_description()->::flyteidl::admin::DescriptionEntity::MergeFrom(from.description()); + } } void WorkflowSpec::CopyFrom(const ::google::protobuf::Message& from) { @@ -2003,6 +2161,7 @@ void WorkflowSpec::InternalSwap(WorkflowSpec* other) { _internal_metadata_.Swap(&other->_internal_metadata_); CastToBase(&sub_workflows_)->InternalSwap(CastToBase(&other->sub_workflows_)); swap(template__, other->template__); + swap(description_, other->description_); } ::google::protobuf::Metadata WorkflowSpec::GetMetadata() const { diff --git a/flyteidl/gen/pb-cpp/flyteidl/admin/workflow.pb.h b/flyteidl/gen/pb-cpp/flyteidl/admin/workflow.pb.h index 8cdffbda36c..ffed86790bc 100644 --- a/flyteidl/gen/pb-cpp/flyteidl/admin/workflow.pb.h +++ b/flyteidl/gen/pb-cpp/flyteidl/admin/workflow.pb.h @@ -34,6 +34,7 @@ #include "flyteidl/core/compiler.pb.h" #include "flyteidl/core/identifier.pb.h" #include "flyteidl/core/workflow.pb.h" +#include "flyteidl/admin/description_entity.pb.h" #include // @@protoc_insertion_point(includes) #include @@ -426,6 +427,20 @@ class Workflow final : // accessors ------------------------------------------------------- + // string short_description = 3; + void clear_short_description(); + static const int kShortDescriptionFieldNumber = 3; + const ::std::string& short_description() const; + void set_short_description(const ::std::string& value); + #if LANG_CXX11 + void set_short_description(::std::string&& value); + #endif + void set_short_description(const char* value); + void set_short_description(const char* value, size_t size); + ::std::string* mutable_short_description(); + ::std::string* release_short_description(); + void set_allocated_short_description(::std::string* short_description); + // .flyteidl.core.Identifier id = 1; bool has_id() const; void clear_id(); @@ -449,6 +464,7 @@ class Workflow final : class HasBitSetters; ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr short_description_; ::flyteidl::core::Identifier* id_; ::flyteidl::admin::WorkflowClosure* closure_; mutable ::google::protobuf::internal::CachedSize _cached_size_; @@ -705,6 +721,15 @@ class WorkflowSpec final : ::flyteidl::core::WorkflowTemplate* mutable_template_(); void set_allocated_template_(::flyteidl::core::WorkflowTemplate* template_); + // .flyteidl.admin.DescriptionEntity description = 3; + bool has_description() const; + void clear_description(); + static const int kDescriptionFieldNumber = 3; + const ::flyteidl::admin::DescriptionEntity& description() const; + ::flyteidl::admin::DescriptionEntity* release_description(); + ::flyteidl::admin::DescriptionEntity* mutable_description(); + void set_allocated_description(::flyteidl::admin::DescriptionEntity* description); + // @@protoc_insertion_point(class_scope:flyteidl.admin.WorkflowSpec) private: class HasBitSetters; @@ -712,6 +737,7 @@ class WorkflowSpec final : ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; ::google::protobuf::RepeatedPtrField< ::flyteidl::core::WorkflowTemplate > sub_workflows_; ::flyteidl::core::WorkflowTemplate* template__; + ::flyteidl::admin::DescriptionEntity* description_; mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fadmin_2fworkflow_2eproto; }; @@ -1424,6 +1450,59 @@ inline void Workflow::set_allocated_closure(::flyteidl::admin::WorkflowClosure* // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.Workflow.closure) } +// string short_description = 3; +inline void Workflow::clear_short_description() { + short_description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& Workflow::short_description() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.Workflow.short_description) + return short_description_.GetNoArena(); +} +inline void Workflow::set_short_description(const ::std::string& value) { + + short_description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.Workflow.short_description) +} +#if LANG_CXX11 +inline void Workflow::set_short_description(::std::string&& value) { + + short_description_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.Workflow.short_description) +} +#endif +inline void Workflow::set_short_description(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + short_description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.Workflow.short_description) +} +inline void Workflow::set_short_description(const char* value, size_t size) { + + short_description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.Workflow.short_description) +} +inline ::std::string* Workflow::mutable_short_description() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.Workflow.short_description) + return short_description_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* Workflow::release_short_description() { + // @@protoc_insertion_point(field_release:flyteidl.admin.Workflow.short_description) + + return short_description_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void Workflow::set_allocated_short_description(::std::string* short_description) { + if (short_description != nullptr) { + + } else { + + } + short_description_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), short_description); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.Workflow.short_description) +} + // ------------------------------------------------------------------- // WorkflowList @@ -1587,6 +1666,51 @@ WorkflowSpec::sub_workflows() const { return sub_workflows_; } +// .flyteidl.admin.DescriptionEntity description = 3; +inline bool WorkflowSpec::has_description() const { + return this != internal_default_instance() && description_ != nullptr; +} +inline const ::flyteidl::admin::DescriptionEntity& WorkflowSpec::description() const { + const ::flyteidl::admin::DescriptionEntity* p = description_; + // @@protoc_insertion_point(field_get:flyteidl.admin.WorkflowSpec.description) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_DescriptionEntity_default_instance_); +} +inline ::flyteidl::admin::DescriptionEntity* WorkflowSpec::release_description() { + // @@protoc_insertion_point(field_release:flyteidl.admin.WorkflowSpec.description) + + ::flyteidl::admin::DescriptionEntity* temp = description_; + description_ = nullptr; + return temp; +} +inline ::flyteidl::admin::DescriptionEntity* WorkflowSpec::mutable_description() { + + if (description_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::DescriptionEntity>(GetArenaNoVirtual()); + description_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.WorkflowSpec.description) + return description_; +} +inline void WorkflowSpec::set_allocated_description(::flyteidl::admin::DescriptionEntity* description) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(description_); + } + if (description) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + description = ::google::protobuf::internal::GetOwnedMessage( + message_arena, description, submessage_arena); + } + + } else { + + } + description_ = description; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.WorkflowSpec.description) +} + // ------------------------------------------------------------------- // WorkflowClosure diff --git a/flyteidl/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc b/flyteidl/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc index 3afa314dfcf..e3d019e881f 100644 --- a/flyteidl/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc +++ b/flyteidl/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc @@ -70,6 +70,8 @@ static const char* AdminService_method_names[] = { "/flyteidl.service.AdminService/GetNamedEntity", "/flyteidl.service.AdminService/UpdateNamedEntity", "/flyteidl.service.AdminService/GetVersion", + "/flyteidl.service.AdminService/GetDescriptionEntity", + "/flyteidl.service.AdminService/ListDescriptionEntities", }; std::unique_ptr< AdminService::Stub> AdminService::NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) { @@ -129,6 +131,8 @@ AdminService::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& chann , rpcmethod_GetNamedEntity_(AdminService_method_names[47], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_UpdateNamedEntity_(AdminService_method_names[48], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_GetVersion_(AdminService_method_names[49], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetDescriptionEntity_(AdminService_method_names[50], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_ListDescriptionEntities_(AdminService_method_names[51], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) {} ::grpc::Status AdminService::Stub::CreateTask(::grpc::ClientContext* context, const ::flyteidl::admin::TaskCreateRequest& request, ::flyteidl::admin::TaskCreateResponse* response) { @@ -1531,6 +1535,62 @@ ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::GetVersionResponse>* Admin return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::GetVersionResponse>::Create(channel_.get(), cq, rpcmethod_GetVersion_, context, request, false); } +::grpc::Status AdminService::Stub::GetDescriptionEntity(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::flyteidl::admin::DescriptionEntity* response) { + return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_GetDescriptionEntity_, context, request, response); +} + +void AdminService::Stub::experimental_async::GetDescriptionEntity(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_GetDescriptionEntity_, context, request, response, std::move(f)); +} + +void AdminService::Stub::experimental_async::GetDescriptionEntity(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntity* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_GetDescriptionEntity_, context, request, response, std::move(f)); +} + +void AdminService::Stub::experimental_async::GetDescriptionEntity(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_GetDescriptionEntity_, context, request, response, reactor); +} + +void AdminService::Stub::experimental_async::GetDescriptionEntity(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntity* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_GetDescriptionEntity_, context, request, response, reactor); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntity>* AdminService::Stub::AsyncGetDescriptionEntityRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::DescriptionEntity>::Create(channel_.get(), cq, rpcmethod_GetDescriptionEntity_, context, request, true); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntity>* AdminService::Stub::PrepareAsyncGetDescriptionEntityRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::DescriptionEntity>::Create(channel_.get(), cq, rpcmethod_GetDescriptionEntity_, context, request, false); +} + +::grpc::Status AdminService::Stub::ListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::flyteidl::admin::DescriptionEntityList* response) { + return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_ListDescriptionEntities_, context, request, response); +} + +void AdminService::Stub::experimental_async::ListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_ListDescriptionEntities_, context, request, response, std::move(f)); +} + +void AdminService::Stub::experimental_async::ListDescriptionEntities(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntityList* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_ListDescriptionEntities_, context, request, response, std::move(f)); +} + +void AdminService::Stub::experimental_async::ListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_ListDescriptionEntities_, context, request, response, reactor); +} + +void AdminService::Stub::experimental_async::ListDescriptionEntities(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntityList* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_ListDescriptionEntities_, context, request, response, reactor); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntityList>* AdminService::Stub::AsyncListDescriptionEntitiesRaw(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::DescriptionEntityList>::Create(channel_.get(), cq, rpcmethod_ListDescriptionEntities_, context, request, true); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntityList>* AdminService::Stub::PrepareAsyncListDescriptionEntitiesRaw(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::DescriptionEntityList>::Create(channel_.get(), cq, rpcmethod_ListDescriptionEntities_, context, request, false); +} + AdminService::Service::Service() { AddMethod(new ::grpc::internal::RpcServiceMethod( AdminService_method_names[0], @@ -1782,6 +1842,16 @@ AdminService::Service::Service() { ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::GetVersionRequest, ::flyteidl::admin::GetVersionResponse>( std::mem_fn(&AdminService::Service::GetVersion), this))); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AdminService_method_names[50], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::ObjectGetRequest, ::flyteidl::admin::DescriptionEntity>( + std::mem_fn(&AdminService::Service::GetDescriptionEntity), this))); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AdminService_method_names[51], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::DescriptionEntityListRequest, ::flyteidl::admin::DescriptionEntityList>( + std::mem_fn(&AdminService::Service::ListDescriptionEntities), this))); } AdminService::Service::~Service() { @@ -2137,6 +2207,20 @@ ::grpc::Status AdminService::Service::GetVersion(::grpc::ServerContext* context, return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } +::grpc::Status AdminService::Service::GetDescriptionEntity(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response) { + (void) context; + (void) request; + (void) response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); +} + +::grpc::Status AdminService::Service::ListDescriptionEntities(::grpc::ServerContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response) { + (void) context; + (void) request; + (void) response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); +} + } // namespace flyteidl } // namespace service diff --git a/flyteidl/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h b/flyteidl/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h index ae89f5ab121..57ff8aa599c 100644 --- a/flyteidl/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h +++ b/flyteidl/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h @@ -455,6 +455,22 @@ class AdminService final { std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::GetVersionResponse>> PrepareAsyncGetVersion(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::GetVersionResponse>>(PrepareAsyncGetVersionRaw(context, request, cq)); } + // Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object. + virtual ::grpc::Status GetDescriptionEntity(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::flyteidl::admin::DescriptionEntity* response) = 0; + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntity>> AsyncGetDescriptionEntity(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntity>>(AsyncGetDescriptionEntityRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntity>> PrepareAsyncGetDescriptionEntity(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntity>>(PrepareAsyncGetDescriptionEntityRaw(context, request, cq)); + } + // Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. + virtual ::grpc::Status ListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::flyteidl::admin::DescriptionEntityList* response) = 0; + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntityList>> AsyncListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntityList>>(AsyncListDescriptionEntitiesRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntityList>> PrepareAsyncListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntityList>>(PrepareAsyncListDescriptionEntitiesRaw(context, request, cq)); + } class experimental_async_interface { public: virtual ~experimental_async_interface() {} @@ -713,6 +729,16 @@ class AdminService final { virtual void GetVersion(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::GetVersionResponse* response, std::function) = 0; virtual void GetVersion(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest* request, ::flyteidl::admin::GetVersionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; virtual void GetVersion(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::GetVersionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + // Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object. + virtual void GetDescriptionEntity(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response, std::function) = 0; + virtual void GetDescriptionEntity(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntity* response, std::function) = 0; + virtual void GetDescriptionEntity(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + virtual void GetDescriptionEntity(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntity* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + // Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. + virtual void ListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response, std::function) = 0; + virtual void ListDescriptionEntities(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntityList* response, std::function) = 0; + virtual void ListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + virtual void ListDescriptionEntities(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntityList* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; }; virtual class experimental_async_interface* experimental_async() { return nullptr; } private: @@ -816,6 +842,10 @@ class AdminService final { virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::NamedEntityUpdateResponse>* PrepareAsyncUpdateNamedEntityRaw(::grpc::ClientContext* context, const ::flyteidl::admin::NamedEntityUpdateRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::GetVersionResponse>* AsyncGetVersionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::GetVersionResponse>* PrepareAsyncGetVersionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntity>* AsyncGetDescriptionEntityRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntity>* PrepareAsyncGetDescriptionEntityRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntityList>* AsyncListDescriptionEntitiesRaw(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntityList>* PrepareAsyncListDescriptionEntitiesRaw(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) = 0; }; class Stub final : public StubInterface { public: @@ -1170,6 +1200,20 @@ class AdminService final { std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::GetVersionResponse>> PrepareAsyncGetVersion(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::GetVersionResponse>>(PrepareAsyncGetVersionRaw(context, request, cq)); } + ::grpc::Status GetDescriptionEntity(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::flyteidl::admin::DescriptionEntity* response) override; + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntity>> AsyncGetDescriptionEntity(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntity>>(AsyncGetDescriptionEntityRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntity>> PrepareAsyncGetDescriptionEntity(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntity>>(PrepareAsyncGetDescriptionEntityRaw(context, request, cq)); + } + ::grpc::Status ListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::flyteidl::admin::DescriptionEntityList* response) override; + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntityList>> AsyncListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntityList>>(AsyncListDescriptionEntitiesRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntityList>> PrepareAsyncListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntityList>>(PrepareAsyncListDescriptionEntitiesRaw(context, request, cq)); + } class experimental_async final : public StubInterface::experimental_async_interface { public: @@ -1373,6 +1417,14 @@ class AdminService final { void GetVersion(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::GetVersionResponse* response, std::function) override; void GetVersion(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest* request, ::flyteidl::admin::GetVersionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; void GetVersion(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::GetVersionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void GetDescriptionEntity(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response, std::function) override; + void GetDescriptionEntity(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntity* response, std::function) override; + void GetDescriptionEntity(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void GetDescriptionEntity(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntity* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void ListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response, std::function) override; + void ListDescriptionEntities(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntityList* response, std::function) override; + void ListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void ListDescriptionEntities(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntityList* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; private: friend class Stub; explicit experimental_async(Stub* stub): stub_(stub) { } @@ -1484,6 +1536,10 @@ class AdminService final { ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::NamedEntityUpdateResponse>* PrepareAsyncUpdateNamedEntityRaw(::grpc::ClientContext* context, const ::flyteidl::admin::NamedEntityUpdateRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::GetVersionResponse>* AsyncGetVersionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::GetVersionResponse>* PrepareAsyncGetVersionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntity>* AsyncGetDescriptionEntityRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntity>* PrepareAsyncGetDescriptionEntityRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntityList>* AsyncListDescriptionEntitiesRaw(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntityList>* PrepareAsyncListDescriptionEntitiesRaw(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) override; const ::grpc::internal::RpcMethod rpcmethod_CreateTask_; const ::grpc::internal::RpcMethod rpcmethod_GetTask_; const ::grpc::internal::RpcMethod rpcmethod_ListTaskIds_; @@ -1534,6 +1590,8 @@ class AdminService final { const ::grpc::internal::RpcMethod rpcmethod_GetNamedEntity_; const ::grpc::internal::RpcMethod rpcmethod_UpdateNamedEntity_; const ::grpc::internal::RpcMethod rpcmethod_GetVersion_; + const ::grpc::internal::RpcMethod rpcmethod_GetDescriptionEntity_; + const ::grpc::internal::RpcMethod rpcmethod_ListDescriptionEntities_; }; static std::unique_ptr NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions()); @@ -1646,6 +1704,10 @@ class AdminService final { // Updates a :ref:`ref_flyteidl.admin.NamedEntity` object. virtual ::grpc::Status UpdateNamedEntity(::grpc::ServerContext* context, const ::flyteidl::admin::NamedEntityUpdateRequest* request, ::flyteidl::admin::NamedEntityUpdateResponse* response); virtual ::grpc::Status GetVersion(::grpc::ServerContext* context, const ::flyteidl::admin::GetVersionRequest* request, ::flyteidl::admin::GetVersionResponse* response); + // Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object. + virtual ::grpc::Status GetDescriptionEntity(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response); + // Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. + virtual ::grpc::Status ListDescriptionEntities(::grpc::ServerContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response); }; template class WithAsyncMethod_CreateTask : public BaseClass { @@ -2647,7 +2709,47 @@ class AdminService final { ::grpc::Service::RequestAsyncUnary(49, context, request, response, new_call_cq, notification_cq, tag); } }; - typedef WithAsyncMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > AsyncService; + template + class WithAsyncMethod_GetDescriptionEntity : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithAsyncMethod_GetDescriptionEntity() { + ::grpc::Service::MarkMethodAsync(50); + } + ~WithAsyncMethod_GetDescriptionEntity() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetDescriptionEntity(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestGetDescriptionEntity(::grpc::ServerContext* context, ::flyteidl::admin::ObjectGetRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::DescriptionEntity>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(50, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_ListDescriptionEntities : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithAsyncMethod_ListDescriptionEntities() { + ::grpc::Service::MarkMethodAsync(51); + } + ~WithAsyncMethod_ListDescriptionEntities() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ListDescriptionEntities(::grpc::ServerContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestListDescriptionEntities(::grpc::ServerContext* context, ::flyteidl::admin::DescriptionEntityListRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::DescriptionEntityList>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(51, context, request, response, new_call_cq, notification_cq, tag); + } + }; + typedef WithAsyncMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > AsyncService; template class ExperimentalWithCallbackMethod_CreateTask : public BaseClass { private: @@ -4198,7 +4300,69 @@ class AdminService final { } virtual void GetVersion(::grpc::ServerContext* context, const ::flyteidl::admin::GetVersionRequest* request, ::flyteidl::admin::GetVersionResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; - typedef ExperimentalWithCallbackMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ExperimentalCallbackService; + template + class ExperimentalWithCallbackMethod_GetDescriptionEntity : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithCallbackMethod_GetDescriptionEntity() { + ::grpc::Service::experimental().MarkMethodCallback(50, + new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ObjectGetRequest, ::flyteidl::admin::DescriptionEntity>( + [this](::grpc::ServerContext* context, + const ::flyteidl::admin::ObjectGetRequest* request, + ::flyteidl::admin::DescriptionEntity* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + return this->GetDescriptionEntity(context, request, response, controller); + })); + } + void SetMessageAllocatorFor_GetDescriptionEntity( + ::grpc::experimental::MessageAllocator< ::flyteidl::admin::ObjectGetRequest, ::flyteidl::admin::DescriptionEntity>* allocator) { + static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ObjectGetRequest, ::flyteidl::admin::DescriptionEntity>*>( + ::grpc::Service::experimental().GetHandler(50)) + ->SetMessageAllocator(allocator); + } + ~ExperimentalWithCallbackMethod_GetDescriptionEntity() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetDescriptionEntity(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void GetDescriptionEntity(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template + class ExperimentalWithCallbackMethod_ListDescriptionEntities : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithCallbackMethod_ListDescriptionEntities() { + ::grpc::Service::experimental().MarkMethodCallback(51, + new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::DescriptionEntityListRequest, ::flyteidl::admin::DescriptionEntityList>( + [this](::grpc::ServerContext* context, + const ::flyteidl::admin::DescriptionEntityListRequest* request, + ::flyteidl::admin::DescriptionEntityList* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + return this->ListDescriptionEntities(context, request, response, controller); + })); + } + void SetMessageAllocatorFor_ListDescriptionEntities( + ::grpc::experimental::MessageAllocator< ::flyteidl::admin::DescriptionEntityListRequest, ::flyteidl::admin::DescriptionEntityList>* allocator) { + static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::DescriptionEntityListRequest, ::flyteidl::admin::DescriptionEntityList>*>( + ::grpc::Service::experimental().GetHandler(51)) + ->SetMessageAllocator(allocator); + } + ~ExperimentalWithCallbackMethod_ListDescriptionEntities() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ListDescriptionEntities(::grpc::ServerContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void ListDescriptionEntities(::grpc::ServerContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + typedef ExperimentalWithCallbackMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ExperimentalCallbackService; template class WithGenericMethod_CreateTask : public BaseClass { private: @@ -5050,6 +5214,40 @@ class AdminService final { } }; template + class WithGenericMethod_GetDescriptionEntity : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithGenericMethod_GetDescriptionEntity() { + ::grpc::Service::MarkMethodGeneric(50); + } + ~WithGenericMethod_GetDescriptionEntity() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetDescriptionEntity(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_ListDescriptionEntities : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithGenericMethod_ListDescriptionEntities() { + ::grpc::Service::MarkMethodGeneric(51); + } + ~WithGenericMethod_ListDescriptionEntities() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ListDescriptionEntities(::grpc::ServerContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template class WithRawMethod_CreateTask : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} @@ -6050,6 +6248,46 @@ class AdminService final { } }; template + class WithRawMethod_GetDescriptionEntity : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithRawMethod_GetDescriptionEntity() { + ::grpc::Service::MarkMethodRaw(50); + } + ~WithRawMethod_GetDescriptionEntity() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetDescriptionEntity(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestGetDescriptionEntity(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(50, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_ListDescriptionEntities : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithRawMethod_ListDescriptionEntities() { + ::grpc::Service::MarkMethodRaw(51); + } + ~WithRawMethod_ListDescriptionEntities() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ListDescriptionEntities(::grpc::ServerContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestListDescriptionEntities(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(51, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template class ExperimentalWithRawCallbackMethod_CreateTask : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} @@ -7300,6 +7538,56 @@ class AdminService final { virtual void GetVersion(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; template + class ExperimentalWithRawCallbackMethod_GetDescriptionEntity : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithRawCallbackMethod_GetDescriptionEntity() { + ::grpc::Service::experimental().MarkMethodRawCallback(50, + new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( + [this](::grpc::ServerContext* context, + const ::grpc::ByteBuffer* request, + ::grpc::ByteBuffer* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + this->GetDescriptionEntity(context, request, response, controller); + })); + } + ~ExperimentalWithRawCallbackMethod_GetDescriptionEntity() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetDescriptionEntity(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void GetDescriptionEntity(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template + class ExperimentalWithRawCallbackMethod_ListDescriptionEntities : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithRawCallbackMethod_ListDescriptionEntities() { + ::grpc::Service::experimental().MarkMethodRawCallback(51, + new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( + [this](::grpc::ServerContext* context, + const ::grpc::ByteBuffer* request, + ::grpc::ByteBuffer* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + this->ListDescriptionEntities(context, request, response, controller); + })); + } + ~ExperimentalWithRawCallbackMethod_ListDescriptionEntities() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ListDescriptionEntities(::grpc::ServerContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void ListDescriptionEntities(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template class WithStreamedUnaryMethod_CreateTask : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} @@ -8299,9 +8587,49 @@ class AdminService final { // replace default version of method with streamed unary virtual ::grpc::Status StreamedGetVersion(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::admin::GetVersionRequest,::flyteidl::admin::GetVersionResponse>* server_unary_streamer) = 0; }; - typedef WithStreamedUnaryMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedUnaryService; + template + class WithStreamedUnaryMethod_GetDescriptionEntity : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithStreamedUnaryMethod_GetDescriptionEntity() { + ::grpc::Service::MarkMethodStreamed(50, + new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::ObjectGetRequest, ::flyteidl::admin::DescriptionEntity>(std::bind(&WithStreamedUnaryMethod_GetDescriptionEntity::StreamedGetDescriptionEntity, this, std::placeholders::_1, std::placeholders::_2))); + } + ~WithStreamedUnaryMethod_GetDescriptionEntity() override { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status GetDescriptionEntity(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedGetDescriptionEntity(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::admin::ObjectGetRequest,::flyteidl::admin::DescriptionEntity>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_ListDescriptionEntities : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithStreamedUnaryMethod_ListDescriptionEntities() { + ::grpc::Service::MarkMethodStreamed(51, + new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::DescriptionEntityListRequest, ::flyteidl::admin::DescriptionEntityList>(std::bind(&WithStreamedUnaryMethod_ListDescriptionEntities::StreamedListDescriptionEntities, this, std::placeholders::_1, std::placeholders::_2))); + } + ~WithStreamedUnaryMethod_ListDescriptionEntities() override { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status ListDescriptionEntities(::grpc::ServerContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedListDescriptionEntities(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::admin::DescriptionEntityListRequest,::flyteidl::admin::DescriptionEntityList>* server_unary_streamer) = 0; + }; + typedef WithStreamedUnaryMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedUnaryService; typedef Service SplitStreamedService; - typedef WithStreamedUnaryMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedService; + typedef WithStreamedUnaryMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedService; }; } // namespace service diff --git a/flyteidl/gen/pb-cpp/flyteidl/service/admin.pb.cc b/flyteidl/gen/pb-cpp/flyteidl/service/admin.pb.cc index 39edd46135e..83674b56f17 100644 --- a/flyteidl/gen/pb-cpp/flyteidl/service/admin.pb.cc +++ b/flyteidl/gen/pb-cpp/flyteidl/service/admin.pb.cc @@ -51,371 +51,388 @@ const char descriptor_table_protodef_flyteidl_2fservice_2fadmin_2eproto[] = "dl/admin/node_execution.proto\032#flyteidl/" "admin/task_execution.proto\032\034flyteidl/adm" "in/version.proto\032\033flyteidl/admin/common." - "proto\032,protoc-gen-swagger/options/annota" - "tions.proto2\202n\n\014AdminService\022\305\002\n\nCreateT" - "ask\022!.flyteidl.admin.TaskCreateRequest\032\"" - ".flyteidl.admin.TaskCreateResponse\"\357\001\202\323\344" - "\223\002\022\"\r/api/v1/tasks:\001*\222A\323\001\032&Create and re" - "gister a task definition.JB\n\003400\022;\n9Retu" + "proto\032\'flyteidl/admin/description_entity" + ".proto\032\036flyteidl/core/identifier.proto\032," + "protoc-gen-swagger/options/annotations.p" + "roto2\342r\n\014AdminService\022\305\002\n\nCreateTask\022!.f" + "lyteidl.admin.TaskCreateRequest\032\".flytei" + "dl.admin.TaskCreateResponse\"\357\001\202\323\344\223\002\022\"\r/a" + "pi/v1/tasks:\001*\222A\323\001\032&Create and register " + "a task definition.JB\n\003400\022;\n9Returned fo" + "r bad request that may have failed valid" + "ation.Je\n\003409\022^\n\\Returned for a request " + "that references an identical entity that" + " has already been registered.\022\262\001\n\007GetTas" + "k\022 .flyteidl.admin.ObjectGetRequest\032\024.fl" + "yteidl.admin.Task\"o\202\323\344\223\002\?\022=/api/v1/tasks" + "/{id.project}/{id.domain}/{id.name}/{id." + "version}\222A\'\032%Retrieve an existing task d" + "efinition.\022\336\001\n\013ListTaskIds\0220.flyteidl.ad" + "min.NamedEntityIdentifierListRequest\032).f" + "lyteidl.admin.NamedEntityIdentifierList\"" + "r\202\323\344\223\002%\022#/api/v1/task_ids/{project}/{dom" + "ain}\222AD\032BFetch existing task definition " + "identifiers matching input filters.\022\353\001\n\t" + "ListTasks\022#.flyteidl.admin.ResourceListR" + "equest\032\030.flyteidl.admin.TaskList\"\236\001\202\323\344\223\002" + "\\\0220/api/v1/tasks/{id.project}/{id.domain" + "}/{id.name}Z(\022&/api/v1/tasks/{id.project" + "}/{id.domain}\222A9\0327Fetch existing task de" + "finitions matching input filters.\022\331\002\n\016Cr" + "eateWorkflow\022%.flyteidl.admin.WorkflowCr" + "eateRequest\032&.flyteidl.admin.WorkflowCre" + "ateResponse\"\367\001\202\323\344\223\002\026\"\021/api/v1/workflows:" + "\001*\222A\327\001\032*Create and register a workflow d" + "efinition.JB\n\003400\022;\n9Returned for bad re" + "quest that may have failed validation.Je" + "\n\003409\022^\n\\Returned for a request that ref" + "erences an identical entity that has alr" + "eady been registered.\022\302\001\n\013GetWorkflow\022 ." + "flyteidl.admin.ObjectGetRequest\032\030.flytei" + "dl.admin.Workflow\"w\202\323\344\223\002C\022A/api/v1/workf" + "lows/{id.project}/{id.domain}/{id.name}/" + "{id.version}\222A+\032)Retrieve an existing wo" + "rkflow definition.\022\355\001\n\017ListWorkflowIds\0220" + ".flyteidl.admin.NamedEntityIdentifierLis" + "tRequest\032).flyteidl.admin.NamedEntityIde" + "ntifierList\"}\202\323\344\223\002)\022\'/api/v1/workflow_id" + "s/{project}/{domain}\222AK\032IFetch an existi" + "ng workflow definition identifiers match" + "ing input filters.\022\377\001\n\rListWorkflows\022#.f" + "lyteidl.admin.ResourceListRequest\032\034.flyt" + "eidl.admin.WorkflowList\"\252\001\202\323\344\223\002d\0224/api/v" + "1/workflows/{id.project}/{id.domain}/{id" + ".name}Z,\022*/api/v1/workflows/{id.project}" + "/{id.domain}\222A=\032;Fetch existing workflow" + " definitions matching input filters.\022\345\002\n" + "\020CreateLaunchPlan\022\'.flyteidl.admin.Launc" + "hPlanCreateRequest\032(.flyteidl.admin.Laun" + "chPlanCreateResponse\"\375\001\202\323\344\223\002\031\"\024/api/v1/l" + "aunch_plans:\001*\222A\332\001\032-Create and register " + "a launch plan definition.JB\n\003400\022;\n9Retu" "rned for bad request that may have faile" "d validation.Je\n\003409\022^\n\\Returned for a r" "equest that references an identical enti" - "ty that has already been registered.\022\262\001\n" - "\007GetTask\022 .flyteidl.admin.ObjectGetReque" - "st\032\024.flyteidl.admin.Task\"o\202\323\344\223\002\?\022=/api/v" - "1/tasks/{id.project}/{id.domain}/{id.nam" - "e}/{id.version}\222A\'\032%Retrieve an existing" - " task definition.\022\336\001\n\013ListTaskIds\0220.flyt" - "eidl.admin.NamedEntityIdentifierListRequ" - "est\032).flyteidl.admin.NamedEntityIdentifi" - "erList\"r\202\323\344\223\002%\022#/api/v1/task_ids/{projec" - "t}/{domain}\222AD\032BFetch existing task defi" - "nition identifiers matching input filter" - "s.\022\353\001\n\tListTasks\022#.flyteidl.admin.Resour" - "ceListRequest\032\030.flyteidl.admin.TaskList\"" - "\236\001\202\323\344\223\002\\\0220/api/v1/tasks/{id.project}/{id" - ".domain}/{id.name}Z(\022&/api/v1/tasks/{id." - "project}/{id.domain}\222A9\0327Fetch existing " - "task definitions matching input filters." - "\022\331\002\n\016CreateWorkflow\022%.flyteidl.admin.Wor" - "kflowCreateRequest\032&.flyteidl.admin.Work" - "flowCreateResponse\"\367\001\202\323\344\223\002\026\"\021/api/v1/wor" - "kflows:\001*\222A\327\001\032*Create and register a wor" - "kflow definition.JB\n\003400\022;\n9Returned for" - " bad request that may have failed valida" - "tion.Je\n\003409\022^\n\\Returned for a request t" - "hat references an identical entity that " - "has already been registered.\022\302\001\n\013GetWork" - "flow\022 .flyteidl.admin.ObjectGetRequest\032\030" - ".flyteidl.admin.Workflow\"w\202\323\344\223\002C\022A/api/v" - "1/workflows/{id.project}/{id.domain}/{id" - ".name}/{id.version}\222A+\032)Retrieve an exis" - "ting workflow definition.\022\355\001\n\017ListWorkfl" - "owIds\0220.flyteidl.admin.NamedEntityIdenti" - "fierListRequest\032).flyteidl.admin.NamedEn" - "tityIdentifierList\"}\202\323\344\223\002)\022\'/api/v1/work" - "flow_ids/{project}/{domain}\222AK\032IFetch an" - " existing workflow definition identifier" - "s matching input filters.\022\377\001\n\rListWorkfl" - "ows\022#.flyteidl.admin.ResourceListRequest" - "\032\034.flyteidl.admin.WorkflowList\"\252\001\202\323\344\223\002d\022" - "4/api/v1/workflows/{id.project}/{id.doma" - "in}/{id.name}Z,\022*/api/v1/workflows/{id.p" - "roject}/{id.domain}\222A=\032;Fetch existing w" - "orkflow definitions matching input filte" - "rs.\022\345\002\n\020CreateLaunchPlan\022\'.flyteidl.admi" - "n.LaunchPlanCreateRequest\032(.flyteidl.adm" - "in.LaunchPlanCreateResponse\"\375\001\202\323\344\223\002\031\"\024/a" - "pi/v1/launch_plans:\001*\222A\332\001\032-Create and re" - "gister a launch plan definition.JB\n\003400\022" - ";\n9Returned for bad request that may hav" - "e failed validation.Je\n\003409\022^\n\\Returned " - "for a request that references an identic" - "al entity that has already been register" - "ed.\022\314\001\n\rGetLaunchPlan\022 .flyteidl.admin.O" - "bjectGetRequest\032\032.flyteidl.admin.LaunchP" - "lan\"}\202\323\344\223\002F\022D/api/v1/launch_plans/{id.pr" - "oject}/{id.domain}/{id.name}/{id.version" - "}\222A.\032,Retrieve an existing launch plan d" - "efinition.\022\363\001\n\023GetActiveLaunchPlan\022\'.fly" - "teidl.admin.ActiveLaunchPlanRequest\032\032.fl" - "yteidl.admin.LaunchPlan\"\226\001\202\323\344\223\002@\022>/api/v" - "1/active_launch_plans/{id.project}/{id.d" - "omain}/{id.name}\222AM\032KRetrieve the active" - " launch plan version specified by input " - "request filters.\022\353\001\n\025ListActiveLaunchPla" - "ns\022+.flyteidl.admin.ActiveLaunchPlanList" - "Request\032\036.flyteidl.admin.LaunchPlanList\"" - "\204\001\202\323\344\223\0020\022./api/v1/active_launch_plans/{p" - "roject}/{domain}\222AK\032IFetch the active la" - "unch plan versions specified by input re" - "quest filters.\022\363\001\n\021ListLaunchPlanIds\0220.f" - "lyteidl.admin.NamedEntityIdentifierListR" - "equest\032).flyteidl.admin.NamedEntityIdent" - "ifierList\"\200\001\202\323\344\223\002,\022*/api/v1/launch_plan_" - "ids/{project}/{domain}\222AK\032IFetch existin" - "g launch plan definition identifiers mat" - "ching input filters.\022\214\002\n\017ListLaunchPlans" - "\022#.flyteidl.admin.ResourceListRequest\032\036." - "flyteidl.admin.LaunchPlanList\"\263\001\202\323\344\223\002j\0227" - "/api/v1/launch_plans/{id.project}/{id.do" - "main}/{id.name}Z/\022-/api/v1/launch_plans/" - "{id.project}/{id.domain}\222A@\032>Fetch exist" - "ing launch plan definitions matching inp" - "ut filters.\022\300\006\n\020UpdateLaunchPlan\022\'.flyte" - "idl.admin.LaunchPlanUpdateRequest\032(.flyt" - "eidl.admin.LaunchPlanUpdateResponse\"\330\005\202\323" - "\344\223\002I\032D/api/v1/launch_plans/{id.project}/" - "{id.domain}/{id.name}/{id.version}:\001*\222A\205" - "\005\032\202\005Update the status of an existing lau" - "nch plan definition. At most one launch " - "plan version for a given {project, domai" - "n, name} can be active at a time. If thi" - "s call sets a launch plan to active and " - "existing version is already active, the " - "result of this call will be that the for" - "merly active launch plan will be made in" - "active and specified launch plan in this" - " request will be made active. In the eve" - "nt that the formerly active launch plan " - "had a schedule associated it with it, th" - "is schedule will be disabled. If the ref" - "erence launch plan in this request is be" - "ing set to active and has a schedule ass" - "ociated with it, the schedule will be en" - "abled.\022\242\001\n\017CreateExecution\022&.flyteidl.ad" - "min.ExecutionCreateRequest\032\'.flyteidl.ad" - "min.ExecutionCreateResponse\">\202\323\344\223\002\027\"\022/ap" - "i/v1/executions:\001*\222A\036\032\034Create a workflow" - " execution.\022\261\001\n\021RelaunchExecution\022(.flyt" - "eidl.admin.ExecutionRelaunchRequest\032\'.fl" - "yteidl.admin.ExecutionCreateResponse\"I\202\323" - "\344\223\002 \"\033/api/v1/executions/relaunch:\001*\222A \032" - "\036Relaunch a workflow execution.\022\235\005\n\020Reco" - "verExecution\022\'.flyteidl.admin.ExecutionR" - "ecoverRequest\032\'.flyteidl.admin.Execution" - "CreateResponse\"\266\004\202\323\344\223\002\037\"\032/api/v1/executi" - "ons/recover:\001*\222A\215\004\032\212\004Recreates a previou" - "sly-run workflow execution that will onl" - "y start executing from the last known fa" - "ilure point. In Recover mode, users cann" - "ot change any input parameters or update" - " the version of the execution. This is e" - "xtremely useful to recover from system e" - "rrors and byzantine faults like - Loss o" - "f K8s cluster, bugs in platform or insta" - "bility, machine failures, downstream sys" - "tem failures (downstream services), or s" - "imply to recover executions that failed " - "because of retry exhaustion and should c" - "omplete if tried again.\022\302\001\n\014GetExecution" - "\022+.flyteidl.admin.WorkflowExecutionGetRe" - "quest\032\031.flyteidl.admin.Execution\"j\202\323\344\223\0027" - "\0225/api/v1/executions/{id.project}/{id.do" - "main}/{id.name}\222A*\032(Retrieve an existing" - " workflow execution.\022\326\001\n\017UpdateExecution" - "\022&.flyteidl.admin.ExecutionUpdateRequest" - "\032\'.flyteidl.admin.ExecutionUpdateRespons" - "e\"r\202\323\344\223\002:\0325/api/v1/executions/{id.projec" - "t}/{id.domain}/{id.name}:\001*\222A/\032-Update e" - "xecution belonging to project domain.\022\202\002" - "\n\020GetExecutionData\022/.flyteidl.admin.Work" - "flowExecutionGetDataRequest\0320.flyteidl.a" - "dmin.WorkflowExecutionGetDataResponse\"\212\001" - "\202\323\344\223\002<\022:/api/v1/data/executions/{id.proj" - "ect}/{id.domain}/{id.name}\222AE\032CRetrieve " - "input and output data from an existing w" - "orkflow execution.\022\310\001\n\016ListExecutions\022#." - "flyteidl.admin.ResourceListRequest\032\035.fly" - "teidl.admin.ExecutionList\"r\202\323\344\223\002-\022+/api/" - "v1/executions/{id.project}/{id.domain}\222A" - "<\032:Fetch existing workflow executions ma" - "tching input filters.\022\364\001\n\022TerminateExecu" - "tion\022).flyteidl.admin.ExecutionTerminate" - "Request\032*.flyteidl.admin.ExecutionTermin" - "ateResponse\"\206\001\202\323\344\223\002:*5/api/v1/executions" - "/{id.project}/{id.domain}/{id.name}:\001*\222A" - "C\032ATerminate the active workflow executi" - "on specified in the request.\022\374\001\n\020GetNode" - "Execution\022\'.flyteidl.admin.NodeExecution" - "GetRequest\032\035.flyteidl.admin.NodeExecutio" - "n\"\237\001\202\323\344\223\002p\022n/api/v1/node_executions/{id." - "execution_id.project}/{id.execution_id.d" - "omain}/{id.execution_id.name}/{id.node_i" - "d}\222A&\032$Retrieve an existing node executi" - "on.\022\232\002\n\022ListNodeExecutions\022(.flyteidl.ad" - "min.NodeExecutionListRequest\032!.flyteidl." - "admin.NodeExecutionList\"\266\001\202\323\344\223\002u\022s/api/v" - "1/node_executions/{workflow_execution_id" - ".project}/{workflow_execution_id.domain}" - "/{workflow_execution_id.name}\222A8\0326Fetch " - "existing node executions matching input " - "filters.\022\357\004\n\031ListNodeExecutionsForTask\022/" - ".flyteidl.admin.NodeExecutionForTaskList" - "Request\032!.flyteidl.admin.NodeExecutionLi" - "st\"\375\003\202\323\344\223\002\254\003\022\251\003/api/v1/children/task_exe" - "cutions/{task_execution_id.node_executio" - "n_id.execution_id.project}/{task_executi" - "on_id.node_execution_id.execution_id.dom" - "ain}/{task_execution_id.node_execution_i" - "d.execution_id.name}/{task_execution_id." - "node_execution_id.node_id}/{task_executi" - "on_id.task_id.project}/{task_execution_i" - "d.task_id.domain}/{task_execution_id.tas" - "k_id.name}/{task_execution_id.task_id.ve" - "rsion}/{task_execution_id.retry_attempt}" - "\222AG\032EFetch child node executions launche" - "d by the specified task execution.\022\263\002\n\024G" - "etNodeExecutionData\022+.flyteidl.admin.Nod" - "eExecutionGetDataRequest\032,.flyteidl.admi" - "n.NodeExecutionGetDataResponse\"\277\001\202\323\344\223\002u\022" - "s/api/v1/data/node_executions/{id.execut" - "ion_id.project}/{id.execution_id.domain}" - "/{id.execution_id.name}/{id.node_id}\222AA\032" - "\?Retrieve input and output data from an " - "existing node execution.\022\227\001\n\017RegisterPro" - "ject\022&.flyteidl.admin.ProjectRegisterReq" - "uest\032\'.flyteidl.admin.ProjectRegisterRes" - "ponse\"3\202\323\344\223\002\025\"\020/api/v1/projects:\001*\222A\025\032\023R" - "egister a project.\022\207\001\n\rUpdateProject\022\027.f" - "lyteidl.admin.Project\032%.flyteidl.admin.P" - "rojectUpdateResponse\"6\202\323\344\223\002\032\032\025/api/v1/pr" - "ojects/{id}:\001*\222A\023\032\021Update a project.\022\205\001\n" - "\014ListProjects\022\".flyteidl.admin.ProjectLi" - "stRequest\032\030.flyteidl.admin.Projects\"7\202\323\344" - "\223\002\022\022\020/api/v1/projects\222A\034\032\032Fetch register" - "ed projects.\022\335\001\n\023CreateWorkflowEvent\022-.f" - "lyteidl.admin.WorkflowExecutionEventRequ" - "est\032..flyteidl.admin.WorkflowExecutionEv" - "entResponse\"g\202\323\344\223\002\035\"\030/api/v1/events/work" - "flows:\001*\222AA\032\?Create a workflow execution" - " event recording a phase transition.\022\311\001\n" - "\017CreateNodeEvent\022).flyteidl.admin.NodeEx" - "ecutionEventRequest\032*.flyteidl.admin.Nod" - "eExecutionEventResponse\"_\202\323\344\223\002\031\"\024/api/v1" - "/events/nodes:\001*\222A=\032;Create a node execu" - "tion event recording a phase transition." - "\022\311\001\n\017CreateTaskEvent\022).flyteidl.admin.Ta" - "skExecutionEventRequest\032*.flyteidl.admin" - ".TaskExecutionEventResponse\"_\202\323\344\223\002\031\"\024/ap" - "i/v1/events/tasks:\001*\222A=\032;Create a task e" - "xecution event recording a phase transit" - "ion.\022\251\003\n\020GetTaskExecution\022\'.flyteidl.adm" - "in.TaskExecutionGetRequest\032\035.flyteidl.ad" - "min.TaskExecution\"\314\002\202\323\344\223\002\234\002\022\231\002/api/v1/ta" - "sk_executions/{id.node_execution_id.exec" - "ution_id.project}/{id.node_execution_id." - "execution_id.domain}/{id.node_execution_" - "id.execution_id.name}/{id.node_execution" - "_id.node_id}/{id.task_id.project}/{id.ta" - "sk_id.domain}/{id.task_id.name}/{id.task" - "_id.version}/{id.retry_attempt}\222A&\032$Retr" - "ieve an existing task execution.\022\323\002\n\022Lis" - "tTaskExecutions\022(.flyteidl.admin.TaskExe" - "cutionListRequest\032!.flyteidl.admin.TaskE" - "xecutionList\"\357\001\202\323\344\223\002\255\001\022\252\001/api/v1/task_ex" - "ecutions/{node_execution_id.execution_id" - ".project}/{node_execution_id.execution_i" - "d.domain}/{node_execution_id.execution_i" - "d.name}/{node_execution_id.node_id}\222A8\0326" - "Fetch existing task executions matching " - "input filters.\022\340\003\n\024GetTaskExecutionData\022" - "+.flyteidl.admin.TaskExecutionGetDataReq" - "uest\032,.flyteidl.admin.TaskExecutionGetDa" - "taResponse\"\354\002\202\323\344\223\002\241\002\022\236\002/api/v1/data/task" - "_executions/{id.node_execution_id.execut" - "ion_id.project}/{id.node_execution_id.ex" - "ecution_id.domain}/{id.node_execution_id" - ".execution_id.name}/{id.node_execution_i" - "d.node_id}/{id.task_id.project}/{id.task" - "_id.domain}/{id.task_id.name}/{id.task_i" - "d.version}/{id.retry_attempt}\222AA\032\?Retrie" + "ty that has already been registered.\022\314\001\n" + "\rGetLaunchPlan\022 .flyteidl.admin.ObjectGe" + "tRequest\032\032.flyteidl.admin.LaunchPlan\"}\202\323" + "\344\223\002F\022D/api/v1/launch_plans/{id.project}/" + "{id.domain}/{id.name}/{id.version}\222A.\032,R" + "etrieve an existing launch plan definiti" + "on.\022\363\001\n\023GetActiveLaunchPlan\022\'.flyteidl.a" + "dmin.ActiveLaunchPlanRequest\032\032.flyteidl." + "admin.LaunchPlan\"\226\001\202\323\344\223\002@\022>/api/v1/activ" + "e_launch_plans/{id.project}/{id.domain}/" + "{id.name}\222AM\032KRetrieve the active launch" + " plan version specified by input request" + " filters.\022\353\001\n\025ListActiveLaunchPlans\022+.fl" + "yteidl.admin.ActiveLaunchPlanListRequest" + "\032\036.flyteidl.admin.LaunchPlanList\"\204\001\202\323\344\223\002" + "0\022./api/v1/active_launch_plans/{project}" + "/{domain}\222AK\032IFetch the active launch pl" + "an versions specified by input request f" + "ilters.\022\363\001\n\021ListLaunchPlanIds\0220.flyteidl" + ".admin.NamedEntityIdentifierListRequest\032" + ").flyteidl.admin.NamedEntityIdentifierLi" + "st\"\200\001\202\323\344\223\002,\022*/api/v1/launch_plan_ids/{pr" + "oject}/{domain}\222AK\032IFetch existing launc" + "h plan definition identifiers matching i" + "nput filters.\022\214\002\n\017ListLaunchPlans\022#.flyt" + "eidl.admin.ResourceListRequest\032\036.flyteid" + "l.admin.LaunchPlanList\"\263\001\202\323\344\223\002j\0227/api/v1" + "/launch_plans/{id.project}/{id.domain}/{" + "id.name}Z/\022-/api/v1/launch_plans/{id.pro" + "ject}/{id.domain}\222A@\032>Fetch existing lau" + "nch plan definitions matching input filt" + "ers.\022\300\006\n\020UpdateLaunchPlan\022\'.flyteidl.adm" + "in.LaunchPlanUpdateRequest\032(.flyteidl.ad" + "min.LaunchPlanUpdateResponse\"\330\005\202\323\344\223\002I\032D/" + "api/v1/launch_plans/{id.project}/{id.dom" + "ain}/{id.name}/{id.version}:\001*\222A\205\005\032\202\005Upd" + "ate the status of an existing launch pla" + "n definition. At most one launch plan ve" + "rsion for a given {project, domain, name" + "} can be active at a time. If this call " + "sets a launch plan to active and existin" + "g version is already active, the result " + "of this call will be that the formerly a" + "ctive launch plan will be made inactive " + "and specified launch plan in this reques" + "t will be made active. In the event that" + " the formerly active launch plan had a s" + "chedule associated it with it, this sche" + "dule will be disabled. If the reference " + "launch plan in this request is being set" + " to active and has a schedule associated" + " with it, the schedule will be enabled.\022" + "\242\001\n\017CreateExecution\022&.flyteidl.admin.Exe" + "cutionCreateRequest\032\'.flyteidl.admin.Exe" + "cutionCreateResponse\">\202\323\344\223\002\027\"\022/api/v1/ex" + "ecutions:\001*\222A\036\032\034Create a workflow execut" + "ion.\022\261\001\n\021RelaunchExecution\022(.flyteidl.ad" + "min.ExecutionRelaunchRequest\032\'.flyteidl." + "admin.ExecutionCreateResponse\"I\202\323\344\223\002 \"\033/" + "api/v1/executions/relaunch:\001*\222A \032\036Relaun" + "ch a workflow execution.\022\235\005\n\020RecoverExec" + "ution\022\'.flyteidl.admin.ExecutionRecoverR" + "equest\032\'.flyteidl.admin.ExecutionCreateR" + "esponse\"\266\004\202\323\344\223\002\037\"\032/api/v1/executions/rec" + "over:\001*\222A\215\004\032\212\004Recreates a previously-run" + " workflow execution that will only start" + " executing from the last known failure p" + "oint. In Recover mode, users cannot chan" + "ge any input parameters or update the ve" + "rsion of the execution. This is extremel" + "y useful to recover from system errors a" + "nd byzantine faults like - Loss of K8s c" + "luster, bugs in platform or instability," + " machine failures, downstream system fai" + "lures (downstream services), or simply t" + "o recover executions that failed because" + " of retry exhaustion and should complete" + " if tried again.\022\302\001\n\014GetExecution\022+.flyt" + "eidl.admin.WorkflowExecutionGetRequest\032\031" + ".flyteidl.admin.Execution\"j\202\323\344\223\0027\0225/api/" + "v1/executions/{id.project}/{id.domain}/{" + "id.name}\222A*\032(Retrieve an existing workfl" + "ow execution.\022\326\001\n\017UpdateExecution\022&.flyt" + "eidl.admin.ExecutionUpdateRequest\032\'.flyt" + "eidl.admin.ExecutionUpdateResponse\"r\202\323\344\223" + "\002:\0325/api/v1/executions/{id.project}/{id." + "domain}/{id.name}:\001*\222A/\032-Update executio" + "n belonging to project domain.\022\202\002\n\020GetEx" + "ecutionData\022/.flyteidl.admin.WorkflowExe" + "cutionGetDataRequest\0320.flyteidl.admin.Wo" + "rkflowExecutionGetDataResponse\"\212\001\202\323\344\223\002<\022" + ":/api/v1/data/executions/{id.project}/{i" + "d.domain}/{id.name}\222AE\032CRetrieve input a" + "nd output data from an existing workflow" + " execution.\022\310\001\n\016ListExecutions\022#.flyteid" + "l.admin.ResourceListRequest\032\035.flyteidl.a" + "dmin.ExecutionList\"r\202\323\344\223\002-\022+/api/v1/exec" + "utions/{id.project}/{id.domain}\222A<\032:Fetc" + "h existing workflow executions matching " + "input filters.\022\364\001\n\022TerminateExecution\022)." + "flyteidl.admin.ExecutionTerminateRequest" + "\032*.flyteidl.admin.ExecutionTerminateResp" + "onse\"\206\001\202\323\344\223\002:*5/api/v1/executions/{id.pr" + "oject}/{id.domain}/{id.name}:\001*\222AC\032ATerm" + "inate the active workflow execution spec" + "ified in the request.\022\374\001\n\020GetNodeExecuti" + "on\022\'.flyteidl.admin.NodeExecutionGetRequ" + "est\032\035.flyteidl.admin.NodeExecution\"\237\001\202\323\344" + "\223\002p\022n/api/v1/node_executions/{id.executi" + "on_id.project}/{id.execution_id.domain}/" + "{id.execution_id.name}/{id.node_id}\222A&\032$" + "Retrieve an existing node execution.\022\232\002\n" + "\022ListNodeExecutions\022(.flyteidl.admin.Nod" + "eExecutionListRequest\032!.flyteidl.admin.N" + "odeExecutionList\"\266\001\202\323\344\223\002u\022s/api/v1/node_" + "executions/{workflow_execution_id.projec" + "t}/{workflow_execution_id.domain}/{workf" + "low_execution_id.name}\222A8\0326Fetch existin" + "g node executions matching input filters" + ".\022\357\004\n\031ListNodeExecutionsForTask\022/.flytei" + "dl.admin.NodeExecutionForTaskListRequest" + "\032!.flyteidl.admin.NodeExecutionList\"\375\003\202\323" + "\344\223\002\254\003\022\251\003/api/v1/children/task_executions" + "/{task_execution_id.node_execution_id.ex" + "ecution_id.project}/{task_execution_id.n" + "ode_execution_id.execution_id.domain}/{t" + "ask_execution_id.node_execution_id.execu" + "tion_id.name}/{task_execution_id.node_ex" + "ecution_id.node_id}/{task_execution_id.t" + "ask_id.project}/{task_execution_id.task_" + "id.domain}/{task_execution_id.task_id.na" + "me}/{task_execution_id.task_id.version}/" + "{task_execution_id.retry_attempt}\222AG\032EFe" + "tch child node executions launched by th" + "e specified task execution.\022\263\002\n\024GetNodeE" + "xecutionData\022+.flyteidl.admin.NodeExecut" + "ionGetDataRequest\032,.flyteidl.admin.NodeE" + "xecutionGetDataResponse\"\277\001\202\323\344\223\002u\022s/api/v" + "1/data/node_executions/{id.execution_id." + "project}/{id.execution_id.domain}/{id.ex" + "ecution_id.name}/{id.node_id}\222AA\032\?Retrie" "ve input and output data from an existin" - "g task execution.\022\277\002\n\035UpdateProjectDomai" - "nAttributes\0224.flyteidl.admin.ProjectDoma" - "inAttributesUpdateRequest\0325.flyteidl.adm" - "in.ProjectDomainAttributesUpdateResponse" - "\"\260\001\202\323\344\223\002O\032J/api/v1/project_domain_attrib" - "utes/{attributes.project}/{attributes.do" - "main}:\001*\222AX\032VUpdate the customized resou" - "rce attributes associated with a project" - "-domain combination\022\237\002\n\032GetProjectDomain" - "Attributes\0221.flyteidl.admin.ProjectDomai" - "nAttributesGetRequest\0322.flyteidl.admin.P" - "rojectDomainAttributesGetResponse\"\231\001\202\323\344\223" - "\0026\0224/api/v1/project_domain_attributes/{p" - "roject}/{domain}\222AZ\032XRetrieve the custom" - "ized resource attributes associated with" - " a project-domain combination\022\251\002\n\035Delete" - "ProjectDomainAttributes\0224.flyteidl.admin" - ".ProjectDomainAttributesDeleteRequest\0325." - "flyteidl.admin.ProjectDomainAttributesDe" - "leteResponse\"\232\001\202\323\344\223\0029*4/api/v1/project_d" - "omain_attributes/{project}/{domain}:\001*\222A" - "X\032VDelete the customized resource attrib" - "utes associated with a project-domain co" - "mbination\022\377\001\n\027UpdateProjectAttributes\022.." - "flyteidl.admin.ProjectAttributesUpdateRe" - "quest\032/.flyteidl.admin.ProjectAttributes" - "UpdateResponse\"\202\001\202\323\344\223\0024\032//api/v1/project" - "_attributes/{attributes.project}:\001*\222AE\032C" - "Update the customized resource attribute" - "s associated with a project\022\351\001\n\024GetProje" - "ctAttributes\022+.flyteidl.admin.ProjectAtt" - "ributesGetRequest\032,.flyteidl.admin.Proje" - "ctAttributesGetResponse\"v\202\323\344\223\002&\022$/api/v1" - "/project_attributes/{project}\222AG\032ERetrie" - "ve the customized resource attributes as" - "sociated with a project\022\363\001\n\027DeleteProjec" - "tAttributes\022..flyteidl.admin.ProjectAttr" - "ibutesDeleteRequest\032/.flyteidl.admin.Pro" - "jectAttributesDeleteResponse\"w\202\323\344\223\002)*$/a" - "pi/v1/project_attributes/{project}:\001*\222AE" - "\032CDelete the customized resource attribu" - "tes associated with a project\022\316\002\n\030Update" - "WorkflowAttributes\022/.flyteidl.admin.Work" - "flowAttributesUpdateRequest\0320.flyteidl.a" - "dmin.WorkflowAttributesUpdateResponse\"\316\001" - "\202\323\344\223\002_\032Z/api/v1/workflow_attributes/{att" - "ributes.project}/{attributes.domain}/{at" - "tributes.workflow}:\001*\222Af\032dUpdate the cus" - "tomized resource attributes associated w" - "ith a project, domain and workflow combi" - "nation\022\243\002\n\025GetWorkflowAttributes\022,.flyte" - "idl.admin.WorkflowAttributesGetRequest\032-" - ".flyteidl.admin.WorkflowAttributesGetRes" - "ponse\"\254\001\202\323\344\223\002;\0229/api/v1/workflow_attribu" - "tes/{project}/{domain}/{workflow}\222Ah\032fRe" - "trieve the customized resource attribute" - "s associated with a project, domain and " - "workflow combination\022\255\002\n\030DeleteWorkflowA" - "ttributes\022/.flyteidl.admin.WorkflowAttri" - "butesDeleteRequest\0320.flyteidl.admin.Work" - "flowAttributesDeleteResponse\"\255\001\202\323\344\223\002>*9/" - "api/v1/workflow_attributes/{project}/{do" - "main}/{workflow}:\001*\222Af\032dDelete the custo" - "mized resource attributes associated wit" - "h a project, domain and workflow combina" - "tion\022\341\001\n\027ListMatchableAttributes\022..flyte" - "idl.admin.ListMatchableAttributesRequest" - "\032/.flyteidl.admin.ListMatchableAttribute" - "sResponse\"e\202\323\344\223\002\036\022\034/api/v1/matchable_att" - "ributes\222A>\032*9/api/v1/" + "workflow_attributes/{project}/{domain}/{" + "workflow}:\001*\222Af\032dDelete the customized r" + "esource attributes associated with a pro" + "ject, domain and workflow combination\022\341\001" + "\n\027ListMatchableAttributes\022..flyteidl.adm" + "in.ListMatchableAttributesRequest\032/.flyt" + "eidl.admin.ListMatchableAttributesRespon" + "se\"e\202\323\344\223\002\036\022\034/api/v1/matchable_attributes" + "\222A>\032 diff --git a/flyteidl/gen/pb-go/flyteidl/admin/description_entity.pb.go b/flyteidl/gen/pb-go/flyteidl/admin/description_entity.pb.go new file mode 100644 index 00000000000..7d3bb0b9e99 --- /dev/null +++ b/flyteidl/gen/pb-go/flyteidl/admin/description_entity.pb.go @@ -0,0 +1,476 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: flyteidl/admin/description_entity.proto + +package admin + +import ( + fmt "fmt" + core "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/core" + proto "github.com/golang/protobuf/proto" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package + +// The format of the long description +type DescriptionFormat int32 + +const ( + DescriptionFormat_DESCRIPTION_FORMAT_UNKNOWN DescriptionFormat = 0 + DescriptionFormat_DESCRIPTION_FORMAT_MARKDOWN DescriptionFormat = 1 + DescriptionFormat_DESCRIPTION_FORMAT_HTML DescriptionFormat = 2 + // python default documentation - comments is rst + DescriptionFormat_DESCRIPTION_FORMAT_RST DescriptionFormat = 3 +) + +var DescriptionFormat_name = map[int32]string{ + 0: "DESCRIPTION_FORMAT_UNKNOWN", + 1: "DESCRIPTION_FORMAT_MARKDOWN", + 2: "DESCRIPTION_FORMAT_HTML", + 3: "DESCRIPTION_FORMAT_RST", +} + +var DescriptionFormat_value = map[string]int32{ + "DESCRIPTION_FORMAT_UNKNOWN": 0, + "DESCRIPTION_FORMAT_MARKDOWN": 1, + "DESCRIPTION_FORMAT_HTML": 2, + "DESCRIPTION_FORMAT_RST": 3, +} + +func (x DescriptionFormat) String() string { + return proto.EnumName(DescriptionFormat_name, int32(x)) +} + +func (DescriptionFormat) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_2715f55631fe48ea, []int{0} +} + +// DescriptionEntity contains detailed description for the task/workflow. +// Documentation could provide insight into the algorithms, business use case, etc. +type DescriptionEntity struct { + // id represents the unique identifier of the description entity. + Id *core.Identifier `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // One-liner overview of the entity. + ShortDescription string `protobuf:"bytes,2,opt,name=short_description,json=shortDescription,proto3" json:"short_description,omitempty"` + // Full user description with formatting preserved. + LongDescription *Description `protobuf:"bytes,3,opt,name=long_description,json=longDescription,proto3" json:"long_description,omitempty"` + // Optional link to source code used to define this entity. + SourceCode *SourceCode `protobuf:"bytes,4,opt,name=source_code,json=sourceCode,proto3" json:"source_code,omitempty"` + // User-specified tags. These are arbitrary and can be used for searching + // filtering and discovering tasks. + Tags []string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DescriptionEntity) Reset() { *m = DescriptionEntity{} } +func (m *DescriptionEntity) String() string { return proto.CompactTextString(m) } +func (*DescriptionEntity) ProtoMessage() {} +func (*DescriptionEntity) Descriptor() ([]byte, []int) { + return fileDescriptor_2715f55631fe48ea, []int{0} +} + +func (m *DescriptionEntity) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DescriptionEntity.Unmarshal(m, b) +} +func (m *DescriptionEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DescriptionEntity.Marshal(b, m, deterministic) +} +func (m *DescriptionEntity) XXX_Merge(src proto.Message) { + xxx_messageInfo_DescriptionEntity.Merge(m, src) +} +func (m *DescriptionEntity) XXX_Size() int { + return xxx_messageInfo_DescriptionEntity.Size(m) +} +func (m *DescriptionEntity) XXX_DiscardUnknown() { + xxx_messageInfo_DescriptionEntity.DiscardUnknown(m) +} + +var xxx_messageInfo_DescriptionEntity proto.InternalMessageInfo + +func (m *DescriptionEntity) GetId() *core.Identifier { + if m != nil { + return m.Id + } + return nil +} + +func (m *DescriptionEntity) GetShortDescription() string { + if m != nil { + return m.ShortDescription + } + return "" +} + +func (m *DescriptionEntity) GetLongDescription() *Description { + if m != nil { + return m.LongDescription + } + return nil +} + +func (m *DescriptionEntity) GetSourceCode() *SourceCode { + if m != nil { + return m.SourceCode + } + return nil +} + +func (m *DescriptionEntity) GetTags() []string { + if m != nil { + return m.Tags + } + return nil +} + +// Full user description with formatting preserved. This can be rendered +// by clients, such as the console or command line tools with in-tact +// formatting. +type Description struct { + // Types that are valid to be assigned to Content: + // *Description_Value + // *Description_Uri + Content isDescription_Content `protobuf_oneof:"content"` + // Format of the long description + Format DescriptionFormat `protobuf:"varint,3,opt,name=format,proto3,enum=flyteidl.admin.DescriptionFormat" json:"format,omitempty"` + // Optional link to an icon for the entity + IconLink string `protobuf:"bytes,4,opt,name=icon_link,json=iconLink,proto3" json:"icon_link,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Description) Reset() { *m = Description{} } +func (m *Description) String() string { return proto.CompactTextString(m) } +func (*Description) ProtoMessage() {} +func (*Description) Descriptor() ([]byte, []int) { + return fileDescriptor_2715f55631fe48ea, []int{1} +} + +func (m *Description) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Description.Unmarshal(m, b) +} +func (m *Description) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Description.Marshal(b, m, deterministic) +} +func (m *Description) XXX_Merge(src proto.Message) { + xxx_messageInfo_Description.Merge(m, src) +} +func (m *Description) XXX_Size() int { + return xxx_messageInfo_Description.Size(m) +} +func (m *Description) XXX_DiscardUnknown() { + xxx_messageInfo_Description.DiscardUnknown(m) +} + +var xxx_messageInfo_Description proto.InternalMessageInfo + +type isDescription_Content interface { + isDescription_Content() +} + +type Description_Value struct { + Value string `protobuf:"bytes,1,opt,name=value,proto3,oneof"` +} + +type Description_Uri struct { + Uri string `protobuf:"bytes,2,opt,name=uri,proto3,oneof"` +} + +func (*Description_Value) isDescription_Content() {} + +func (*Description_Uri) isDescription_Content() {} + +func (m *Description) GetContent() isDescription_Content { + if m != nil { + return m.Content + } + return nil +} + +func (m *Description) GetValue() string { + if x, ok := m.GetContent().(*Description_Value); ok { + return x.Value + } + return "" +} + +func (m *Description) GetUri() string { + if x, ok := m.GetContent().(*Description_Uri); ok { + return x.Uri + } + return "" +} + +func (m *Description) GetFormat() DescriptionFormat { + if m != nil { + return m.Format + } + return DescriptionFormat_DESCRIPTION_FORMAT_UNKNOWN +} + +func (m *Description) GetIconLink() string { + if m != nil { + return m.IconLink + } + return "" +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*Description) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*Description_Value)(nil), + (*Description_Uri)(nil), + } +} + +// Link to source code used to define this entity +type SourceCode struct { + Link string `protobuf:"bytes,1,opt,name=link,proto3" json:"link,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SourceCode) Reset() { *m = SourceCode{} } +func (m *SourceCode) String() string { return proto.CompactTextString(m) } +func (*SourceCode) ProtoMessage() {} +func (*SourceCode) Descriptor() ([]byte, []int) { + return fileDescriptor_2715f55631fe48ea, []int{2} +} + +func (m *SourceCode) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SourceCode.Unmarshal(m, b) +} +func (m *SourceCode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SourceCode.Marshal(b, m, deterministic) +} +func (m *SourceCode) XXX_Merge(src proto.Message) { + xxx_messageInfo_SourceCode.Merge(m, src) +} +func (m *SourceCode) XXX_Size() int { + return xxx_messageInfo_SourceCode.Size(m) +} +func (m *SourceCode) XXX_DiscardUnknown() { + xxx_messageInfo_SourceCode.DiscardUnknown(m) +} + +var xxx_messageInfo_SourceCode proto.InternalMessageInfo + +func (m *SourceCode) GetLink() string { + if m != nil { + return m.Link + } + return "" +} + +// Represents a list of DescriptionEntities returned from the admin. +// See :ref:`ref_flyteidl.admin.DescriptionEntity` for more details +type DescriptionEntityList struct { + // A list of DescriptionEntities returned based on the request. + DescriptionEntities []*DescriptionEntity `protobuf:"bytes,1,rep,name=descriptionEntities,proto3" json:"descriptionEntities,omitempty"` + // In the case of multiple pages of results, the server-provided token can be used to fetch the next page + // in a query. If there are no more results, this value will be empty. + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DescriptionEntityList) Reset() { *m = DescriptionEntityList{} } +func (m *DescriptionEntityList) String() string { return proto.CompactTextString(m) } +func (*DescriptionEntityList) ProtoMessage() {} +func (*DescriptionEntityList) Descriptor() ([]byte, []int) { + return fileDescriptor_2715f55631fe48ea, []int{3} +} + +func (m *DescriptionEntityList) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DescriptionEntityList.Unmarshal(m, b) +} +func (m *DescriptionEntityList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DescriptionEntityList.Marshal(b, m, deterministic) +} +func (m *DescriptionEntityList) XXX_Merge(src proto.Message) { + xxx_messageInfo_DescriptionEntityList.Merge(m, src) +} +func (m *DescriptionEntityList) XXX_Size() int { + return xxx_messageInfo_DescriptionEntityList.Size(m) +} +func (m *DescriptionEntityList) XXX_DiscardUnknown() { + xxx_messageInfo_DescriptionEntityList.DiscardUnknown(m) +} + +var xxx_messageInfo_DescriptionEntityList proto.InternalMessageInfo + +func (m *DescriptionEntityList) GetDescriptionEntities() []*DescriptionEntity { + if m != nil { + return m.DescriptionEntities + } + return nil +} + +func (m *DescriptionEntityList) GetToken() string { + if m != nil { + return m.Token + } + return "" +} + +// Represents a request structure to retrieve a list of DescriptionEntities. +// See :ref:`ref_flyteidl.admin.DescriptionEntity` for more details +type DescriptionEntityListRequest struct { + // Identifies the specific type of resource that this identifier corresponds to. + ResourceType core.ResourceType `protobuf:"varint,1,opt,name=resource_type,json=resourceType,proto3,enum=flyteidl.core.ResourceType" json:"resource_type,omitempty"` + // The identifier for the description entity. + // +required + Id *NamedEntityIdentifier `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + // Indicates the number of resources to be returned. + // +required + Limit uint32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` + // In the case of multiple pages of results, the server-provided token can be used to fetch the next page + // in a query. + // +optional + Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` + // Indicates a list of filters passed as string. + // More info on constructing filters : + // +optional + Filters string `protobuf:"bytes,5,opt,name=filters,proto3" json:"filters,omitempty"` + // Sort ordering for returned list. + // +optional + SortBy *Sort `protobuf:"bytes,6,opt,name=sort_by,json=sortBy,proto3" json:"sort_by,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DescriptionEntityListRequest) Reset() { *m = DescriptionEntityListRequest{} } +func (m *DescriptionEntityListRequest) String() string { return proto.CompactTextString(m) } +func (*DescriptionEntityListRequest) ProtoMessage() {} +func (*DescriptionEntityListRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_2715f55631fe48ea, []int{4} +} + +func (m *DescriptionEntityListRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DescriptionEntityListRequest.Unmarshal(m, b) +} +func (m *DescriptionEntityListRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DescriptionEntityListRequest.Marshal(b, m, deterministic) +} +func (m *DescriptionEntityListRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_DescriptionEntityListRequest.Merge(m, src) +} +func (m *DescriptionEntityListRequest) XXX_Size() int { + return xxx_messageInfo_DescriptionEntityListRequest.Size(m) +} +func (m *DescriptionEntityListRequest) XXX_DiscardUnknown() { + xxx_messageInfo_DescriptionEntityListRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_DescriptionEntityListRequest proto.InternalMessageInfo + +func (m *DescriptionEntityListRequest) GetResourceType() core.ResourceType { + if m != nil { + return m.ResourceType + } + return core.ResourceType_UNSPECIFIED +} + +func (m *DescriptionEntityListRequest) GetId() *NamedEntityIdentifier { + if m != nil { + return m.Id + } + return nil +} + +func (m *DescriptionEntityListRequest) GetLimit() uint32 { + if m != nil { + return m.Limit + } + return 0 +} + +func (m *DescriptionEntityListRequest) GetToken() string { + if m != nil { + return m.Token + } + return "" +} + +func (m *DescriptionEntityListRequest) GetFilters() string { + if m != nil { + return m.Filters + } + return "" +} + +func (m *DescriptionEntityListRequest) GetSortBy() *Sort { + if m != nil { + return m.SortBy + } + return nil +} + +func init() { + proto.RegisterEnum("flyteidl.admin.DescriptionFormat", DescriptionFormat_name, DescriptionFormat_value) + proto.RegisterType((*DescriptionEntity)(nil), "flyteidl.admin.DescriptionEntity") + proto.RegisterType((*Description)(nil), "flyteidl.admin.Description") + proto.RegisterType((*SourceCode)(nil), "flyteidl.admin.SourceCode") + proto.RegisterType((*DescriptionEntityList)(nil), "flyteidl.admin.DescriptionEntityList") + proto.RegisterType((*DescriptionEntityListRequest)(nil), "flyteidl.admin.DescriptionEntityListRequest") +} + +func init() { + proto.RegisterFile("flyteidl/admin/description_entity.proto", fileDescriptor_2715f55631fe48ea) +} + +var fileDescriptor_2715f55631fe48ea = []byte{ + // 598 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0xdf, 0x6f, 0xd2, 0x50, + 0x14, 0x5e, 0xcb, 0x60, 0xf6, 0xe0, 0x90, 0x5d, 0x71, 0x56, 0x30, 0x13, 0x49, 0x8c, 0xa8, 0x59, + 0x9b, 0xcc, 0x2c, 0xc6, 0xf8, 0xe2, 0x18, 0x23, 0x90, 0xf1, 0xc3, 0x5c, 0x30, 0x26, 0xbe, 0x34, + 0xd0, 0x5e, 0xba, 0x1b, 0xda, 0x5e, 0xbc, 0xbd, 0x98, 0xf4, 0xd5, 0xf8, 0xa8, 0xff, 0x81, 0x7f, + 0xac, 0xe9, 0x2d, 0xb0, 0xc2, 0xc8, 0xde, 0xee, 0xe9, 0xf9, 0xce, 0x77, 0xce, 0x77, 0xbf, 0xd3, + 0x0b, 0xaf, 0xa7, 0x5e, 0x24, 0x08, 0x75, 0x3c, 0x73, 0xec, 0xf8, 0x34, 0x30, 0x1d, 0x12, 0xda, + 0x9c, 0xce, 0x05, 0x65, 0x81, 0x45, 0x02, 0x41, 0x45, 0x64, 0xcc, 0x39, 0x13, 0x0c, 0x15, 0x56, + 0x40, 0x43, 0x02, 0xcb, 0x27, 0xeb, 0x42, 0x9b, 0x71, 0x62, 0x52, 0x27, 0x46, 0x4f, 0x29, 0xe1, + 0x09, 0xbe, 0x5c, 0xd9, 0x22, 0xb6, 0x99, 0xef, 0xb3, 0x20, 0x49, 0xd6, 0x7e, 0xab, 0x70, 0xd4, + 0xbc, 0xed, 0x74, 0x25, 0x1b, 0xa1, 0x37, 0xa0, 0x52, 0x47, 0x57, 0xaa, 0x4a, 0x3d, 0x7f, 0xf6, + 0xcc, 0x58, 0xf7, 0x8b, 0xf9, 0x8d, 0xce, 0x9a, 0x1f, 0xab, 0xd4, 0x41, 0xef, 0xe0, 0x28, 0xbc, + 0x61, 0x5c, 0x58, 0xa9, 0x79, 0x75, 0xb5, 0xaa, 0xd4, 0x35, 0x5c, 0x94, 0x89, 0x14, 0x3b, 0x6a, + 0x41, 0xd1, 0x63, 0x81, 0xbb, 0x81, 0xcd, 0xc8, 0x2e, 0x15, 0x63, 0x53, 0x95, 0x91, 0x2a, 0xc3, + 0x8f, 0xe2, 0xa2, 0x34, 0xcf, 0x27, 0xc8, 0x87, 0x6c, 0xc1, 0x6d, 0x62, 0xd9, 0xcc, 0x21, 0xfa, + 0xbe, 0xa4, 0x28, 0x6f, 0x53, 0x0c, 0x25, 0xe4, 0x92, 0x39, 0x04, 0x43, 0xb8, 0x3e, 0x23, 0x04, + 0xfb, 0x62, 0xec, 0x86, 0x7a, 0xb6, 0x9a, 0xa9, 0x6b, 0x58, 0x9e, 0x6b, 0xff, 0x14, 0xc8, 0xa7, + 0x1b, 0x1c, 0x43, 0xf6, 0xe7, 0xd8, 0x5b, 0x10, 0x79, 0x07, 0x5a, 0x7b, 0x0f, 0x27, 0x21, 0x42, + 0x90, 0x59, 0x70, 0x9a, 0xe8, 0x6b, 0xef, 0xe1, 0x38, 0x40, 0x1f, 0x21, 0x37, 0x65, 0xdc, 0x1f, + 0x0b, 0x29, 0xa5, 0x70, 0xf6, 0xf2, 0x1e, 0x29, 0x2d, 0x09, 0xc4, 0xcb, 0x02, 0x54, 0x01, 0x8d, + 0xda, 0x2c, 0xb0, 0x3c, 0x1a, 0xcc, 0xa4, 0x0a, 0x0d, 0x3f, 0x88, 0x3f, 0x74, 0x69, 0x30, 0x6b, + 0x68, 0x70, 0x60, 0xb3, 0x40, 0x90, 0x40, 0xd4, 0xaa, 0x00, 0xc3, 0x0d, 0x01, 0xb2, 0x40, 0xce, + 0x86, 0xe5, 0xb9, 0xf6, 0x4b, 0x81, 0x27, 0x77, 0x7c, 0xec, 0xd2, 0x50, 0xa0, 0x21, 0x3c, 0x76, + 0xb6, 0x12, 0x94, 0x84, 0xba, 0x52, 0xcd, 0xd4, 0xf3, 0xf7, 0xce, 0x9a, 0x70, 0xe0, 0x5d, 0xd5, + 0xa8, 0x04, 0x59, 0xc1, 0x66, 0x64, 0xe5, 0x74, 0x12, 0xd4, 0xfe, 0xa8, 0xf0, 0x7c, 0xe7, 0x10, + 0x98, 0xfc, 0x58, 0x90, 0x50, 0xa0, 0xcf, 0x70, 0xc8, 0xc9, 0xd2, 0x39, 0x11, 0xcd, 0x93, 0xeb, + 0x2d, 0xa4, 0xcd, 0x97, 0x2b, 0x86, 0x97, 0x98, 0x51, 0x34, 0x27, 0xf8, 0x21, 0x4f, 0x45, 0xe8, + 0x5c, 0x6e, 0xa6, 0x2a, 0x0d, 0x7f, 0xb5, 0x3d, 0x7c, 0x7f, 0xec, 0x13, 0x27, 0xe9, 0xba, 0xb5, + 0xa5, 0x25, 0xc8, 0x7a, 0xd4, 0xa7, 0x89, 0x45, 0x87, 0x38, 0x09, 0x6e, 0x55, 0xec, 0xa7, 0x54, + 0x20, 0x1d, 0x0e, 0xa6, 0xd4, 0x13, 0x84, 0xc7, 0x2b, 0x12, 0x7f, 0x5f, 0x85, 0xe8, 0x14, 0x0e, + 0xc2, 0x78, 0xd5, 0x27, 0x91, 0x9e, 0x93, 0x13, 0x94, 0xee, 0xae, 0x1c, 0x17, 0x38, 0x17, 0x83, + 0x1a, 0xd1, 0xdb, 0xbf, 0xca, 0xc6, 0xbf, 0x95, 0x78, 0x8f, 0x4e, 0xa0, 0xdc, 0xbc, 0x1a, 0x5e, + 0xe2, 0xce, 0x97, 0x51, 0x67, 0xd0, 0xb7, 0x5a, 0x03, 0xdc, 0xbb, 0x18, 0x59, 0x5f, 0xfb, 0xd7, + 0xfd, 0xc1, 0xb7, 0x7e, 0x71, 0x0f, 0xbd, 0x80, 0xca, 0x8e, 0x7c, 0xef, 0x02, 0x5f, 0x37, 0x63, + 0x80, 0x82, 0x2a, 0xf0, 0x74, 0x07, 0xa0, 0x3d, 0xea, 0x75, 0x8b, 0x2a, 0x2a, 0xc3, 0xf1, 0x8e, + 0x24, 0x1e, 0x8e, 0x8a, 0x99, 0xc6, 0x87, 0xef, 0xe7, 0x2e, 0x15, 0x37, 0x8b, 0x89, 0x61, 0x33, + 0xdf, 0x94, 0x93, 0x33, 0xee, 0x9a, 0xeb, 0xe7, 0xc1, 0x25, 0x81, 0x39, 0x9f, 0x9c, 0xba, 0xcc, + 0xdc, 0x7c, 0x31, 0x26, 0x39, 0xf9, 0x56, 0xbc, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x03, 0x73, + 0x74, 0x66, 0xa3, 0x04, 0x00, 0x00, +} diff --git a/flyteidl/gen/pb-go/flyteidl/admin/description_entity.pb.validate.go b/flyteidl/gen/pb-go/flyteidl/admin/description_entity.pb.validate.go new file mode 100644 index 00000000000..3bfe3935b26 --- /dev/null +++ b/flyteidl/gen/pb-go/flyteidl/admin/description_entity.pb.validate.go @@ -0,0 +1,465 @@ +// Code generated by protoc-gen-validate. DO NOT EDIT. +// source: flyteidl/admin/description_entity.proto + +package admin + +import ( + "bytes" + "errors" + "fmt" + "net" + "net/mail" + "net/url" + "regexp" + "strings" + "time" + "unicode/utf8" + + "github.com/golang/protobuf/ptypes" + + core "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/core" +) + +// ensure the imports are used +var ( + _ = bytes.MinRead + _ = errors.New("") + _ = fmt.Print + _ = utf8.UTFMax + _ = (*regexp.Regexp)(nil) + _ = (*strings.Reader)(nil) + _ = net.IPv4len + _ = time.Duration(0) + _ = (*url.URL)(nil) + _ = (*mail.Address)(nil) + _ = ptypes.DynamicAny{} + + _ = core.ResourceType(0) +) + +// define the regex for a UUID once up-front +var _description_entity_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") + +// Validate checks the field values on DescriptionEntity with the rules defined +// in the proto definition for this message. If any rules are violated, an +// error is returned. +func (m *DescriptionEntity) Validate() error { + if m == nil { + return nil + } + + if v, ok := interface{}(m.GetId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return DescriptionEntityValidationError{ + field: "Id", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for ShortDescription + + if v, ok := interface{}(m.GetLongDescription()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return DescriptionEntityValidationError{ + field: "LongDescription", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if v, ok := interface{}(m.GetSourceCode()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return DescriptionEntityValidationError{ + field: "SourceCode", + reason: "embedded message failed validation", + cause: err, + } + } + } + + return nil +} + +// DescriptionEntityValidationError is the validation error returned by +// DescriptionEntity.Validate if the designated constraints aren't met. +type DescriptionEntityValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DescriptionEntityValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DescriptionEntityValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DescriptionEntityValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DescriptionEntityValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DescriptionEntityValidationError) ErrorName() string { + return "DescriptionEntityValidationError" +} + +// Error satisfies the builtin error interface +func (e DescriptionEntityValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDescriptionEntity.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DescriptionEntityValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DescriptionEntityValidationError{} + +// Validate checks the field values on Description with the rules defined in +// the proto definition for this message. If any rules are violated, an error +// is returned. +func (m *Description) Validate() error { + if m == nil { + return nil + } + + // no validation rules for Format + + // no validation rules for IconLink + + switch m.Content.(type) { + + case *Description_Value: + // no validation rules for Value + + case *Description_Uri: + // no validation rules for Uri + + } + + return nil +} + +// DescriptionValidationError is the validation error returned by +// Description.Validate if the designated constraints aren't met. +type DescriptionValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DescriptionValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DescriptionValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DescriptionValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DescriptionValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DescriptionValidationError) ErrorName() string { return "DescriptionValidationError" } + +// Error satisfies the builtin error interface +func (e DescriptionValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDescription.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DescriptionValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DescriptionValidationError{} + +// Validate checks the field values on SourceCode with the rules defined in the +// proto definition for this message. If any rules are violated, an error is returned. +func (m *SourceCode) Validate() error { + if m == nil { + return nil + } + + // no validation rules for Link + + return nil +} + +// SourceCodeValidationError is the validation error returned by +// SourceCode.Validate if the designated constraints aren't met. +type SourceCodeValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e SourceCodeValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e SourceCodeValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e SourceCodeValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e SourceCodeValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e SourceCodeValidationError) ErrorName() string { return "SourceCodeValidationError" } + +// Error satisfies the builtin error interface +func (e SourceCodeValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sSourceCode.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = SourceCodeValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = SourceCodeValidationError{} + +// Validate checks the field values on DescriptionEntityList with the rules +// defined in the proto definition for this message. If any rules are +// violated, an error is returned. +func (m *DescriptionEntityList) Validate() error { + if m == nil { + return nil + } + + for idx, item := range m.GetDescriptionEntities() { + _, _ = idx, item + + if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return DescriptionEntityListValidationError{ + field: fmt.Sprintf("DescriptionEntities[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + // no validation rules for Token + + return nil +} + +// DescriptionEntityListValidationError is the validation error returned by +// DescriptionEntityList.Validate if the designated constraints aren't met. +type DescriptionEntityListValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DescriptionEntityListValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DescriptionEntityListValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DescriptionEntityListValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DescriptionEntityListValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DescriptionEntityListValidationError) ErrorName() string { + return "DescriptionEntityListValidationError" +} + +// Error satisfies the builtin error interface +func (e DescriptionEntityListValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDescriptionEntityList.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DescriptionEntityListValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DescriptionEntityListValidationError{} + +// Validate checks the field values on DescriptionEntityListRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, an error is returned. +func (m *DescriptionEntityListRequest) Validate() error { + if m == nil { + return nil + } + + // no validation rules for ResourceType + + if v, ok := interface{}(m.GetId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return DescriptionEntityListRequestValidationError{ + field: "Id", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for Limit + + // no validation rules for Token + + // no validation rules for Filters + + if v, ok := interface{}(m.GetSortBy()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return DescriptionEntityListRequestValidationError{ + field: "SortBy", + reason: "embedded message failed validation", + cause: err, + } + } + } + + return nil +} + +// DescriptionEntityListRequestValidationError is the validation error returned +// by DescriptionEntityListRequest.Validate if the designated constraints +// aren't met. +type DescriptionEntityListRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DescriptionEntityListRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DescriptionEntityListRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DescriptionEntityListRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DescriptionEntityListRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DescriptionEntityListRequestValidationError) ErrorName() string { + return "DescriptionEntityListRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e DescriptionEntityListRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDescriptionEntityListRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DescriptionEntityListRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DescriptionEntityListRequestValidationError{} diff --git a/flyteidl/gen/pb-go/flyteidl/admin/description_entity.swagger.json b/flyteidl/gen/pb-go/flyteidl/admin/description_entity.swagger.json new file mode 100644 index 00000000000..78fb4c13d6f --- /dev/null +++ b/flyteidl/gen/pb-go/flyteidl/admin/description_entity.swagger.json @@ -0,0 +1,19 @@ +{ + "swagger": "2.0", + "info": { + "title": "flyteidl/admin/description_entity.proto", + "version": "version not set" + }, + "schemes": [ + "http", + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": {}, + "definitions": {} +} diff --git a/flyteidl/gen/pb-go/flyteidl/admin/task.pb.go b/flyteidl/gen/pb-go/flyteidl/admin/task.pb.go index 2bf2aaf948a..b17dedc5f8e 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/task.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/task.pb.go @@ -114,10 +114,12 @@ type Task struct { // id represents the unique identifier of the task. Id *core.Identifier `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // closure encapsulates all the fields that maps to a compiled version of the task. - Closure *TaskClosure `protobuf:"bytes,2,opt,name=closure,proto3" json:"closure,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Closure *TaskClosure `protobuf:"bytes,2,opt,name=closure,proto3" json:"closure,omitempty"` + // One-liner overview of the entity. + ShortDescription string `protobuf:"bytes,3,opt,name=short_description,json=shortDescription,proto3" json:"short_description,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Task) Reset() { *m = Task{} } @@ -159,6 +161,13 @@ func (m *Task) GetClosure() *TaskClosure { return nil } +func (m *Task) GetShortDescription() string { + if m != nil { + return m.ShortDescription + } + return "" +} + // Represents a list of tasks returned from the admin. // See :ref:`ref_flyteidl.admin.Task` for more details type TaskList struct { @@ -214,7 +223,9 @@ func (m *TaskList) GetToken() string { // Represents a structure that encapsulates the user-configured specification of the task. type TaskSpec struct { // Template of the task that encapsulates all the metadata of the task. - Template *core.TaskTemplate `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + Template *core.TaskTemplate `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + // Represents the specification for description entity. + Description *DescriptionEntity `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -252,6 +263,13 @@ func (m *TaskSpec) GetTemplate() *core.TaskTemplate { return nil } +func (m *TaskSpec) GetDescription() *DescriptionEntity { + if m != nil { + return m.Description + } + return nil +} + // Compute task attributes which include values derived from the TaskSpec, as well as plugin-specific data // and task metadata. type TaskClosure struct { @@ -315,30 +333,34 @@ func init() { func init() { proto.RegisterFile("flyteidl/admin/task.proto", fileDescriptor_9204120d588b2162) } var fileDescriptor_9204120d588b2162 = []byte{ - // 389 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0x31, 0xef, 0xd3, 0x30, - 0x10, 0xc5, 0x95, 0xf2, 0x2f, 0xb4, 0x2e, 0x20, 0x61, 0x75, 0x48, 0x5b, 0x04, 0x55, 0xa6, 0x82, - 0xc0, 0x96, 0x8a, 0xaa, 0x8a, 0x0d, 0xc8, 0x84, 0xd4, 0xc9, 0x74, 0x62, 0xa9, 0x12, 0xe7, 0x9a, - 0x5a, 0x4d, 0x62, 0x13, 0x3b, 0x03, 0x5f, 0x81, 0x4f, 0x8d, 0xec, 0x38, 0x51, 0x83, 0xca, 0xf0, - 0x1f, 0xcf, 0xf7, 0xcb, 0x7b, 0x77, 0x97, 0x87, 0x16, 0xe7, 0xe2, 0xb7, 0x01, 0x91, 0x15, 0x34, - 0xc9, 0x4a, 0x51, 0x51, 0x93, 0xe8, 0x2b, 0x51, 0xb5, 0x34, 0x12, 0xbf, 0xec, 0x5a, 0xc4, 0xb5, - 0x96, 0x6f, 0x7a, 0x94, 0xcb, 0x1a, 0xa8, 0xc8, 0xa0, 0x32, 0xe2, 0x2c, 0xa0, 0x6e, 0xf9, 0xe5, - 0x62, 0xd8, 0xb7, 0x4a, 0xda, 0xb7, 0x5e, 0x0f, 0x5b, 0x5c, 0x96, 0x4a, 0x14, 0xfd, 0x87, 0x6f, - 0x73, 0x29, 0xf3, 0x02, 0xa8, 0xab, 0xd2, 0xe6, 0x4c, 0x8d, 0x28, 0x41, 0x9b, 0xa4, 0x54, 0x2d, - 0x10, 0x15, 0xe8, 0xd5, 0x31, 0xd1, 0xd7, 0xb8, 0x86, 0xc4, 0x00, 0x83, 0x5f, 0x0d, 0x68, 0x83, - 0xdf, 0xa1, 0x91, 0xc8, 0xc2, 0x60, 0x1d, 0x6c, 0x66, 0xdb, 0x05, 0xe9, 0x67, 0xb5, 0x06, 0xe4, - 0x7b, 0x3f, 0x1b, 0x1b, 0x89, 0x0c, 0x7f, 0x40, 0x0f, 0x5a, 0x01, 0x0f, 0x47, 0x0e, 0x0e, 0xc9, - 0x70, 0x31, 0x62, 0xb5, 0x7f, 0x28, 0xe0, 0xcc, 0x51, 0xd1, 0x1c, 0xe1, 0x5b, 0x37, 0xad, 0x64, - 0xa5, 0x21, 0xba, 0xa0, 0x07, 0xfb, 0xfa, 0x18, 0xdb, 0x1d, 0x7a, 0xc6, 0x0b, 0xa9, 0x9b, 0x1a, - 0xbc, 0xf3, 0xea, 0x9e, 0x73, 0xdc, 0x22, 0xac, 0x63, 0xa3, 0x03, 0x9a, 0xd8, 0xf7, 0x83, 0xd0, - 0x06, 0xbf, 0x47, 0x63, 0x77, 0xc7, 0x30, 0x58, 0x3f, 0xd9, 0xcc, 0xb6, 0xf3, 0x7b, 0x02, 0xac, - 0x45, 0xf0, 0x1c, 0x8d, 0x8d, 0xbc, 0x42, 0xe5, 0xcc, 0xa6, 0xac, 0x2d, 0xa2, 0xb8, 0x55, 0xb3, - 0xfb, 0xe1, 0x3d, 0x9a, 0x18, 0x28, 0x55, 0x91, 0x18, 0xf0, 0x1b, 0xac, 0xfe, 0xd9, 0xc0, 0xa2, - 0x47, 0x8f, 0xb0, 0x1e, 0x8e, 0xfe, 0x04, 0x68, 0x76, 0x33, 0x2b, 0xfe, 0x82, 0x5e, 0xf8, 0x7f, - 0x98, 0x9d, 0xac, 0xf9, 0x7f, 0xd4, 0x62, 0xcf, 0xb8, 0x29, 0x9f, 0xf3, 0x9b, 0x0a, 0x7f, 0x46, - 0x88, 0xbb, 0x03, 0x67, 0xa7, 0xc4, 0xf8, 0xf3, 0x2c, 0x49, 0x1b, 0x04, 0xd2, 0x05, 0x81, 0x1c, - 0xbb, 0x20, 0xb0, 0xa9, 0xa7, 0xbf, 0x9a, 0x6f, 0xfb, 0x9f, 0xbb, 0x5c, 0x98, 0x4b, 0x93, 0x12, - 0x2e, 0x4b, 0xea, 0x1c, 0x65, 0x9d, 0xd3, 0x3e, 0x62, 0x39, 0x54, 0x54, 0xa5, 0x1f, 0x73, 0x49, - 0x87, 0xd9, 0x4e, 0x9f, 0x3a, 0xdd, 0x4f, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x38, 0xe5, 0xba, - 0x67, 0xf4, 0x02, 0x00, 0x00, + // 454 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0x4f, 0x8f, 0xd3, 0x30, + 0x10, 0xc5, 0x95, 0xee, 0x2e, 0x6c, 0x5d, 0x40, 0xac, 0xd5, 0x43, 0xda, 0x45, 0x50, 0x72, 0xa1, + 0xfc, 0xb3, 0xa5, 0x45, 0xab, 0x15, 0x37, 0xa0, 0x70, 0x40, 0xda, 0x93, 0xe9, 0x89, 0x4b, 0x95, + 0x3a, 0xd3, 0xac, 0xd5, 0x24, 0x36, 0xf1, 0xf4, 0xb0, 0xdf, 0x00, 0x71, 0xe7, 0xfb, 0x22, 0x3b, + 0x6e, 0x48, 0xaa, 0xe5, 0xc0, 0xd1, 0x9e, 0x9f, 0x67, 0xde, 0x1b, 0x3f, 0x32, 0xd9, 0x14, 0xb7, + 0x08, 0x2a, 0x2b, 0x78, 0x9a, 0x95, 0xaa, 0xe2, 0x98, 0xda, 0x2d, 0x33, 0xb5, 0x46, 0x4d, 0x1f, + 0xed, 0x4b, 0xcc, 0x97, 0xa6, 0x4f, 0x5b, 0x54, 0xea, 0x1a, 0xb8, 0xca, 0xa0, 0x42, 0xb5, 0x51, + 0x50, 0x37, 0xfc, 0x74, 0xd2, 0xaf, 0xbb, 0x4e, 0x36, 0x94, 0x9e, 0xf4, 0x4b, 0x52, 0x97, 0x46, + 0x15, 0xed, 0xc3, 0x17, 0x07, 0x1a, 0x32, 0xb0, 0xb2, 0x56, 0x06, 0x95, 0xae, 0x56, 0x6e, 0x06, + 0xde, 0x06, 0xf0, 0x59, 0xae, 0x75, 0x5e, 0x00, 0xf7, 0xa7, 0xf5, 0x6e, 0xc3, 0x51, 0x95, 0x60, + 0x31, 0x2d, 0x4d, 0x03, 0x24, 0x05, 0x39, 0x5b, 0xa6, 0x76, 0xbb, 0xa8, 0x21, 0x45, 0x10, 0xf0, + 0x63, 0x07, 0x16, 0xe9, 0x4b, 0x32, 0x50, 0x59, 0x1c, 0xcd, 0xa2, 0xf9, 0xe8, 0x62, 0xc2, 0x5a, + 0x53, 0x4e, 0x09, 0xfb, 0xda, 0x9a, 0x10, 0x03, 0x95, 0xd1, 0x37, 0xe4, 0xd8, 0x1a, 0x90, 0xf1, + 0xc0, 0xc3, 0x31, 0xeb, 0x6f, 0x80, 0xb9, 0xde, 0xdf, 0x0c, 0x48, 0xe1, 0xa9, 0x64, 0x4c, 0x68, + 0x77, 0x9a, 0x35, 0xba, 0xb2, 0x90, 0xfc, 0x8e, 0xc8, 0xb1, 0xbb, 0xfe, 0x9f, 0xb9, 0x97, 0xe4, + 0xbe, 0x2c, 0xb4, 0xdd, 0xd5, 0x10, 0x46, 0x9f, 0xdf, 0x35, 0x7a, 0xd1, 0x20, 0x62, 0xcf, 0xd2, + 0xd7, 0xe4, 0xcc, 0xde, 0xe8, 0x1a, 0x57, 0x9d, 0x8d, 0xc5, 0x47, 0xb3, 0x68, 0x3e, 0x14, 0x8f, + 0x7d, 0xe1, 0xf3, 0xdf, 0xfb, 0xe4, 0x9a, 0x9c, 0xba, 0x26, 0xd7, 0xca, 0x22, 0x7d, 0x45, 0x4e, + 0xfc, 0xf7, 0xc4, 0xd1, 0xec, 0x68, 0x3e, 0xba, 0x18, 0xdf, 0x35, 0x4d, 0x34, 0x08, 0x1d, 0x93, + 0x13, 0xd4, 0x5b, 0xa8, 0xbc, 0xb2, 0xa1, 0x68, 0x0e, 0xc9, 0xcf, 0xa8, 0x69, 0xe7, 0xd6, 0x41, + 0xaf, 0xc8, 0x29, 0x42, 0x69, 0x8a, 0x14, 0x21, 0xf8, 0x3d, 0x3f, 0xf0, 0xeb, 0xd0, 0x65, 0x40, + 0x44, 0x0b, 0xd3, 0x05, 0x19, 0x75, 0xa5, 0x37, 0xde, 0x9f, 0x1f, 0xaa, 0xe9, 0xb8, 0xf8, 0xe2, + 0xe3, 0x20, 0xba, 0xaf, 0x92, 0x5f, 0x11, 0x19, 0x75, 0xd6, 0x43, 0x3f, 0x90, 0x87, 0x21, 0x60, + 0xd9, 0xca, 0x59, 0xf8, 0x87, 0xa4, 0x45, 0x60, 0xbc, 0xd7, 0x07, 0xb2, 0x73, 0xa2, 0xef, 0x09, + 0x91, 0xfe, 0x53, 0xb3, 0x55, 0x8a, 0x41, 0xd5, 0x94, 0x35, 0xe1, 0x63, 0xfb, 0xf0, 0xb1, 0xe5, + 0x3e, 0x7c, 0x62, 0x18, 0xe8, 0x8f, 0xf8, 0xe9, 0xea, 0xfb, 0x65, 0xae, 0xf0, 0x66, 0xb7, 0x66, + 0x52, 0x97, 0xdc, 0x4f, 0xd4, 0x75, 0xce, 0xdb, 0x84, 0xe7, 0x50, 0x71, 0xb3, 0x7e, 0x9b, 0x6b, + 0xde, 0x0f, 0xfd, 0xfa, 0x9e, 0xef, 0xfb, 0xee, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xef, 0xf4, + 0x1d, 0x42, 0x91, 0x03, 0x00, 0x00, } diff --git a/flyteidl/gen/pb-go/flyteidl/admin/task.pb.validate.go b/flyteidl/gen/pb-go/flyteidl/admin/task.pb.validate.go index ec3bffda1ac..aa781643a4e 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/task.pb.validate.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/task.pb.validate.go @@ -217,6 +217,8 @@ func (m *Task) Validate() error { } } + // no validation rules for ShortDescription + return nil } @@ -372,6 +374,16 @@ func (m *TaskSpec) Validate() error { } } + if v, ok := interface{}(m.GetDescription()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return TaskSpecValidationError{ + field: "Description", + reason: "embedded message failed validation", + cause: err, + } + } + } + return nil } diff --git a/flyteidl/gen/pb-go/flyteidl/admin/workflow.pb.go b/flyteidl/gen/pb-go/flyteidl/admin/workflow.pb.go index f411e6895fc..756045f43bc 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/workflow.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/workflow.pb.go @@ -113,10 +113,12 @@ type Workflow struct { // id represents the unique identifier of the workflow. Id *core.Identifier `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // closure encapsulates all the fields that maps to a compiled version of the workflow. - Closure *WorkflowClosure `protobuf:"bytes,2,opt,name=closure,proto3" json:"closure,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Closure *WorkflowClosure `protobuf:"bytes,2,opt,name=closure,proto3" json:"closure,omitempty"` + // One-liner overview of the entity. + ShortDescription string `protobuf:"bytes,3,opt,name=short_description,json=shortDescription,proto3" json:"short_description,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Workflow) Reset() { *m = Workflow{} } @@ -158,6 +160,13 @@ func (m *Workflow) GetClosure() *WorkflowClosure { return nil } +func (m *Workflow) GetShortDescription() string { + if m != nil { + return m.ShortDescription + } + return "" +} + // Represents a list of workflows returned from the admin. // See :ref:`ref_flyteidl.admin.Workflow` for more details type WorkflowList struct { @@ -217,10 +226,12 @@ type WorkflowSpec struct { // Workflows that are embedded into other workflows need to be passed alongside the parent workflow to the // propeller compiler (since the compiler doesn't have any knowledge of other workflows - ie, it doesn't reach out // to Admin to see other registered workflows). In fact, subworkflows do not even need to be registered. - SubWorkflows []*core.WorkflowTemplate `protobuf:"bytes,2,rep,name=sub_workflows,json=subWorkflows,proto3" json:"sub_workflows,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SubWorkflows []*core.WorkflowTemplate `protobuf:"bytes,2,rep,name=sub_workflows,json=subWorkflows,proto3" json:"sub_workflows,omitempty"` + // Represents the specification for description entity. + Description *DescriptionEntity `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *WorkflowSpec) Reset() { *m = WorkflowSpec{} } @@ -262,6 +273,13 @@ func (m *WorkflowSpec) GetSubWorkflows() []*core.WorkflowTemplate { return nil } +func (m *WorkflowSpec) GetDescription() *DescriptionEntity { + if m != nil { + return m.Description + } + return nil +} + // A container holding the compiled workflow produced from the WorkflowSpec and additional metadata. type WorkflowClosure struct { // Represents the compiled representation of the workflow from the specification provided. @@ -488,38 +506,42 @@ func init() { func init() { proto.RegisterFile("flyteidl/admin/workflow.proto", fileDescriptor_827ade3f2372dc85) } var fileDescriptor_827ade3f2372dc85 = []byte{ - // 528 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x5f, 0x6b, 0xd4, 0x4e, - 0x14, 0xfd, 0x6d, 0x7e, 0x5a, 0x77, 0x6f, 0xeb, 0xbf, 0xa0, 0x12, 0xd7, 0xea, 0x96, 0x80, 0x52, - 0x1f, 0x9c, 0x48, 0xa5, 0x4a, 0xf1, 0xc9, 0x6e, 0x2b, 0x0a, 0x3e, 0xcd, 0x16, 0x04, 0x11, 0x96, - 0x64, 0x72, 0x13, 0x87, 0x26, 0x99, 0x38, 0x33, 0xa1, 0xfa, 0x31, 0x7c, 0xf0, 0x03, 0xf8, 0x4d, - 0x65, 0x27, 0x33, 0x59, 0x37, 0x65, 0xb5, 0xfa, 0x98, 0x9c, 0x33, 0xe7, 0x9c, 0x7b, 0xe7, 0x30, - 0x70, 0x3f, 0x2b, 0xbe, 0x6a, 0xe4, 0x69, 0x11, 0xc5, 0x69, 0xc9, 0xab, 0xe8, 0x4c, 0xc8, 0xd3, - 0xac, 0x10, 0x67, 0xa4, 0x96, 0x42, 0x0b, 0xff, 0x9a, 0x83, 0x89, 0x81, 0xc7, 0xdb, 0x1d, 0x9d, - 0x09, 0x89, 0x11, 0x13, 0x65, 0xcd, 0x0b, 0x94, 0x2d, 0x7b, 0xfc, 0x60, 0x15, 0xe5, 0x29, 0x56, - 0x9a, 0x67, 0xbc, 0xc3, 0x7b, 0xa7, 0x57, 0xbd, 0xc6, 0x93, 0x5c, 0x88, 0xbc, 0xc0, 0xc8, 0x7c, - 0x25, 0x4d, 0x16, 0x69, 0x5e, 0xa2, 0xd2, 0x71, 0x59, 0xb7, 0x84, 0x50, 0xc3, 0xed, 0xf7, 0xf6, - 0xc8, 0x54, 0x62, 0xac, 0x91, 0xe2, 0xe7, 0x06, 0x95, 0xf6, 0x1f, 0x83, 0xc7, 0xd3, 0x60, 0xb0, - 0x33, 0xd8, 0xdd, 0xdc, 0xbb, 0x4b, 0xba, 0xc8, 0x0b, 0x13, 0xf2, 0xb6, 0x0b, 0x41, 0x3d, 0x9e, - 0xfa, 0x4f, 0xe1, 0x92, 0xaa, 0x91, 0x05, 0x9e, 0x21, 0x6f, 0x93, 0xd5, 0xf9, 0x88, 0xd3, 0x9f, - 0xd5, 0xc8, 0xa8, 0x61, 0x86, 0x01, 0xdc, 0xe9, 0xbb, 0xaa, 0x5a, 0x54, 0x0a, 0xc3, 0x1a, 0x86, - 0x0e, 0xf9, 0x9b, 0x08, 0x07, 0x70, 0x85, 0x15, 0x42, 0x35, 0x12, 0x6d, 0x8a, 0xc9, 0xba, 0x14, - 0xd3, 0x96, 0x46, 0x1d, 0x3f, 0xfc, 0x08, 0x5b, 0x0e, 0x7b, 0xc7, 0x95, 0xf6, 0x9f, 0xc3, 0xc8, - 0x2d, 0x51, 0x05, 0x83, 0x9d, 0xff, 0x77, 0x37, 0xf7, 0x82, 0x75, 0x62, 0x74, 0x49, 0xf5, 0x6f, - 0xc1, 0x65, 0x2d, 0x4e, 0xb1, 0x32, 0x01, 0x46, 0xb4, 0xfd, 0x08, 0xbf, 0x0d, 0x96, 0xf2, 0x8b, - 0x05, 0xf8, 0x2f, 0x61, 0xa8, 0xb1, 0xac, 0x8b, 0x58, 0xa3, 0x1d, 0x6d, 0xd2, 0x1b, 0xcd, 0xd1, - 0x4f, 0x2c, 0x8d, 0x76, 0x07, 0xfc, 0x23, 0xb8, 0xaa, 0x9a, 0x64, 0xbe, 0xcc, 0xe7, 0x99, 0x7c, - 0x7f, 0x54, 0xd8, 0x52, 0x4d, 0xe2, 0x7e, 0xaa, 0xf0, 0xc7, 0x00, 0xae, 0xf7, 0xd6, 0xe1, 0xcf, - 0xe0, 0xa6, 0x2d, 0x5e, 0xda, 0xc9, 0xdb, 0x7c, 0x8f, 0x7a, 0xea, 0x53, 0xcb, 0xeb, 0x6f, 0xf4, - 0x06, 0xeb, 0x01, 0xfe, 0x01, 0x00, 0x33, 0xd7, 0x9b, 0xce, 0x63, 0x6d, 0x2f, 0x66, 0x4c, 0xda, - 0x4a, 0x12, 0x57, 0x49, 0x72, 0xe2, 0x2a, 0x49, 0x47, 0x96, 0xfd, 0x4a, 0x87, 0x14, 0x1e, 0x3a, - 0x99, 0x63, 0x29, 0x85, 0x3c, 0xfe, 0xc2, 0x95, 0x56, 0x47, 0x3c, 0xcb, 0x50, 0x62, 0xa5, 0x67, - 0x5a, 0x36, 0x4c, 0x2f, 0x82, 0x5f, 0xbc, 0x24, 0x6b, 0x34, 0x5b, 0x12, 0x8b, 0x8b, 0x7f, 0xd2, - 0xfc, 0xee, 0xc1, 0xbd, 0xb6, 0xc2, 0x4e, 0xfa, 0x75, 0xcc, 0x8b, 0xc5, 0x3a, 0x30, 0x56, 0xa2, - 0xf2, 0x1b, 0x18, 0xa3, 0xb1, 0x99, 0xa7, 0x2e, 0xfb, 0x5c, 0x39, 0x23, 0x6b, 0xb1, 0xbf, 0xae, - 0x5e, 0xbf, 0x9d, 0xfc, 0xcd, 0x7f, 0x34, 0xc0, 0x75, 0x5b, 0x59, 0xda, 0x72, 0x37, 0xde, 0x2f, - 0xb6, 0xde, 0x85, 0x6d, 0xcf, 0x2f, 0x67, 0x69, 0x7b, 0x1e, 0x3b, 0x1c, 0xc2, 0x86, 0x34, 0x73, - 0x1f, 0xbe, 0xf8, 0xb0, 0x9f, 0x73, 0xfd, 0xa9, 0x49, 0x08, 0x13, 0x65, 0x64, 0x8c, 0x84, 0xcc, - 0xa3, 0xee, 0xb1, 0xca, 0xb1, 0x8a, 0xea, 0xe4, 0x49, 0x2e, 0xa2, 0xd5, 0xc7, 0x32, 0xd9, 0x30, - 0xbd, 0x78, 0xf6, 0x33, 0x00, 0x00, 0xff, 0xff, 0x13, 0xc5, 0xff, 0xe5, 0x45, 0x05, 0x00, 0x00, + // 589 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x5d, 0x6f, 0xd3, 0x30, + 0x14, 0x25, 0x19, 0x8c, 0xd5, 0x1d, 0xb0, 0x45, 0x80, 0x42, 0x19, 0x6c, 0x44, 0x02, 0x8a, 0x10, + 0x09, 0x2a, 0x1a, 0x68, 0xe2, 0x89, 0xb5, 0x45, 0x20, 0xf1, 0xe4, 0x4e, 0x9a, 0x84, 0x90, 0xa2, + 0x7c, 0xdc, 0x64, 0xd6, 0x92, 0x38, 0xd8, 0x8e, 0xc6, 0x7e, 0x08, 0x8f, 0x3c, 0xf0, 0xa7, 0xf8, + 0x3d, 0xa8, 0x8e, 0x9d, 0xb4, 0x99, 0x0a, 0x83, 0xc7, 0xe4, 0x1e, 0x9f, 0x73, 0xee, 0xf1, 0xbd, + 0x46, 0x0f, 0x92, 0xec, 0x5c, 0x00, 0x89, 0x33, 0x2f, 0x88, 0x73, 0x52, 0x78, 0x67, 0x94, 0x9d, + 0x26, 0x19, 0x3d, 0x73, 0x4b, 0x46, 0x05, 0xb5, 0x6e, 0xea, 0xb2, 0x2b, 0xcb, 0x83, 0x9d, 0x06, + 0x1e, 0x51, 0x06, 0x5e, 0x44, 0xf3, 0x92, 0x64, 0xc0, 0x6a, 0xf4, 0xe0, 0xe1, 0x72, 0x95, 0xc4, + 0x50, 0x08, 0x92, 0x90, 0xa6, 0xde, 0x39, 0xbd, 0xac, 0x35, 0x78, 0xda, 0xb1, 0x12, 0x03, 0x8f, + 0x18, 0x29, 0x05, 0xa1, 0x85, 0x3f, 0x27, 0x12, 0xe7, 0x0a, 0xb8, 0x9b, 0x52, 0x9a, 0x66, 0xe0, + 0xc9, 0xaf, 0xb0, 0x4a, 0x3c, 0x41, 0x72, 0xe0, 0x22, 0xc8, 0xcb, 0x1a, 0xe0, 0x08, 0x74, 0xe7, + 0x58, 0x71, 0x8f, 0x19, 0x04, 0x02, 0x30, 0x7c, 0xad, 0x80, 0x0b, 0xeb, 0x19, 0x32, 0x49, 0x6c, + 0x1b, 0x7b, 0xc6, 0xb0, 0x3f, 0xba, 0xe7, 0x36, 0xbd, 0xcd, 0xdd, 0xb8, 0x1f, 0x1b, 0xb7, 0xd8, + 0x24, 0xb1, 0xf5, 0x12, 0x5d, 0xe5, 0x25, 0x44, 0xb6, 0x29, 0xc1, 0x3b, 0xee, 0x72, 0x10, 0xae, + 0xe6, 0x9f, 0x95, 0x10, 0x61, 0x89, 0x74, 0x6c, 0x74, 0xb7, 0xab, 0xca, 0x4b, 0x5a, 0x70, 0x70, + 0x7e, 0x18, 0x68, 0x43, 0x97, 0xfe, 0xc5, 0xc3, 0x01, 0xba, 0x1e, 0x65, 0x94, 0x57, 0x0c, 0x94, + 0x8d, 0xdd, 0x55, 0x36, 0xc6, 0x35, 0x0c, 0x6b, 0xbc, 0xf5, 0x1c, 0x6d, 0xf3, 0x13, 0xca, 0x84, + 0xbf, 0x90, 0xa2, 0xbd, 0xb6, 0x67, 0x0c, 0x7b, 0x78, 0x4b, 0x16, 0x26, 0xed, 0x7f, 0xe7, 0x0b, + 0xda, 0xd4, 0x44, 0x9f, 0x08, 0x17, 0xd6, 0x6b, 0xd4, 0xd3, 0x77, 0xc3, 0x6d, 0x63, 0x6f, 0x6d, + 0xd8, 0x1f, 0xd9, 0xab, 0x94, 0x71, 0x0b, 0xb5, 0x6e, 0xa3, 0x6b, 0x82, 0x9e, 0x42, 0x21, 0xdd, + 0xf6, 0x70, 0xfd, 0xe1, 0xfc, 0x32, 0x5a, 0xfa, 0x79, 0x5c, 0xd6, 0x5b, 0xb4, 0x21, 0x20, 0x2f, + 0xb3, 0x40, 0x80, 0xca, 0x61, 0xb7, 0x93, 0x83, 0x86, 0x1f, 0x29, 0x18, 0x6e, 0x0e, 0x58, 0x13, + 0x74, 0x83, 0x57, 0xa1, 0xdf, 0xfa, 0x33, 0xa5, 0xbf, 0xbf, 0x32, 0x6c, 0xf2, 0x2a, 0x3c, 0x6e, + 0x9c, 0x8e, 0x51, 0xbf, 0x1b, 0x4c, 0x7f, 0xf4, 0xa8, 0xdb, 0xe3, 0x42, 0x46, 0x53, 0x39, 0x80, + 0x78, 0xf1, 0x94, 0xf3, 0xd3, 0x40, 0xb7, 0x3a, 0x17, 0x60, 0xcd, 0xd0, 0xb6, 0x5a, 0x8a, 0xb8, + 0xf1, 0xa8, 0x9a, 0x7c, 0xd2, 0xb1, 0x38, 0x56, 0xb8, 0xee, 0x1d, 0x6e, 0x45, 0x9d, 0x82, 0x75, + 0x80, 0x50, 0x24, 0x27, 0x2a, 0xf6, 0x03, 0xa1, 0x46, 0x61, 0xe0, 0xd6, 0x5b, 0xe0, 0xea, 0x2d, + 0x70, 0x8f, 0xf4, 0x16, 0xe0, 0x9e, 0x42, 0xbf, 0x13, 0x0e, 0x46, 0x8f, 0x35, 0xcd, 0x94, 0x31, + 0xca, 0xa6, 0xdf, 0x08, 0x17, 0x7c, 0x42, 0x92, 0x04, 0x18, 0x14, 0x62, 0x26, 0x58, 0x15, 0x89, + 0xb9, 0xf1, 0xcb, 0x8f, 0xe5, 0x0a, 0xce, 0x1a, 0x14, 0x05, 0xd9, 0x7f, 0x71, 0x7e, 0x37, 0xd1, + 0xfd, 0x7a, 0x6b, 0x34, 0xf5, 0xfb, 0x80, 0x64, 0xf3, 0x38, 0x20, 0xe0, 0xb4, 0xb0, 0x2a, 0x34, + 0x00, 0x29, 0xe3, 0xc7, 0xda, 0xbb, 0xcf, 0xb5, 0x90, 0x92, 0xd8, 0x5f, 0x35, 0xa3, 0x7f, 0xec, + 0xfc, 0xc3, 0x15, 0x6c, 0xc3, 0xaa, 0x54, 0x5a, 0x59, 0xa2, 0xdb, 0x5b, 0x90, 0x35, 0x2f, 0x2d, + 0x7b, 0x31, 0x9c, 0x56, 0xf6, 0x62, 0xed, 0x70, 0x03, 0xad, 0x33, 0xd9, 0xf7, 0xe1, 0x9b, 0xcf, + 0xfb, 0x29, 0x11, 0x27, 0x55, 0xe8, 0x46, 0x34, 0xf7, 0xa4, 0x10, 0x65, 0xa9, 0xd7, 0x3c, 0x95, + 0x29, 0x14, 0x5e, 0x19, 0xbe, 0x48, 0xa9, 0xb7, 0xfc, 0x7a, 0x86, 0xeb, 0x72, 0x2e, 0x5e, 0xfd, + 0x0e, 0x00, 0x00, 0xff, 0xff, 0x55, 0xf4, 0x95, 0xe1, 0xe1, 0x05, 0x00, 0x00, } diff --git a/flyteidl/gen/pb-go/flyteidl/admin/workflow.pb.validate.go b/flyteidl/gen/pb-go/flyteidl/admin/workflow.pb.validate.go index 1f750efa917..b5989e2ca71 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/workflow.pb.validate.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/workflow.pb.validate.go @@ -217,6 +217,8 @@ func (m *Workflow) Validate() error { } } + // no validation rules for ShortDescription + return nil } @@ -389,6 +391,16 @@ func (m *WorkflowSpec) Validate() error { } + if v, ok := interface{}(m.GetDescription()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WorkflowSpecValidationError{ + field: "Description", + reason: "embedded message failed validation", + cause: err, + } + } + } + return nil } diff --git a/flyteidl/gen/pb-go/flyteidl/service/admin.pb.go b/flyteidl/gen/pb-go/flyteidl/service/admin.pb.go index 8ad0e21c362..2e659d60bbc 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/admin.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/service/admin.pb.go @@ -7,6 +7,7 @@ import ( context "context" fmt "fmt" admin "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin" + _ "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/core" proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger/options" _ "google.golang.org/genproto/googleapis/api/annotations" @@ -30,220 +31,227 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("flyteidl/service/admin.proto", fileDescriptor_5cfa31da1d67295d) } var fileDescriptor_5cfa31da1d67295d = []byte{ - // 3398 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0x4b, 0x8c, 0x1c, 0xc5, - 0xf9, 0x57, 0x8f, 0x6d, 0xfe, 0xfa, 0x37, 0x18, 0xdb, 0x65, 0x1c, 0xdb, 0x8d, 0x6d, 0x8a, 0x31, - 0xb6, 0x77, 0xd7, 0xb3, 0x3b, 0x0b, 0x18, 0x8c, 0x0d, 0x18, 0xda, 0xaf, 0xd5, 0x62, 0x30, 0x68, - 0x43, 0x08, 0x72, 0x48, 0x56, 0x35, 0xd3, 0x35, 0x33, 0x65, 0xf7, 0x74, 0x4f, 0xba, 0x6a, 0x76, - 0x3d, 0x58, 0x96, 0x90, 0x15, 0x92, 0x08, 0x25, 0x97, 0x8e, 0x94, 0x08, 0x94, 0x80, 0x48, 0x4e, - 0x20, 0x90, 0x92, 0x20, 0x71, 0x25, 0x8a, 0x14, 0x29, 0x89, 0x10, 0x17, 0xa4, 0xbc, 0xa4, 0x44, - 0x89, 0x94, 0x1c, 0xa2, 0x24, 0xe2, 0xe0, 0x48, 0xb9, 0x04, 0x11, 0x55, 0x75, 0x55, 0xbf, 0xbb, - 0xa7, 0x67, 0x59, 0x22, 0x21, 0xe5, 0xe4, 0xf5, 0x7c, 0x5f, 0x55, 0x7f, 0xbf, 0x5f, 0x7d, 0xaf, - 0xae, 0xaa, 0xd6, 0xf7, 0x74, 0xec, 0x11, 0xc3, 0xc4, 0xb2, 0x9b, 0x14, 0x7b, 0x2b, 0xa4, 0x8d, - 0x9b, 0xc8, 0xea, 0x13, 0x67, 0x6e, 0xe0, 0xb9, 0xcc, 0x05, 0x5b, 0x95, 0x74, 0x4e, 0x4a, 0x8d, - 0x3d, 0x5d, 0xd7, 0xed, 0xda, 0xb8, 0x89, 0x06, 0xa4, 0x89, 0x1c, 0xc7, 0x65, 0x88, 0x11, 0xd7, - 0xa1, 0x81, 0xbe, 0x11, 0xcd, 0x26, 0x66, 0x69, 0x0e, 0x3c, 0xf7, 0x22, 0x6e, 0x33, 0x29, 0x9d, - 0xcb, 0x97, 0x2e, 0x5b, 0x6e, 0x1f, 0x11, 0x67, 0x19, 0x31, 0xe6, 0x91, 0xd6, 0x90, 0x61, 0x35, - 0xdb, 0xa1, 0x02, 0xfd, 0x8c, 0xe2, 0xee, 0x94, 0x22, 0x43, 0xf4, 0x92, 0x14, 0xed, 0x4d, 0x89, - 0x56, 0x5d, 0xef, 0x52, 0xc7, 0x76, 0x57, 0xa5, 0x78, 0xaa, 0x40, 0x9c, 0x7d, 0x06, 0x4c, 0x69, - 0xda, 0x68, 0xe8, 0xb4, 0x7b, 0xcb, 0x03, 0x1b, 0x49, 0xb2, 0x0c, 0x23, 0xa5, 0x81, 0x57, 0xb0, - 0xa3, 0xa0, 0xef, 0x4b, 0xcb, 0x2e, 0xe3, 0xf6, 0x90, 0x33, 0x57, 0x00, 0xb5, 0x8f, 0x58, 0xbb, - 0x87, 0x5a, 0x36, 0x5e, 0xf6, 0x30, 0x75, 0x87, 0x5e, 0x1b, 0x4b, 0xc5, 0xfd, 0x29, 0x45, 0xc7, - 0xb5, 0xf0, 0x72, 0x7a, 0xb6, 0xfd, 0x39, 0x7c, 0x64, 0x94, 0xd2, 0x6b, 0xb5, 0x82, 0x3d, 0x1a, - 0x49, 0x6f, 0x4d, 0x49, 0xdb, 0x6e, 0xbf, 0x1f, 0x0a, 0x1b, 0xe2, 0x9f, 0xf6, 0x6c, 0x17, 0x3b, - 0xb3, 0x74, 0x15, 0x75, 0xbb, 0xd8, 0x6b, 0xba, 0x03, 0xe1, 0x08, 0x59, 0xa7, 0xb8, 0xeb, 0x9a, - 0xa3, 0xdf, 0x64, 0xf2, 0x49, 0x3e, 0x1b, 0xf8, 0x10, 0xf8, 0x59, 0x4d, 0xd7, 0x4f, 0x79, 0x18, - 0x31, 0xfc, 0x24, 0xa2, 0x97, 0xc0, 0xed, 0xa1, 0x5f, 0xcc, 0x05, 0xbe, 0xc7, 0x7f, 0x0d, 0xe4, - 0x4b, 0xf8, 0xcb, 0x43, 0x4c, 0x99, 0x51, 0x2f, 0x53, 0xa1, 0x03, 0xd7, 0xa1, 0xb8, 0xfe, 0x81, - 0xe6, 0x9b, 0xef, 0x6b, 0xc6, 0xc1, 0xe0, 0x67, 0x88, 0x1c, 0x0b, 0x7a, 0xb8, 0x4b, 0x28, 0xc3, - 0x1e, 0x44, 0x90, 0x53, 0x00, 0x2d, 0xdc, 0x21, 0x0e, 0x11, 0x1c, 0x3c, 0x72, 0x52, 0xdf, 0x70, - 0x64, 0x7e, 0x1e, 0xdc, 0xaf, 0x1f, 0x5b, 0xc2, 0x6c, 0xe8, 0x39, 0xd8, 0x82, 0x1d, 0xd7, 0x83, - 0x2d, 0xc4, 0x87, 0x89, 0xa7, 0x42, 0xd6, 0x43, 0x0c, 0xf6, 0xd1, 0x08, 0xf6, 0xd0, 0x0a, 0x86, - 0x1d, 0x44, 0x6c, 0x6c, 0xc1, 0x15, 0x64, 0x13, 0x0b, 0x05, 0x73, 0x60, 0x3e, 0xc7, 0x31, 0xf0, - 0x25, 0xfd, 0x99, 0xc4, 0x1c, 0x28, 0x39, 0x83, 0x87, 0x3b, 0xd8, 0xc3, 0x4e, 0x1b, 0x53, 0x88, - 0x1c, 0x48, 0x2c, 0xec, 0x30, 0xd2, 0x46, 0x36, 0xe4, 0xff, 0xb2, 0x51, 0xa0, 0xd3, 0x43, 0x14, - 0x22, 0xdb, 0xc3, 0xc8, 0x1a, 0xc1, 0x16, 0xc6, 0x4e, 0x68, 0x3a, 0xb6, 0xe6, 0xae, 0xbd, 0xff, - 0xe7, 0x6f, 0xd5, 0x40, 0x7d, 0xb3, 0x88, 0xb9, 0x95, 0x3b, 0xc5, 0x6a, 0xd2, 0xe3, 0xda, 0x0c, - 0xf8, 0xb1, 0xa6, 0xff, 0xdf, 0x02, 0x66, 0x82, 0x44, 0x98, 0x66, 0xe8, 0xf1, 0x16, 0x8f, 0x95, - 0x05, 0xcc, 0x14, 0x87, 0xb7, 0xe4, 0x71, 0x58, 0x77, 0x7d, 0xf3, 0x90, 0x71, 0x60, 0x09, 0x33, - 0x8f, 0xe0, 0x15, 0xce, 0x1a, 0xc4, 0x97, 0x09, 0x65, 0xc4, 0xe9, 0x66, 0x28, 0x13, 0x76, 0x3c, - 0x04, 0x1e, 0x4c, 0xd8, 0xd1, 0xbc, 0x42, 0xac, 0x39, 0x19, 0x98, 0x57, 0xc5, 0x7f, 0x82, 0x68, - 0x0e, 0xfe, 0x76, 0x50, 0x1f, 0x07, 0x7f, 0x49, 0xef, 0xba, 0x0a, 0xfe, 0xa0, 0xe9, 0x37, 0x3e, - 0x4a, 0xa8, 0xb0, 0x7a, 0xd1, 0xa2, 0x60, 0x3e, 0x6d, 0xd6, 0x79, 0xd4, 0xc7, 0xd6, 0x19, 0xc1, - 0xcd, 0xa2, 0xe0, 0xaa, 0x43, 0xb0, 0xc7, 0x47, 0x28, 0x20, 0xd3, 0x95, 0x47, 0xd4, 0x3d, 0xdf, - 0x3c, 0x6d, 0x9c, 0x3c, 0x8b, 0x59, 0xbb, 0x57, 0x88, 0x4b, 0xae, 0x08, 0x1f, 0x43, 0xa1, 0x88, - 0x3b, 0xae, 0x44, 0x9c, 0xc1, 0x90, 0xc1, 0x0e, 0xb1, 0x19, 0xf6, 0x68, 0x00, 0xfd, 0x00, 0xd8, - 0x1f, 0x87, 0xbe, 0x4c, 0x2c, 0xda, 0xbc, 0x12, 0x41, 0x97, 0xb8, 0xc1, 0xdf, 0x34, 0xfd, 0xff, - 0x15, 0x40, 0x0a, 0xf6, 0xa7, 0x8d, 0x5d, 0x92, 0xf1, 0x1c, 0x47, 0xb4, 0x2b, 0x6f, 0x69, 0x04, - 0x80, 0x97, 0x35, 0xdf, 0x3c, 0x66, 0x1c, 0x2d, 0x47, 0x50, 0x6e, 0xf6, 0x33, 0x60, 0x7e, 0xd2, - 0x15, 0xbb, 0x30, 0x05, 0x0e, 0x56, 0x1b, 0x03, 0x7e, 0x5b, 0xd3, 0x6f, 0x0e, 0x22, 0xee, 0xf3, - 0x32, 0x75, 0x82, 0x03, 0x69, 0x34, 0x4a, 0x92, 0x8c, 0xe9, 0x83, 0xe3, 0xd4, 0x64, 0x5c, 0xff, - 0x4b, 0xf3, 0xcd, 0x5f, 0x6b, 0xc6, 0x4c, 0x7e, 0x5c, 0xab, 0x84, 0xfd, 0x69, 0x8e, 0xed, 0xcf, - 0xd4, 0xb7, 0x29, 0xb6, 0x15, 0x1c, 0x11, 0xdf, 0x3f, 0xd5, 0xf4, 0x1b, 0x17, 0x30, 0x0b, 0x89, - 0x1d, 0x1f, 0xe3, 0xbb, 0x8a, 0x38, 0xad, 0xaf, 0xfa, 0xe6, 0x61, 0x63, 0x3a, 0x37, 0xce, 0xf3, - 0x28, 0x14, 0x76, 0x9d, 0x02, 0x66, 0xc6, 0xae, 0x89, 0xe3, 0xfd, 0x1f, 0x9a, 0xbe, 0x85, 0xbb, - 0xb2, 0xb2, 0xe4, 0x13, 0x8f, 0xf9, 0xab, 0xbe, 0x79, 0xce, 0x58, 0x0c, 0x22, 0x66, 0x0c, 0xcc, - 0xca, 0xa1, 0x3f, 0x0d, 0x0e, 0xa5, 0x99, 0x28, 0x0a, 0xff, 0x8f, 0x34, 0x7d, 0x73, 0x1c, 0x6f, - 0xc5, 0x14, 0xb0, 0xa7, 0x68, 0xe5, 0x04, 0xa6, 0xd7, 0x35, 0xdf, 0x7c, 0xd0, 0xb8, 0x3f, 0x95, - 0x06, 0x72, 0x10, 0x95, 0xc3, 0xb0, 0xc0, 0x91, 0xb5, 0x2c, 0xe8, 0x85, 0x06, 0x98, 0xa9, 0x3e, - 0x0e, 0xfc, 0xa5, 0xa6, 0x6f, 0x0d, 0x82, 0xf5, 0x51, 0xd1, 0x23, 0x3d, 0x61, 0x23, 0x07, 0x1c, - 0x4a, 0xe3, 0x8b, 0x64, 0xc9, 0xb4, 0x30, 0x35, 0x5e, 0x51, 0x26, 0x86, 0x0f, 0x35, 0xdf, 0xfc, - 0x9d, 0x66, 0xcc, 0xe6, 0x27, 0x86, 0xa0, 0x3f, 0x83, 0xbc, 0x3f, 0xfb, 0x34, 0xe7, 0x86, 0xdd, - 0xf5, 0x5b, 0x14, 0xf5, 0xb1, 0x8e, 0x53, 0xa4, 0x87, 0x77, 0x35, 0x7d, 0xf3, 0x02, 0x66, 0x31, - 0x92, 0xc7, 0x27, 0x08, 0xa3, 0x98, 0x5d, 0x1e, 0x38, 0x73, 0x46, 0x23, 0x37, 0x45, 0x14, 0x90, - 0x29, 0x2c, 0x3c, 0x0b, 0x4e, 0xe7, 0x59, 0x38, 0x71, 0xa2, 0xb8, 0xae, 0xe9, 0xdb, 0x17, 0x30, - 0x33, 0xdb, 0x8c, 0xac, 0x94, 0x7a, 0x4e, 0x5a, 0xa3, 0x0a, 0xb6, 0x6f, 0x6b, 0xbe, 0xf9, 0x98, - 0x71, 0x2e, 0x04, 0xc7, 0x7a, 0x18, 0x22, 0x31, 0x4f, 0x02, 0x9b, 0x34, 0x06, 0xd2, 0x01, 0x6e, - 0xf3, 0xb4, 0x60, 0xc1, 0xd6, 0x48, 0x06, 0x92, 0x5a, 0xda, 0x44, 0x40, 0x3d, 0x0c, 0x4e, 0x28, - 0xec, 0xc1, 0x6c, 0xcb, 0x13, 0x52, 0xc0, 0xbb, 0x85, 0x1d, 0x3c, 0xc4, 0xd3, 0xa0, 0x28, 0x38, - 0x3c, 0x0e, 0x77, 0x3c, 0x7d, 0xec, 0x2b, 0xc6, 0x2e, 0x12, 0xc8, 0x57, 0xb4, 0x58, 0x56, 0x2c, - 0x07, 0x4f, 0x2b, 0xa3, 0x9f, 0x07, 0x73, 0xa5, 0xe8, 0xb3, 0xc9, 0xf1, 0xba, 0xa6, 0x6f, 0xe3, - 0xf6, 0x44, 0xd6, 0x7d, 0xe2, 0xe5, 0xe0, 0xb9, 0x38, 0xf2, 0x31, 0x0e, 0x5d, 0xb9, 0x1e, 0xc4, - 0x12, 0x62, 0x0c, 0x72, 0x51, 0x49, 0xf8, 0x46, 0x2d, 0x28, 0x81, 0xf1, 0xd5, 0xad, 0x54, 0x14, - 0xc6, 0xad, 0xea, 0x5b, 0x9a, 0x6f, 0x3e, 0x6c, 0x9c, 0xa8, 0x84, 0xad, 0x1c, 0xd0, 0x45, 0x70, - 0x74, 0x8d, 0x41, 0x7c, 0xa1, 0x09, 0x66, 0x27, 0x1a, 0x0a, 0x7e, 0x72, 0x83, 0xbe, 0xf5, 0x73, - 0x03, 0xab, 0x72, 0x7d, 0x08, 0x74, 0x2b, 0xd4, 0x07, 0xa5, 0x28, 0xeb, 0xc3, 0x6f, 0x36, 0xf9, - 0xe6, 0xf3, 0x9b, 0x8c, 0x6b, 0x9b, 0x82, 0xdf, 0x85, 0xdb, 0x53, 0x86, 0xd8, 0x90, 0x42, 0xb7, - 0x53, 0x25, 0xbd, 0x41, 0x93, 0xc1, 0xbe, 0x4b, 0x19, 0x74, 0x9d, 0xfc, 0x34, 0x11, 0x24, 0xfd, - 0x2e, 0x59, 0xc1, 0x0e, 0x54, 0xeb, 0xde, 0x80, 0x01, 0xce, 0x06, 0x14, 0xf4, 0xc0, 0x36, 0x72, - 0x60, 0x2b, 0x8c, 0x37, 0xc4, 0xf8, 0xbb, 0x28, 0xe9, 0xe3, 0x39, 0xb8, 0xd8, 0x81, 0xac, 0x47, - 0x28, 0x6c, 0x23, 0xdb, 0x86, 0x14, 0x33, 0x9a, 0x2a, 0x5a, 0xcc, 0x0d, 0x07, 0x39, 0x56, 0x64, - 0xab, 0x7a, 0x36, 0x89, 0x0a, 0x47, 0xa0, 0xd6, 0x10, 0x00, 0x3d, 0x4c, 0x87, 0x36, 0xe3, 0x00, - 0xa3, 0xc9, 0x57, 0x89, 0x6d, 0x73, 0x1b, 0x44, 0xc5, 0xe1, 0x4a, 0x1d, 0xd7, 0xeb, 0x63, 0xcf, - 0x1e, 0xe5, 0x65, 0x01, 0xa5, 0xdc, 0x47, 0x16, 0x86, 0xc4, 0x89, 0x99, 0x10, 0xa5, 0x85, 0xb8, - 0x3e, 0x71, 0x82, 0x27, 0xa9, 0x0c, 0x91, 0x18, 0x1f, 0x8c, 0x9e, 0x83, 0x8b, 0x8e, 0x78, 0xae, - 0xd8, 0x11, 0xa9, 0x66, 0x46, 0x0f, 0x59, 0x10, 0x41, 0xda, 0xee, 0x61, 0x6b, 0x68, 0x63, 0x88, - 0x28, 0x75, 0xdb, 0x04, 0x31, 0x6c, 0x41, 0xc2, 0x9f, 0xc1, 0x7a, 0x90, 0xb0, 0x46, 0xf0, 0xe4, - 0x50, 0x49, 0x3d, 0xda, 0x22, 0x14, 0xb5, 0x6c, 0x6c, 0x49, 0x8e, 0x71, 0x54, 0x89, 0x4b, 0x2d, - 0x27, 0x14, 0xb6, 0x30, 0xa7, 0x98, 0x62, 0x96, 0x62, 0x5f, 0x94, 0xe9, 0x5c, 0x6b, 0x62, 0xa6, - 0xe0, 0xac, 0x25, 0xd8, 0x09, 0x0c, 0x11, 0x31, 0xb6, 0x68, 0xac, 0x4b, 0xa1, 0xe4, 0xa5, 0xff, - 0xfb, 0x9a, 0xbe, 0x25, 0x68, 0x7b, 0xce, 0xa8, 0x5d, 0x1d, 0x90, 0x79, 0x9f, 0x0a, 0x45, 0xc9, - 0x06, 0xeb, 0xd0, 0x58, 0x3d, 0x19, 0x3f, 0x27, 0x7c, 0x73, 0x9f, 0xb1, 0x47, 0x75, 0x57, 0x51, - 0xb7, 0x19, 0x6d, 0x24, 0x09, 0x58, 0x3b, 0xeb, 0x40, 0xc1, 0x0a, 0x25, 0xa2, 0x3f, 0xf9, 0x91, - 0xa6, 0x6f, 0x5b, 0xc2, 0x01, 0xd4, 0xc8, 0xcc, 0xa9, 0xc2, 0xc7, 0x2b, 0xdd, 0x89, 0x0d, 0x5d, - 0xf4, 0x4d, 0x68, 0xec, 0x53, 0xc3, 0x4b, 0x4c, 0x85, 0xf5, 0x5b, 0xb3, 0xa6, 0x36, 0x3d, 0x39, - 0x90, 0xdb, 0xfc, 0xbd, 0x4d, 0xfa, 0xd6, 0x25, 0xdc, 0x76, 0x57, 0xb0, 0x17, 0x99, 0x7c, 0xa8, - 0xc4, 0x64, 0xa1, 0x3a, 0xb1, 0xc5, 0x6f, 0x6f, 0xf4, 0xcd, 0x6f, 0x6e, 0x34, 0x5e, 0xd8, 0xb8, - 0x84, 0xdb, 0x42, 0xc2, 0xdd, 0x6b, 0xe0, 0xe1, 0x15, 0xe2, 0x0e, 0xa9, 0x3d, 0x9a, 0xf5, 0x86, - 0x4e, 0x0e, 0x88, 0x20, 0x72, 0x84, 0x6f, 0xb9, 0x8e, 0x3d, 0xe2, 0xc9, 0xcc, 0x63, 0x4a, 0xec, - 0x74, 0x61, 0xc7, 0x73, 0xfb, 0xc2, 0x0f, 0x6d, 0x44, 0x19, 0xbc, 0xe4, 0xb8, 0xab, 0x8e, 0xe8, - 0x5e, 0x87, 0x1e, 0x86, 0x03, 0x97, 0x38, 0x4c, 0x04, 0xa2, 0xb4, 0x19, 0xf6, 0x5d, 0x0b, 0x37, - 0xe0, 0x90, 0xf2, 0x5a, 0xd7, 0x16, 0xbb, 0x76, 0xb0, 0xdd, 0x43, 0x4e, 0x97, 0x7b, 0xbc, 0x2a, - 0xfb, 0x03, 0xe4, 0xa1, 0x3e, 0xe6, 0x65, 0x02, 0xba, 0x1e, 0x1c, 0x46, 0x79, 0x54, 0x65, 0x21, - 0x37, 0x08, 0xb0, 0x88, 0x67, 0xf8, 0x24, 0x0f, 0x29, 0x42, 0x21, 0xbe, 0xcc, 0x3c, 0xdc, 0xc7, - 0xf6, 0x88, 0x3f, 0xa2, 0x33, 0xb4, 0x79, 0x44, 0x79, 0xf2, 0xd1, 0xc2, 0x50, 0x3a, 0xa2, 0x0c, - 0xf7, 0x21, 0xf6, 0x3c, 0xd7, 0xa3, 0x22, 0xca, 0x5a, 0xa3, 0x67, 0x91, 0xc3, 0x88, 0xc3, 0x7b, - 0xee, 0xa1, 0xcd, 0x28, 0xb4, 0xc9, 0x25, 0x0c, 0x67, 0xe1, 0xa3, 0x2e, 0x15, 0x29, 0xfb, 0xdc, - 0x7d, 0x14, 0xb6, 0xed, 0x21, 0x6f, 0x8f, 0x1b, 0xb0, 0x35, 0xec, 0x52, 0x1e, 0xc2, 0x03, 0x1b, - 0x31, 0x9e, 0x48, 0xb8, 0x81, 0xc4, 0xa1, 0x0c, 0xb5, 0x88, 0x4d, 0xd8, 0xa8, 0x01, 0xfb, 0x88, - 0x57, 0x3b, 0xac, 0x18, 0xa0, 0x3c, 0x31, 0xaf, 0x3a, 0x94, 0x79, 0x18, 0x85, 0x0f, 0x57, 0x32, - 0x38, 0x15, 0x97, 0x05, 0xdb, 0x94, 0x74, 0xba, 0xc1, 0xe7, 0xa4, 0xa4, 0x3f, 0xb0, 0x47, 0x71, - 0xeb, 0x23, 0xd7, 0x09, 0x16, 0x44, 0xbe, 0x20, 0xb4, 0x70, 0x1b, 0x0d, 0x29, 0xe6, 0x86, 0x7a, - 0x98, 0x79, 0x23, 0x88, 0x2f, 0xf7, 0xd0, 0x90, 0x8a, 0x85, 0x13, 0xe9, 0xb3, 0xe7, 0x0e, 0x6d, - 0x0b, 0xb6, 0xdd, 0xfe, 0xc0, 0xc6, 0x0c, 0x43, 0xd2, 0x81, 0xbc, 0x19, 0xb5, 0x20, 0xea, 0x22, - 0x22, 0x1d, 0xf4, 0xb6, 0xba, 0x91, 0xeb, 0xa0, 0xe2, 0xc1, 0x72, 0x4b, 0xe0, 0xa6, 0x05, 0xcc, - 0x22, 0xdf, 0x3c, 0x5c, 0xf4, 0xde, 0x18, 0xaa, 0xc4, 0xba, 0xff, 0xdd, 0x85, 0xfe, 0x59, 0xbf, - 0xe8, 0x9b, 0x33, 0xc6, 0x54, 0xf9, 0xfe, 0x40, 0x2a, 0x9a, 0x8e, 0x82, 0x7b, 0x72, 0x8c, 0xad, - 0xd0, 0xf3, 0xfe, 0x4a, 0xd3, 0xb7, 0x04, 0x35, 0xb9, 0x4a, 0xf6, 0x4a, 0x96, 0xff, 0x43, 0x63, - 0xf5, 0x64, 0x88, 0x79, 0xbe, 0xd9, 0x34, 0x66, 0x65, 0xe9, 0x8f, 0x42, 0xa8, 0x85, 0x6d, 0xd7, - 0xe9, 0x8a, 0x4d, 0x34, 0x17, 0x4a, 0x3b, 0x65, 0xc5, 0x0e, 0x50, 0x1d, 0x37, 0xd6, 0x86, 0x8a, - 0xaf, 0xce, 0xb5, 0x9a, 0xbe, 0x35, 0xbe, 0x3a, 0xa7, 0x11, 0x43, 0xa0, 0x59, 0x65, 0x85, 0xb8, - 0xa6, 0x82, 0x38, 0x5f, 0x7d, 0x80, 0xc4, 0xfa, 0x82, 0xe6, 0x9b, 0x67, 0x8c, 0x53, 0xe1, 0xea, - 0x05, 0xc1, 0xcb, 0x9d, 0xce, 0x1d, 0x32, 0xfe, 0xa7, 0x85, 0x18, 0x0a, 0xa2, 0xae, 0xca, 0xc2, - 0x3e, 0x00, 0x8e, 0x2b, 0x0a, 0xf8, 0xc0, 0x09, 0x57, 0xf7, 0xe7, 0x9a, 0x7e, 0x33, 0xef, 0x4e, - 0x43, 0x6b, 0x2b, 0x36, 0xbb, 0x7b, 0x0b, 0x57, 0x56, 0x6d, 0xe5, 0x3e, 0x60, 0x1c, 0x2f, 0xda, - 0x01, 0x89, 0xc5, 0x64, 0x59, 0x9b, 0x3b, 0x0b, 0x0e, 0x4f, 0xb0, 0xb8, 0xe0, 0x9f, 0x9a, 0x0e, - 0x9e, 0xc4, 0x5e, 0x9f, 0x38, 0x09, 0x5f, 0x9d, 0x2e, 0xb4, 0x34, 0x54, 0x56, 0xa0, 0x66, 0xaa, - 0xa8, 0xca, 0x55, 0xfc, 0xaa, 0xe6, 0x9b, 0xa7, 0x0c, 0x33, 0x14, 0xc4, 0xdf, 0xd3, 0x72, 0x8a, - 0x41, 0xd4, 0x8e, 0x11, 0x47, 0x76, 0x39, 0xe2, 0x99, 0xd2, 0x8d, 0x67, 0xd6, 0xee, 0xc6, 0xff, - 0xd6, 0x84, 0x1b, 0x9f, 0x77, 0x2d, 0x5c, 0x52, 0x04, 0x13, 0xe2, 0x58, 0x92, 0xd9, 0x5b, 0xaa, - 0x58, 0x7f, 0x45, 0xf3, 0xcd, 0x83, 0xc6, 0x1d, 0xb9, 0x99, 0xc6, 0x71, 0x2d, 0x9c, 0x76, 0xc6, - 0x01, 0x70, 0x14, 0x90, 0xe4, 0x59, 0x57, 0x80, 0x26, 0xfc, 0xef, 0x72, 0x1a, 0x5a, 0x42, 0x12, - 0xc7, 0x99, 0x10, 0x44, 0xfd, 0x95, 0x98, 0x9d, 0x58, 0x57, 0xc1, 0x4b, 0x35, 0x1d, 0x70, 0x97, - 0x4b, 0xd8, 0x4d, 0xb3, 0x8d, 0x4b, 0x42, 0x1e, 0xf7, 0xe4, 0xdb, 0xc7, 0x6a, 0xd6, 0xdf, 0xd6, - 0x7c, 0xf3, 0x3e, 0xe3, 0xde, 0x94, 0x3b, 0x27, 0xf1, 0x97, 0xbb, 0xf2, 0x10, 0xd0, 0x42, 0x5e, - 0xc2, 0x3d, 0xca, 0x02, 0x76, 0xf2, 0xe5, 0x21, 0x47, 0xf9, 0xe2, 0x20, 0xba, 0x3f, 0xd8, 0xa8, - 0xef, 0xce, 0x92, 0x73, 0xd6, 0xf5, 0xc4, 0x29, 0x54, 0xb3, 0x14, 0xb9, 0xd4, 0x9a, 0x90, 0xaa, - 0x0f, 0x37, 0xf8, 0xe6, 0x82, 0x71, 0x26, 0xa0, 0xaa, 0xdd, 0x23, 0xb6, 0x95, 0xe1, 0x29, 0xe8, - 0xdf, 0x82, 0xfd, 0x0a, 0xd1, 0x87, 0x87, 0xa1, 0x21, 0x4e, 0x4a, 0x52, 0x1e, 0xf5, 0xc6, 0x06, - 0xf0, 0xda, 0x06, 0xc5, 0x9d, 0x98, 0xd0, 0xc3, 0xe9, 0x33, 0x52, 0xda, 0xbc, 0x92, 0xfc, 0x61, - 0x59, 0x79, 0x48, 0xe2, 0x97, 0x02, 0x7e, 0x27, 0x1e, 0x1a, 0x52, 0x3f, 0xf1, 0x48, 0xe9, 0xbf, - 0x55, 0xc6, 0x29, 0x07, 0xcf, 0xd3, 0x96, 0x07, 0x5a, 0xa5, 0x18, 0x94, 0x4e, 0x89, 0xb1, 0x4a, - 0xa5, 0xd0, 0x2a, 0xa5, 0xa0, 0x5e, 0x66, 0xf2, 0x74, 0x44, 0xf7, 0xb4, 0x8c, 0x18, 0xc3, 0xfd, - 0x01, 0xbb, 0x0a, 0xde, 0xaa, 0xe9, 0xb7, 0xa4, 0xb3, 0x91, 0x28, 0xac, 0x87, 0xc7, 0x65, 0xa4, - 0x78, 0x51, 0x6d, 0x54, 0x53, 0x96, 0xa9, 0xf8, 0x1d, 0xcd, 0x37, 0x4d, 0xe3, 0xa1, 0x49, 0x0b, - 0x6a, 0x5e, 0xfe, 0x8a, 0xc5, 0xa9, 0x28, 0xa6, 0xff, 0xa5, 0x24, 0xf6, 0x1d, 0x4d, 0xdf, 0xb2, - 0x24, 0xf7, 0x92, 0x9f, 0x08, 0x66, 0xcc, 0xf6, 0x58, 0x52, 0xa0, 0xf4, 0x0a, 0x7b, 0xac, 0x8c, - 0x9e, 0xa4, 0xe9, 0x6e, 0xdf, 0xdc, 0x61, 0x6c, 0x5f, 0x8a, 0x36, 0xdd, 0xd5, 0x7d, 0x0f, 0x81, - 0x7c, 0x47, 0x7d, 0xab, 0x42, 0x2e, 0x7f, 0x17, 0xaf, 0x85, 0x5f, 0xd3, 0xf4, 0xcd, 0x41, 0x5b, - 0xa6, 0xec, 0xda, 0x59, 0xf0, 0x3c, 0xe3, 0x40, 0x81, 0x20, 0xd5, 0xea, 0xdd, 0xeb, 0x9b, 0xdb, - 0x8d, 0x6d, 0xb2, 0xd5, 0x4b, 0x19, 0x61, 0x18, 0x3b, 0xd2, 0x46, 0x70, 0xa2, 0x44, 0x9d, 0x7b, - 0x5e, 0xd3, 0x6f, 0xe2, 0x29, 0x46, 0xce, 0x4a, 0x41, 0xbd, 0xe0, 0x79, 0xa5, 0x67, 0xb5, 0x6a, - 0x74, 0xfd, 0xa8, 0x6f, 0xee, 0x31, 0x8c, 0x20, 0x4f, 0x45, 0xdb, 0xf8, 0xca, 0x1c, 0x99, 0xb6, - 0x01, 0xc8, 0x90, 0x02, 0x7e, 0xaf, 0xe9, 0xdb, 0x93, 0x67, 0xa8, 0x67, 0x56, 0xb0, 0xc3, 0xc0, - 0xec, 0xd8, 0x46, 0x50, 0xe8, 0x29, 0xcb, 0xe6, 0xaa, 0xaa, 0x4b, 0xda, 0xba, 0xc2, 0xc7, 0x4b, - 0xde, 0xef, 0xe5, 0x7e, 0x0d, 0x7f, 0xfd, 0xf0, 0x2c, 0xee, 0xdf, 0x08, 0x0e, 0x7a, 0x88, 0x62, - 0xc8, 0x3c, 0xe4, 0xd0, 0xd8, 0x11, 0xc0, 0xde, 0xfa, 0xae, 0xb0, 0xd9, 0xe0, 0x43, 0x68, 0xf2, - 0x1c, 0xf3, 0x17, 0xe1, 0x6e, 0x85, 0x08, 0x3a, 0x81, 0x6d, 0xba, 0x34, 0x1e, 0x13, 0xb8, 0x66, - 0xaa, 0xa8, 0x4a, 0x4c, 0xcb, 0xe2, 0x9c, 0x2c, 0xc4, 0x94, 0x0c, 0xc8, 0xca, 0x78, 0x62, 0x87, - 0x2e, 0x12, 0x0f, 0x9f, 0x28, 0x85, 0x85, 0x97, 0xb2, 0x02, 0x2c, 0x42, 0x54, 0x0d, 0x4b, 0x9e, - 0x6a, 0x3e, 0x96, 0x64, 0x29, 0xfb, 0x18, 0x58, 0xc2, 0xfb, 0x23, 0xaf, 0x6d, 0x10, 0x7d, 0x5e, - 0xc2, 0x84, 0x6c, 0x9f, 0x97, 0x10, 0x97, 0xf5, 0x79, 0x09, 0xc5, 0xfa, 0xbb, 0xb5, 0xe2, 0x3e, - 0x2f, 0xaf, 0x2a, 0x7f, 0xb7, 0x06, 0x5e, 0xac, 0x25, 0xee, 0x57, 0xa4, 0x92, 0x64, 0xe5, 0xea, - 0x3b, 0x41, 0xb9, 0xad, 0x5c, 0x5f, 0xc7, 0x14, 0xd4, 0xdc, 0x0a, 0x9a, 0x57, 0x32, 0xb3, 0x35, - 0x32, 0xb7, 0x28, 0x66, 0xab, 0xe0, 0xfb, 0xb2, 0x29, 0x4d, 0x90, 0x9c, 0xd3, 0x94, 0x26, 0xe4, - 0xa5, 0x9d, 0x56, 0x46, 0x53, 0xdc, 0xa0, 0xca, 0x36, 0xa5, 0xc9, 0xc5, 0x2a, 0x6f, 0x4a, 0xdf, - 0xd4, 0xc0, 0xeb, 0x5a, 0xe1, 0x22, 0x56, 0x5e, 0xc1, 0xaa, 0xcb, 0x57, 0x6d, 0xed, 0x8a, 0x17, - 0x0e, 0xfc, 0x71, 0x83, 0xe8, 0x2d, 0x12, 0x54, 0xe4, 0xf7, 0x16, 0xe9, 0x28, 0x28, 0xed, 0x2d, - 0xf2, 0x95, 0x65, 0x58, 0xff, 0xbd, 0xb6, 0xa6, 0xde, 0x22, 0x2f, 0x66, 0x5e, 0xad, 0x81, 0x97, - 0x6b, 0x89, 0xee, 0xe2, 0x7f, 0x81, 0x93, 0x0e, 0x9c, 0x77, 0x6a, 0xfa, 0xde, 0x44, 0xbb, 0x71, - 0x5a, 0x4c, 0x69, 0x86, 0xf7, 0x3b, 0xc1, 0x91, 0x82, 0x8a, 0x9e, 0x56, 0x4c, 0x6e, 0x44, 0xdd, - 0x33, 0xe1, 0x28, 0xb9, 0xfa, 0x3f, 0xd4, 0x7c, 0xf3, 0x69, 0xe3, 0xa9, 0xd8, 0x91, 0x54, 0x7b, - 0x48, 0x99, 0xdb, 0x27, 0xcf, 0x62, 0x0b, 0xaa, 0xbb, 0x9e, 0x30, 0xba, 0x7d, 0x9a, 0x39, 0x6b, - 0x08, 0xfb, 0x9b, 0xd9, 0x80, 0x1b, 0xd8, 0x76, 0xfb, 0x2d, 0xe2, 0x88, 0x9b, 0x09, 0xc2, 0x29, - 0x1e, 0x37, 0x1e, 0x49, 0x75, 0x18, 0xd9, 0x0b, 0xb6, 0xcd, 0x2b, 0xc9, 0xfb, 0xad, 0x92, 0xf8, - 0xd8, 0x8f, 0x92, 0x78, 0x5e, 0x26, 0x5e, 0xa9, 0xe9, 0xc6, 0x02, 0x66, 0x45, 0xf4, 0xdd, 0x59, - 0x91, 0x88, 0x58, 0xe9, 0xb8, 0x6b, 0x92, 0x21, 0x92, 0xb8, 0x17, 0x35, 0xdf, 0xbc, 0x60, 0x3c, - 0x9d, 0x38, 0xc1, 0x5f, 0x6f, 0xea, 0xee, 0x8d, 0xee, 0xc7, 0x94, 0x50, 0x97, 0x3d, 0xe0, 0x7d, - 0xad, 0xa6, 0xef, 0x3d, 0x8d, 0x6d, 0xfc, 0xf1, 0x7d, 0x2c, 0x98, 0x65, 0x52, 0x1f, 0x53, 0xa3, - 0x24, 0x55, 0x2f, 0x05, 0x3e, 0x16, 0xfc, 0xfa, 0x89, 0x10, 0x75, 0x6c, 0x66, 0x4d, 0x44, 0x71, - 0x6f, 0xfa, 0x48, 0xd3, 0x77, 0x26, 0xe2, 0x31, 0xc6, 0xd2, 0x5c, 0x01, 0xde, 0xa2, 0x18, 0x6c, - 0x56, 0xd6, 0x97, 0xcc, 0x5c, 0x0b, 0x36, 0x4a, 0xd7, 0x21, 0xfa, 0x04, 0x0d, 0x47, 0x8c, 0x66, - 0x9a, 0x86, 0x31, 0x31, 0xc6, 0x19, 0xf8, 0xab, 0x26, 0x8a, 0x4e, 0x16, 0xfe, 0xe1, 0xb1, 0x70, - 0x62, 0x31, 0xd4, 0xa8, 0xa6, 0x2c, 0x81, 0xaf, 0x88, 0x3d, 0x94, 0x75, 0x09, 0x1e, 0x81, 0xfc, - 0x20, 0xb8, 0xa3, 0x0c, 0xb9, 0x82, 0x0b, 0xae, 0x6b, 0xfa, 0xce, 0x44, 0x64, 0x4c, 0xb4, 0xda, - 0xc9, 0x68, 0x68, 0x56, 0xd6, 0x97, 0xa0, 0x57, 0xc5, 0x62, 0xaf, 0x43, 0x18, 0x04, 0x77, 0x00, - 0x67, 0x2a, 0x41, 0xe6, 0x2b, 0xfc, 0x5e, 0x4d, 0xdf, 0x15, 0xf8, 0x98, 0x7a, 0x05, 0x8b, 0xc1, - 0x2e, 0x3c, 0x0f, 0x28, 0xf2, 0xf2, 0xf9, 0xea, 0x03, 0x24, 0xf0, 0xf7, 0x34, 0xdf, 0xec, 0x18, - 0xd6, 0x3a, 0xb8, 0xb9, 0xba, 0xcd, 0x20, 0xfa, 0x93, 0xf0, 0x0d, 0x31, 0x9d, 0x0e, 0x96, 0x8d, - 0x0b, 0x99, 0xeb, 0x91, 0x6b, 0x28, 0x36, 0x89, 0xdf, 0xd4, 0x44, 0x82, 0xd0, 0x1f, 0xd4, 0xf4, - 0x1d, 0xb1, 0x9b, 0xb0, 0x31, 0x36, 0x1b, 0xe3, 0xc9, 0x89, 0x05, 0xcd, 0x6c, 0x45, 0x6d, 0xc9, - 0xe3, 0x1b, 0x9a, 0x6f, 0xf6, 0x8c, 0xce, 0xba, 0x84, 0x4d, 0x35, 0x26, 0xef, 0x07, 0xc7, 0x4a, - 0x99, 0xcc, 0xa4, 0xd4, 0x68, 0xb7, 0xf6, 0x2a, 0x78, 0xb3, 0xa6, 0xef, 0x0a, 0xbc, 0x7d, 0x6d, - 0x6e, 0x97, 0x0c, 0xb7, 0xf9, 0xea, 0x03, 0x24, 0x5d, 0x6f, 0x06, 0x6e, 0xb7, 0x0e, 0x01, 0x57, - 0x8d, 0xac, 0x13, 0x33, 0x6b, 0x27, 0x8b, 0x7b, 0xd5, 0x9f, 0x34, 0x7d, 0x27, 0x7f, 0xf1, 0x79, - 0x4c, 0x7d, 0x6c, 0x53, 0x96, 0x9c, 0x0a, 0x14, 0x0b, 0x93, 0x53, 0xa1, 0xbe, 0x24, 0x0b, 0xfb, - 0xe6, 0x09, 0xe3, 0x81, 0xe8, 0xf5, 0x18, 0xda, 0x84, 0x8a, 0x7b, 0x3b, 0x39, 0x83, 0x4e, 0xb9, - 0x4e, 0x87, 0x74, 0x87, 0x9e, 0x80, 0x0e, 0xdd, 0x56, 0x6c, 0x3f, 0x69, 0x1f, 0xd8, 0xa3, 0x38, - 0x88, 0xbe, 0x19, 0x8a, 0x48, 0x00, 0xcf, 0xd5, 0x82, 0x1b, 0x77, 0xd1, 0x05, 0x39, 0x82, 0x69, - 0x76, 0x27, 0x30, 0x76, 0x7f, 0x2e, 0xfe, 0xd2, 0x78, 0xdb, 0x18, 0xbd, 0xfa, 0xab, 0x9a, 0x6f, - 0x7e, 0xd1, 0xf8, 0x42, 0x0e, 0x8c, 0x98, 0xa6, 0xb2, 0x18, 0xd2, 0x1e, 0xf2, 0x82, 0xbd, 0x8a, - 0xe0, 0x73, 0xa2, 0xc8, 0x29, 0xd8, 0x68, 0x80, 0x1b, 0xd1, 0xea, 0xf3, 0x65, 0x8f, 0x1f, 0xca, - 0xc6, 0xc2, 0x82, 0x77, 0xff, 0xd6, 0x32, 0x96, 0x48, 0x9a, 0x57, 0xd4, 0x14, 0xcb, 0x7c, 0x8a, - 0xab, 0x79, 0xdd, 0xd9, 0x2f, 0x35, 0xfd, 0xe6, 0x05, 0x1c, 0x63, 0x60, 0x94, 0xfd, 0x44, 0x21, - 0x26, 0x8c, 0xa5, 0x8b, 0x5b, 0x4b, 0xd4, 0xea, 0x4c, 0xde, 0x3a, 0x09, 0x91, 0x67, 0x11, 0x07, - 0xc6, 0x9f, 0x03, 0x8b, 0x55, 0x8d, 0x1f, 0x7f, 0xba, 0x7a, 0x5d, 0xd3, 0xe5, 0x4e, 0x67, 0x1c, - 0xcf, 0x54, 0x89, 0xa1, 0xc9, 0x62, 0x32, 0x5d, 0x41, 0x53, 0x7a, 0xe8, 0xd7, 0x35, 0xdf, 0xbc, - 0xd3, 0x68, 0xc6, 0xaa, 0x48, 0x87, 0x60, 0xdb, 0xca, 0x0b, 0xdb, 0xd8, 0x24, 0x02, 0xf2, 0x79, - 0x63, 0xfd, 0x20, 0xf3, 0x48, 0x7d, 0x47, 0xd3, 0xf5, 0x05, 0xcc, 0x9e, 0x0a, 0xde, 0xf3, 0xb2, - 0x5f, 0x8c, 0x45, 0xb2, 0xc2, 0x2f, 0xc6, 0xe2, 0x2a, 0x12, 0xe0, 0x45, 0xdf, 0x7c, 0xc2, 0x38, - 0x9f, 0xc8, 0xee, 0x52, 0x05, 0x4e, 0x11, 0xa7, 0x6d, 0x0f, 0xc5, 0xc6, 0x1a, 0xff, 0xf9, 0xe4, - 0x90, 0xd8, 0x16, 0x84, 0xc4, 0xe9, 0xb8, 0x5e, 0x5f, 0x44, 0xe1, 0xb4, 0xb8, 0xfc, 0x77, 0x96, - 0x3f, 0x43, 0x7c, 0xdb, 0xa6, 0x6e, 0x8d, 0x08, 0xf8, 0xdb, 0xc0, 0x16, 0x05, 0x5f, 0xbe, 0x9a, - 0x9e, 0x3c, 0x76, 0xe1, 0x68, 0x97, 0xb0, 0xde, 0xb0, 0x35, 0xd7, 0x76, 0xfb, 0x4d, 0x61, 0x9b, - 0xeb, 0x75, 0x9b, 0xe1, 0x57, 0x76, 0x5d, 0xec, 0x34, 0x07, 0xad, 0xd9, 0xae, 0xdb, 0x4c, 0x7f, - 0x90, 0xd9, 0xba, 0x41, 0x7c, 0x46, 0x77, 0xf7, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xee, 0xaf, - 0x7d, 0x43, 0xab, 0x39, 0x00, 0x00, + // 3516 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0x5d, 0x8c, 0x5c, 0x55, + 0x1d, 0xcf, 0x9d, 0xb6, 0x18, 0x2f, 0x94, 0xb6, 0xa7, 0xd4, 0xb6, 0x97, 0xb6, 0x1c, 0xa6, 0xb4, + 0xdd, 0xdd, 0xee, 0xee, 0x2c, 0x50, 0x5a, 0x5a, 0xa0, 0x70, 0xfb, 0xb5, 0x59, 0x0a, 0x85, 0xac, + 0x88, 0xa4, 0xa2, 0x9b, 0x33, 0x73, 0xcf, 0xcc, 0x9c, 0xf6, 0xce, 0xbd, 0xe3, 0x3d, 0x67, 0x76, + 0x3b, 0x34, 0x4d, 0x48, 0x23, 0x6a, 0x88, 0xbe, 0x5c, 0x13, 0x0d, 0x44, 0x41, 0xf4, 0x09, 0x02, + 0x89, 0x4a, 0xc2, 0x2b, 0xc6, 0xc4, 0x44, 0x0d, 0xe1, 0x85, 0xc4, 0xaf, 0xa8, 0x51, 0xa3, 0x0f, + 0x06, 0x0d, 0x0f, 0x35, 0xf1, 0x45, 0xc4, 0x9c, 0x8f, 0xfb, 0xfd, 0x31, 0x77, 0x96, 0xc5, 0x84, + 0xc4, 0xa7, 0x6e, 0xe7, 0xfc, 0xcf, 0xb9, 0xff, 0xdf, 0xef, 0xff, 0x79, 0xcf, 0x39, 0x57, 0xdf, + 0xd5, 0xb6, 0x87, 0x0c, 0x13, 0xcb, 0x6e, 0x50, 0xec, 0x2d, 0x93, 0x16, 0x6e, 0x20, 0xab, 0x47, + 0x9c, 0xd9, 0xbe, 0xe7, 0x32, 0x17, 0x6c, 0x0e, 0x46, 0x67, 0xd5, 0xa8, 0xb1, 0xab, 0xe3, 0xba, + 0x1d, 0x1b, 0x37, 0x50, 0x9f, 0x34, 0x90, 0xe3, 0xb8, 0x0c, 0x31, 0xe2, 0x3a, 0x54, 0xca, 0x1b, + 0xd1, 0x6a, 0x62, 0x95, 0x46, 0xdf, 0x73, 0x2f, 0xe0, 0x16, 0x53, 0xa3, 0xb3, 0xf9, 0xa3, 0x4b, + 0x96, 0xdb, 0x43, 0xc4, 0x59, 0x42, 0x8c, 0x79, 0xa4, 0x39, 0x60, 0x38, 0x58, 0xed, 0x40, 0x81, + 0x7c, 0x46, 0x70, 0x67, 0x4a, 0x90, 0x21, 0x7a, 0x51, 0x0d, 0xed, 0x4e, 0x0d, 0xad, 0xb8, 0xde, + 0xc5, 0xb6, 0xed, 0xae, 0xa8, 0xe1, 0x89, 0x82, 0xe1, 0xec, 0x33, 0x60, 0x4a, 0xd2, 0x46, 0x03, + 0xa7, 0xd5, 0x5d, 0xea, 0xdb, 0x48, 0x91, 0x65, 0x18, 0x29, 0x09, 0xbc, 0x8c, 0x9d, 0x00, 0xfa, + 0x9e, 0xf4, 0xd8, 0x25, 0xdc, 0x1a, 0x70, 0xe6, 0x0a, 0xa0, 0xf6, 0x10, 0x6b, 0x75, 0x51, 0xd3, + 0xc6, 0x4b, 0x1e, 0xa6, 0xee, 0xc0, 0x6b, 0x61, 0x25, 0xb8, 0x37, 0x25, 0xe8, 0xb8, 0x16, 0x5e, + 0x4a, 0xaf, 0xb6, 0x37, 0x87, 0x8f, 0x8c, 0x50, 0xda, 0x56, 0xcb, 0xd8, 0xa3, 0xd1, 0xe8, 0xcd, + 0xa9, 0xd1, 0x96, 0xdb, 0xeb, 0x15, 0x6a, 0x6b, 0x61, 0xda, 0xf2, 0x48, 0x9f, 0x2f, 0xbe, 0x84, + 0x1d, 0x46, 0xd8, 0x30, 0x03, 0xbb, 0xe5, 0x7a, 0xb8, 0x41, 0x2c, 0x3e, 0xda, 0x26, 0xd8, 0x53, + 0xe3, 0xd3, 0xe2, 0x9f, 0xd6, 0x4c, 0x07, 0x3b, 0x33, 0x74, 0x05, 0x75, 0x3a, 0xd8, 0x6b, 0xb8, + 0x62, 0x1d, 0x9a, 0xf5, 0xae, 0x3b, 0xfe, 0xec, 0xe9, 0x37, 0x98, 0xfc, 0x81, 0x9f, 0x96, 0xce, + 0x08, 0x7e, 0x5a, 0xd3, 0xf5, 0x93, 0x1e, 0x46, 0x0c, 0x3f, 0x86, 0xe8, 0x45, 0x70, 0x6b, 0xe8, + 0x60, 0xb3, 0xd2, 0x89, 0xf9, 0xaf, 0x72, 0x7c, 0x11, 0x7f, 0x71, 0x80, 0x29, 0x33, 0xea, 0x65, + 0x22, 0xb4, 0xef, 0x3a, 0x14, 0xd7, 0xdf, 0xd3, 0x7c, 0xf3, 0x1d, 0xcd, 0xd8, 0x2f, 0x7f, 0x86, + 0xc8, 0xb1, 0xa0, 0x87, 0x3b, 0x84, 0x32, 0xec, 0x41, 0x04, 0x39, 0x97, 0xd0, 0xc2, 0x6d, 0xe2, + 0x10, 0x41, 0xe6, 0x83, 0x27, 0xf4, 0x75, 0x87, 0xe6, 0xe6, 0xc0, 0x3d, 0xfa, 0xd1, 0x45, 0xcc, + 0x06, 0x9e, 0x83, 0x2d, 0xd8, 0x76, 0x3d, 0xd8, 0x44, 0x7c, 0x9a, 0x78, 0x2a, 0x64, 0x5d, 0xc4, + 0x60, 0x0f, 0x0d, 0x61, 0x17, 0x2d, 0x63, 0xd8, 0x46, 0xc4, 0xc6, 0x16, 0x5c, 0x46, 0x36, 0xb1, + 0x90, 0x5c, 0x03, 0xf3, 0x35, 0x8e, 0x82, 0x2f, 0xe8, 0x4f, 0x26, 0xd6, 0x40, 0xc9, 0x15, 0x3c, + 0xdc, 0xc6, 0x1e, 0x76, 0x5a, 0x98, 0x42, 0xe4, 0x40, 0x49, 0x66, 0x0b, 0xd9, 0x50, 0x52, 0x2e, + 0x65, 0xba, 0x88, 0x42, 0x64, 0x7b, 0x18, 0x59, 0x43, 0xd8, 0xc4, 0xd8, 0x09, 0x55, 0xc7, 0xd6, + 0xec, 0xd5, 0x77, 0xfe, 0xf2, 0x8d, 0x1a, 0xa8, 0x6f, 0x14, 0xc1, 0xbb, 0x7c, 0xbb, 0x70, 0x0b, + 0x7a, 0x4c, 0x9b, 0x02, 0x3f, 0xd2, 0xf4, 0x4f, 0xcc, 0x63, 0x26, 0x48, 0x84, 0x69, 0x86, 0x1e, + 0x69, 0xf2, 0xa0, 0x9b, 0xc7, 0x2c, 0xe0, 0xf0, 0xa6, 0x3c, 0x0e, 0xeb, 0xae, 0x6f, 0x1e, 0x30, + 0xf6, 0x2d, 0x62, 0xe6, 0x11, 0xbc, 0xcc, 0x59, 0x83, 0xf8, 0x12, 0xa1, 0x8c, 0x38, 0x9d, 0x0c, + 0x65, 0x42, 0x8f, 0xfb, 0xc1, 0x7d, 0x09, 0x3d, 0x1a, 0x97, 0x89, 0x35, 0xab, 0x22, 0xfc, 0x8a, + 0xf8, 0x8f, 0x4c, 0x0b, 0xf2, 0x6f, 0x07, 0xf5, 0xb0, 0xfc, 0x4b, 0xb9, 0xe9, 0x15, 0xf0, 0x07, + 0x4d, 0xbf, 0xfe, 0x21, 0x42, 0x85, 0xd6, 0x0b, 0x16, 0x05, 0x73, 0x69, 0xb5, 0xce, 0xa1, 0x1e, + 0xb6, 0x4e, 0x0b, 0x6e, 0x16, 0x42, 0xc7, 0xe3, 0x33, 0x02, 0x20, 0x93, 0x95, 0x67, 0xd4, 0x3d, + 0xdf, 0x3c, 0x65, 0x9c, 0x38, 0x83, 0x59, 0xab, 0x5b, 0x88, 0x0b, 0x46, 0xee, 0x4d, 0xa1, 0x08, + 0x60, 0x2e, 0x44, 0x9c, 0xfe, 0x80, 0xc1, 0x36, 0xb1, 0x19, 0xf6, 0xa8, 0x84, 0xbe, 0x0f, 0xec, + 0x8d, 0x43, 0x5f, 0x22, 0x16, 0x6d, 0x5c, 0x8e, 0xa0, 0x2b, 0xdc, 0xe0, 0x5d, 0x4d, 0xff, 0x64, + 0x00, 0x90, 0x82, 0xbd, 0x69, 0x65, 0x17, 0x55, 0x62, 0x88, 0x23, 0xda, 0x91, 0x67, 0x1a, 0x01, + 0xe0, 0x05, 0xcd, 0x37, 0x8f, 0x1a, 0x47, 0xca, 0x11, 0x94, 0xab, 0xfd, 0x24, 0x98, 0x1b, 0xd7, + 0x62, 0xe7, 0x27, 0xc0, 0xfe, 0x6a, 0x73, 0xc0, 0x6f, 0x6a, 0xfa, 0x8d, 0x32, 0xe2, 0x3e, 0xab, + 0x72, 0x30, 0xd8, 0x97, 0x46, 0x13, 0x8c, 0x24, 0x63, 0x7a, 0xff, 0x28, 0x31, 0x15, 0xd7, 0xff, + 0xd2, 0x7c, 0xf3, 0x57, 0x9a, 0x31, 0x95, 0x1f, 0xd7, 0x41, 0xe6, 0xff, 0x38, 0xc7, 0xf6, 0xa7, + 0xea, 0x5b, 0x02, 0xb6, 0x03, 0x38, 0x22, 0xbe, 0x7f, 0xa2, 0xe9, 0xd7, 0xcf, 0x63, 0x16, 0x12, + 0x3b, 0x3a, 0xc6, 0x77, 0x14, 0x71, 0x5a, 0x5f, 0xf1, 0xcd, 0x83, 0xc6, 0x64, 0x6e, 0x9c, 0xe7, + 0x51, 0x28, 0xf4, 0x3a, 0x09, 0xcc, 0x8c, 0x5e, 0x63, 0xc7, 0xfb, 0x3f, 0x34, 0x7d, 0x13, 0x77, + 0xe5, 0x40, 0x93, 0x8f, 0x3c, 0xe6, 0xaf, 0xf8, 0xe6, 0x59, 0x63, 0x41, 0x46, 0xcc, 0x08, 0x98, + 0x95, 0x43, 0x7f, 0x12, 0x1c, 0x48, 0x33, 0x51, 0x14, 0xfe, 0x1f, 0x68, 0xfa, 0xc6, 0x38, 0xde, + 0x8a, 0x29, 0x60, 0x57, 0x91, 0xe5, 0x04, 0xa6, 0x57, 0x34, 0xdf, 0xbc, 0xcf, 0xb8, 0x27, 0x95, + 0x06, 0x72, 0x10, 0x95, 0xc3, 0xb0, 0xc0, 0xa1, 0xd5, 0x18, 0xf4, 0xfc, 0x34, 0x98, 0xaa, 0x3e, + 0x0f, 0xfc, 0xb5, 0xa6, 0x6f, 0x96, 0xc1, 0xfa, 0x90, 0x68, 0xb6, 0x1e, 0xb5, 0x91, 0x03, 0x0e, + 0xa4, 0xf1, 0x45, 0x63, 0xc9, 0xb4, 0x30, 0x31, 0x5a, 0x50, 0x25, 0x86, 0xf7, 0x35, 0xdf, 0xfc, + 0xad, 0x66, 0xcc, 0xe4, 0x27, 0x06, 0xd9, 0xe8, 0x41, 0xde, 0xe8, 0x7d, 0x9c, 0x73, 0xc3, 0xce, + 0xfa, 0x4d, 0x01, 0xf5, 0xb1, 0xd6, 0x55, 0xa4, 0x87, 0xb7, 0x34, 0x7d, 0xe3, 0x3c, 0x66, 0x31, + 0x92, 0x47, 0x27, 0x08, 0xa3, 0x98, 0x5d, 0x1e, 0x38, 0xb3, 0xc6, 0x74, 0x6e, 0x8a, 0x28, 0x20, + 0x53, 0x68, 0x78, 0x06, 0x9c, 0xca, 0xd3, 0x70, 0xec, 0x44, 0x71, 0x4d, 0xd3, 0xb7, 0xce, 0x63, + 0x66, 0xb6, 0x18, 0x59, 0x2e, 0xf5, 0x9c, 0xb4, 0x44, 0x15, 0x6c, 0xdf, 0xd4, 0x7c, 0xf3, 0x61, + 0xe3, 0x6c, 0x08, 0x8e, 0x75, 0x31, 0x44, 0x62, 0x9d, 0x04, 0x36, 0xa5, 0x0c, 0xa4, 0x7d, 0xdc, + 0xe2, 0x69, 0xc1, 0x82, 0xcd, 0xa1, 0x0a, 0xa4, 0xc0, 0xb4, 0x89, 0x80, 0x7a, 0x00, 0x1c, 0x0f, + 0xb0, 0xcb, 0xd5, 0x96, 0xc6, 0xa4, 0x80, 0x77, 0x0b, 0xdb, 0x78, 0x88, 0xa7, 0x41, 0x51, 0x70, + 0x70, 0x14, 0xee, 0x78, 0xfa, 0xd8, 0x53, 0x8c, 0x5d, 0x24, 0x90, 0x2f, 0x69, 0xb1, 0xac, 0x58, + 0x0e, 0x9e, 0x56, 0x46, 0x3f, 0x07, 0x66, 0x4b, 0xd1, 0x67, 0x93, 0xe3, 0x35, 0x4d, 0xdf, 0xc2, + 0xf5, 0x89, 0xb4, 0xfb, 0xc8, 0xcb, 0xc1, 0xd3, 0x71, 0xe4, 0x23, 0x1c, 0xba, 0x72, 0x3d, 0x88, + 0x25, 0xc4, 0x18, 0xe4, 0xa2, 0x92, 0xf0, 0xb5, 0x9a, 0x2c, 0x81, 0x71, 0xeb, 0x56, 0x2a, 0x0a, + 0xa3, 0xac, 0xfa, 0xba, 0xe6, 0x9b, 0x0f, 0x18, 0xc7, 0x2b, 0x61, 0x2b, 0x07, 0x74, 0x01, 0x1c, + 0x59, 0x65, 0x10, 0x9f, 0x6f, 0x80, 0x99, 0xb1, 0xa6, 0x82, 0x1f, 0x5f, 0xa7, 0x6f, 0xfe, 0x4c, + 0xdf, 0xaa, 0x5c, 0x1f, 0xa4, 0x6c, 0x85, 0xfa, 0x10, 0x08, 0xaa, 0xfa, 0xf0, 0xeb, 0x0d, 0xbe, + 0xf9, 0xcc, 0x06, 0xe3, 0xea, 0x06, 0xf9, 0xbb, 0x70, 0x7b, 0xca, 0x10, 0x1b, 0x50, 0xe8, 0xb6, + 0xab, 0xa4, 0x37, 0x68, 0x32, 0xd8, 0x73, 0x29, 0x83, 0xae, 0x93, 0x9f, 0x26, 0x64, 0xd2, 0xef, + 0x90, 0x65, 0xec, 0xc0, 0xc0, 0xee, 0xd3, 0x50, 0xe2, 0x9c, 0x86, 0x82, 0x1e, 0xd8, 0x42, 0x0e, + 0x6c, 0x86, 0xf1, 0x86, 0x18, 0x7f, 0x17, 0x25, 0x3d, 0x3c, 0x0b, 0x17, 0xda, 0x90, 0x75, 0x09, + 0x85, 0x2d, 0x64, 0xdb, 0x90, 0x62, 0x46, 0x53, 0x45, 0x8b, 0xb9, 0xe1, 0x24, 0xc7, 0x8a, 0x74, + 0x0d, 0x9e, 0x4d, 0xa2, 0xc2, 0x21, 0xc5, 0xa6, 0x05, 0x40, 0x0f, 0xd3, 0x81, 0xcd, 0x38, 0xc0, + 0x68, 0xf1, 0x15, 0x62, 0xdb, 0x5c, 0x07, 0x51, 0x71, 0xb8, 0x50, 0xdb, 0xf5, 0x7a, 0xd8, 0xb3, + 0x87, 0x79, 0x59, 0x20, 0x10, 0xee, 0x21, 0x0b, 0x43, 0xe2, 0xc4, 0x54, 0x88, 0xd2, 0x42, 0x5c, + 0x9e, 0x38, 0xf2, 0x49, 0x41, 0x86, 0x48, 0xcc, 0x97, 0xb3, 0x67, 0xe1, 0x82, 0x23, 0x9e, 0x2b, + 0xb6, 0x56, 0xaa, 0xa9, 0xd1, 0x45, 0x16, 0x44, 0x90, 0xb6, 0xba, 0xd8, 0x1a, 0xd8, 0x18, 0x22, + 0x4a, 0xdd, 0x16, 0x41, 0x0c, 0x5b, 0x90, 0xf0, 0x67, 0xb0, 0x2e, 0x24, 0x6c, 0x5a, 0x3e, 0x39, + 0x14, 0x0a, 0x1e, 0x6d, 0x11, 0x8a, 0x9a, 0x36, 0xb6, 0x14, 0xc7, 0x38, 0xaa, 0xc4, 0xa5, 0x9a, + 0x13, 0x0a, 0x9b, 0x98, 0x53, 0x4c, 0x31, 0x4b, 0xb1, 0x2f, 0xca, 0x74, 0xae, 0x36, 0x31, 0x55, + 0x70, 0x56, 0x13, 0xec, 0x48, 0x45, 0x44, 0x8c, 0x2d, 0x18, 0x6b, 0x52, 0x28, 0x79, 0xe9, 0xff, + 0x9e, 0xa6, 0x6f, 0x92, 0x6d, 0xcf, 0xe9, 0x60, 0x7b, 0x08, 0x64, 0xde, 0xa7, 0xc2, 0xa1, 0x64, + 0x83, 0x75, 0x60, 0xa4, 0x9c, 0x8a, 0x9f, 0xe3, 0xbe, 0xb9, 0xc7, 0xd8, 0x15, 0x74, 0x57, 0x51, + 0xb7, 0x19, 0xed, 0x48, 0x09, 0x58, 0xdb, 0xeb, 0x20, 0x80, 0x15, 0x8e, 0x88, 0xfe, 0xe4, 0x87, + 0x9a, 0xbe, 0x65, 0x11, 0x4b, 0xa8, 0x91, 0x9a, 0x13, 0x85, 0x8f, 0x0f, 0x64, 0xc7, 0x56, 0x74, + 0xc1, 0x37, 0xa1, 0xb1, 0x27, 0x98, 0x5e, 0xa2, 0x2a, 0xac, 0xdf, 0x9c, 0x55, 0xb5, 0xe1, 0xa9, + 0x89, 0x5c, 0xe7, 0xef, 0x6c, 0xd0, 0x37, 0x2f, 0xe2, 0x96, 0xbb, 0x8c, 0xbd, 0x48, 0xe5, 0x03, + 0x25, 0x2a, 0x0b, 0xd1, 0xb1, 0x35, 0x7e, 0x63, 0xbd, 0x6f, 0x7e, 0x7d, 0xbd, 0xf1, 0xec, 0xfa, + 0x45, 0xdc, 0x12, 0x23, 0xdc, 0xbd, 0xfa, 0x1e, 0x5e, 0x26, 0xee, 0x80, 0xda, 0xc3, 0x19, 0x6f, + 0xe0, 0xe4, 0x80, 0x90, 0x91, 0x23, 0x7c, 0xcb, 0x75, 0xec, 0x21, 0x4f, 0x66, 0x1e, 0x0b, 0x86, + 0x9d, 0x0e, 0x6c, 0x7b, 0x6e, 0x4f, 0xf8, 0xa1, 0x8d, 0x28, 0x83, 0x17, 0x1d, 0x77, 0xc5, 0x11, + 0xdd, 0xeb, 0xc0, 0xc3, 0xb0, 0xef, 0x12, 0x87, 0x89, 0x40, 0x54, 0x3a, 0xc3, 0x9e, 0x6b, 0xe1, + 0x69, 0x38, 0xa0, 0xbc, 0xd6, 0xb5, 0xc4, 0xae, 0x1d, 0x6c, 0x75, 0x91, 0xd3, 0xe1, 0x1e, 0x1f, + 0x94, 0xfd, 0x3e, 0xf2, 0x50, 0x0f, 0xf3, 0x32, 0x01, 0x5d, 0x0f, 0x0e, 0xa2, 0x3c, 0x1a, 0x64, + 0x21, 0x57, 0x06, 0x58, 0xc4, 0x33, 0x7c, 0x8c, 0x87, 0x14, 0xa1, 0x10, 0x5f, 0x62, 0x1e, 0xee, + 0x61, 0x7b, 0xc8, 0x1f, 0xd1, 0x1e, 0xd8, 0x3c, 0xa2, 0x3c, 0xf5, 0x68, 0xa1, 0x28, 0x1d, 0x52, + 0x86, 0x7b, 0x10, 0x7b, 0x9e, 0xeb, 0x51, 0x11, 0x65, 0xcd, 0xe1, 0x53, 0xc8, 0x61, 0xc4, 0xe1, + 0x3d, 0xf7, 0xc0, 0x66, 0x14, 0xda, 0xe4, 0x22, 0x86, 0x33, 0xf0, 0x21, 0x97, 0x8a, 0x94, 0x7d, + 0xf6, 0x6e, 0x0a, 0x5b, 0xf6, 0x80, 0xb7, 0xc7, 0xd3, 0xb0, 0x39, 0xe8, 0x50, 0x1e, 0xc2, 0x7d, + 0x1b, 0x31, 0x9e, 0x48, 0xb8, 0x82, 0xc4, 0xa1, 0x0c, 0x35, 0x89, 0x4d, 0xd8, 0x70, 0x1a, 0xf6, + 0x10, 0xaf, 0x76, 0x38, 0x60, 0x80, 0xf2, 0xc4, 0xbc, 0xe2, 0x50, 0xe6, 0x61, 0x14, 0x3e, 0x3c, + 0x18, 0x83, 0x13, 0xf1, 0x31, 0xb9, 0x4d, 0x49, 0x27, 0xa7, 0xf9, 0x9a, 0x94, 0xf4, 0xfa, 0xf6, + 0x30, 0xae, 0x7d, 0xe4, 0x3a, 0xd2, 0x20, 0xea, 0x05, 0xa1, 0x89, 0x5b, 0x68, 0x40, 0x31, 0x57, + 0xd4, 0xc3, 0xcc, 0x1b, 0x42, 0x7c, 0xa9, 0x8b, 0x06, 0x54, 0x18, 0x4e, 0xa4, 0xcf, 0xae, 0x3b, + 0xb0, 0x2d, 0xd8, 0x72, 0x7b, 0x7d, 0x1b, 0x33, 0x0c, 0x49, 0x1b, 0xf2, 0x66, 0xd4, 0x82, 0xa8, + 0x83, 0x88, 0x72, 0xd0, 0x5b, 0xea, 0x46, 0xae, 0x83, 0x8a, 0x07, 0xab, 0x2d, 0x81, 0x1b, 0xe6, + 0x31, 0x8b, 0x7c, 0xf3, 0x60, 0xd1, 0x7b, 0x63, 0x28, 0x12, 0xeb, 0xfe, 0x77, 0x16, 0xfa, 0x67, + 0xfd, 0x82, 0x6f, 0x4e, 0x19, 0x13, 0xe5, 0xfb, 0x03, 0xa9, 0x68, 0x3a, 0x02, 0xee, 0xca, 0x51, + 0xb6, 0x42, 0xcf, 0xfb, 0x4b, 0x4d, 0xdf, 0x24, 0x6b, 0x72, 0x95, 0xec, 0x95, 0x2c, 0xff, 0x07, + 0x46, 0xca, 0xa9, 0x10, 0xf3, 0x7c, 0xb3, 0x61, 0xcc, 0xa8, 0xd2, 0x1f, 0x85, 0x50, 0x13, 0xdb, + 0xae, 0xd3, 0x11, 0x9b, 0x68, 0x2e, 0x54, 0x7a, 0xaa, 0x8a, 0x2d, 0x51, 0x1d, 0x33, 0x56, 0x87, + 0x8a, 0x5b, 0xe7, 0x6a, 0x4d, 0xdf, 0x1c, 0xb7, 0xce, 0x29, 0xc4, 0x10, 0x68, 0x54, 0xb1, 0x10, + 0x97, 0x0c, 0x20, 0xce, 0x55, 0x9f, 0xa0, 0xb0, 0x3e, 0xab, 0xf9, 0xe6, 0x69, 0xe3, 0x64, 0x68, + 0x3d, 0x19, 0xbc, 0xdc, 0xe9, 0xdc, 0x01, 0xe3, 0x7f, 0x5a, 0x88, 0x21, 0x19, 0x75, 0x55, 0x0c, + 0x7b, 0x2f, 0x38, 0x16, 0x50, 0xc0, 0x27, 0x8e, 0x69, 0xdd, 0x9f, 0x69, 0xfa, 0x8d, 0xbc, 0x3b, + 0x0d, 0xb5, 0xad, 0xd8, 0xec, 0xee, 0x2e, 0xb4, 0x6c, 0xb0, 0x95, 0x7b, 0xaf, 0x71, 0xac, 0x68, + 0x07, 0x24, 0x16, 0x93, 0x65, 0x6d, 0xee, 0x0c, 0x38, 0x38, 0x86, 0x71, 0xc1, 0x3f, 0x35, 0x1d, + 0x3c, 0x86, 0xbd, 0x1e, 0x71, 0x12, 0xbe, 0x3a, 0x59, 0xa8, 0x69, 0x28, 0x1c, 0x80, 0x9a, 0xaa, + 0x22, 0xaa, 0xac, 0xf8, 0x65, 0xcd, 0x37, 0x4f, 0x1a, 0x66, 0x38, 0x10, 0x7f, 0x4f, 0xcb, 0x29, + 0x06, 0x51, 0x3b, 0x46, 0x1c, 0xd5, 0xe5, 0x88, 0x67, 0x2a, 0x37, 0x9e, 0x5a, 0xbd, 0x1b, 0xff, + 0x5b, 0x13, 0x6e, 0x7c, 0xce, 0xb5, 0x70, 0x49, 0x11, 0x4c, 0x0c, 0xc7, 0x92, 0xcc, 0xee, 0x52, + 0xc1, 0xfa, 0x8b, 0x9a, 0x6f, 0xee, 0x37, 0x6e, 0xcb, 0xcd, 0x34, 0x8e, 0x6b, 0xe1, 0xb4, 0x33, + 0xf6, 0x81, 0x13, 0x00, 0x49, 0x1e, 0x9a, 0x49, 0x34, 0xe1, 0x7f, 0x97, 0xd2, 0xd0, 0x12, 0x23, + 0x71, 0x9c, 0x89, 0x81, 0xa8, 0xbf, 0x12, 0xab, 0x13, 0xeb, 0x0a, 0x78, 0xbe, 0xa6, 0x03, 0xee, + 0x72, 0x09, 0xbd, 0x69, 0xb6, 0x71, 0x49, 0x8c, 0xc7, 0x3d, 0xf9, 0xd6, 0x91, 0x92, 0xf5, 0x37, + 0x34, 0xdf, 0xbc, 0xdb, 0x38, 0x9c, 0x72, 0xe7, 0x24, 0xfe, 0x72, 0x57, 0x1e, 0x00, 0x5a, 0xc8, + 0x4b, 0xb8, 0x47, 0x59, 0xc0, 0x4e, 0xfe, 0x78, 0xc8, 0x51, 0xfe, 0xb0, 0x8c, 0xee, 0xf7, 0xd6, + 0xeb, 0x3b, 0xb3, 0xe4, 0x9c, 0x71, 0x3d, 0x71, 0x0a, 0xd5, 0x28, 0x45, 0xae, 0xa4, 0xc6, 0xa4, + 0xea, 0xfd, 0x75, 0xbe, 0x39, 0x6f, 0x9c, 0x96, 0x54, 0xb5, 0xba, 0xc4, 0xb6, 0x32, 0x3c, 0xc9, + 0xfe, 0x4d, 0xee, 0x57, 0x88, 0x3e, 0x3c, 0x0c, 0x0d, 0x71, 0x52, 0x92, 0xf2, 0xa8, 0x57, 0xd7, + 0x81, 0x97, 0xd7, 0x05, 0xdc, 0x89, 0x05, 0x3d, 0x9c, 0x3e, 0x6c, 0xa5, 0x8d, 0xcb, 0xc9, 0x1f, + 0x96, 0x02, 0x0f, 0x49, 0xfc, 0x52, 0xc0, 0xef, 0xd8, 0x53, 0x43, 0xea, 0xc7, 0x9e, 0xa9, 0xfc, + 0xb7, 0xca, 0xbc, 0xc0, 0xc1, 0xf3, 0xa4, 0xd5, 0x81, 0x56, 0x29, 0x86, 0x40, 0xa6, 0x44, 0xd9, + 0x40, 0xa4, 0x50, 0xab, 0x40, 0x20, 0x78, 0x99, 0xc9, 0x93, 0x11, 0xdd, 0xd3, 0x12, 0x62, 0x0c, + 0xf7, 0xfa, 0xec, 0x0a, 0x78, 0xbd, 0xa6, 0xdf, 0x94, 0xce, 0x46, 0xa2, 0xb0, 0x1e, 0x1c, 0x95, + 0x91, 0xe2, 0x45, 0x75, 0xba, 0x9a, 0xb0, 0x4a, 0xc5, 0x6f, 0x6a, 0xbe, 0x69, 0x1a, 0xf7, 0x8f, + 0x5b, 0x50, 0xf3, 0xf2, 0x57, 0x2c, 0x4e, 0x45, 0x31, 0xfd, 0x1f, 0x25, 0xb1, 0x6f, 0x69, 0xfa, + 0xa6, 0x45, 0xb5, 0x97, 0xfc, 0xa8, 0x5c, 0x31, 0xdb, 0x63, 0xa9, 0x81, 0x40, 0xae, 0xb0, 0xc7, + 0xca, 0xc8, 0x29, 0x9a, 0xee, 0xf4, 0xcd, 0x6d, 0xc6, 0xd6, 0xc5, 0x68, 0xd3, 0x3d, 0xb8, 0x38, + 0x22, 0x90, 0x6f, 0xab, 0x6f, 0x0e, 0x90, 0xab, 0xdf, 0xc5, 0x6b, 0xe1, 0x57, 0x34, 0x7d, 0xa3, + 0x6c, 0xcb, 0x02, 0xbd, 0xb6, 0x17, 0x3c, 0xcf, 0xd8, 0x57, 0x30, 0x90, 0x6a, 0xf5, 0x0e, 0xfb, + 0xe6, 0x56, 0x63, 0x8b, 0x6a, 0xf5, 0x52, 0x4a, 0x18, 0xc6, 0xb6, 0xb4, 0x12, 0x9c, 0x28, 0x51, + 0xe7, 0x9e, 0xd1, 0xf4, 0x1b, 0x78, 0x8a, 0x51, 0xab, 0x52, 0x50, 0x2f, 0x78, 0x5e, 0xe9, 0x59, + 0x6d, 0x30, 0xbb, 0x7e, 0xc4, 0x37, 0x77, 0x19, 0x86, 0xcc, 0x53, 0xd1, 0x36, 0x7e, 0xa0, 0x8e, + 0x4a, 0xdb, 0x00, 0x64, 0x48, 0x01, 0xbf, 0xd7, 0xf4, 0xad, 0xc9, 0x33, 0xd4, 0xd3, 0xcb, 0xd8, + 0x61, 0x60, 0x66, 0x64, 0x23, 0x28, 0xe4, 0x02, 0xcd, 0x66, 0xab, 0x8a, 0x2b, 0xda, 0x3a, 0xc2, + 0xc7, 0x4b, 0xde, 0xef, 0xd5, 0x7e, 0x0d, 0x7f, 0xfd, 0xf0, 0x2c, 0xee, 0xdf, 0x08, 0xf6, 0xbb, + 0x88, 0x62, 0xc8, 0x3c, 0xe4, 0xd0, 0xd8, 0x11, 0xc0, 0xee, 0xfa, 0x8e, 0xb0, 0xd9, 0xe0, 0x53, + 0x68, 0xf2, 0x1c, 0xf3, 0xe7, 0xe1, 0x6e, 0x85, 0x08, 0x3a, 0x81, 0x6d, 0xb2, 0x34, 0x1e, 0x13, + 0xb8, 0xa6, 0xaa, 0x88, 0x2a, 0x4c, 0x4b, 0xe2, 0x9c, 0x2c, 0xc4, 0x94, 0x0c, 0xc8, 0xca, 0x78, + 0x62, 0x87, 0x2e, 0x0a, 0x0f, 0x5f, 0x28, 0x85, 0x85, 0x97, 0xb2, 0x02, 0x2c, 0x62, 0xa8, 0x1a, + 0x96, 0x3c, 0xd1, 0x7c, 0x2c, 0xc9, 0x52, 0xf6, 0x21, 0xb0, 0x84, 0xf7, 0x47, 0x5e, 0x5e, 0x27, + 0xfa, 0xbc, 0x84, 0x0a, 0xd9, 0x3e, 0x2f, 0x31, 0x5c, 0xd6, 0xe7, 0x25, 0x04, 0xeb, 0x6f, 0xd5, + 0x8a, 0xfb, 0xbc, 0xbc, 0xaa, 0xfc, 0xed, 0x1a, 0x78, 0xae, 0x96, 0xb8, 0x5f, 0x91, 0x4a, 0x92, + 0x95, 0xab, 0xef, 0x18, 0xe5, 0xb6, 0x72, 0x7d, 0x1d, 0x51, 0x50, 0x73, 0x2b, 0x68, 0x5e, 0xc9, + 0xcc, 0xd6, 0xc8, 0xdc, 0xa2, 0x98, 0xad, 0x82, 0xef, 0xa8, 0xa6, 0x34, 0x41, 0x72, 0x4e, 0x53, + 0x9a, 0x18, 0x2f, 0xed, 0xb4, 0x32, 0x92, 0xe2, 0x06, 0x55, 0xb6, 0x29, 0x4d, 0x1a, 0xab, 0xbc, + 0x29, 0x7d, 0x4d, 0x03, 0xaf, 0x68, 0x85, 0x46, 0xac, 0x6c, 0xc1, 0xaa, 0xe6, 0xab, 0x66, 0xbb, + 0x62, 0xc3, 0x81, 0x3f, 0xae, 0x13, 0xbd, 0x45, 0x82, 0x8a, 0xfc, 0xde, 0x22, 0x1d, 0x05, 0xa5, + 0xbd, 0x45, 0xbe, 0xb0, 0x0a, 0xeb, 0xbf, 0xd7, 0x56, 0xd5, 0x5b, 0xe4, 0xc5, 0xcc, 0x4b, 0x35, + 0xf0, 0x42, 0x2d, 0xd1, 0x5d, 0xfc, 0x3f, 0x70, 0xd2, 0x81, 0xf3, 0x66, 0x4d, 0xdf, 0x9d, 0x68, + 0x37, 0x4e, 0x89, 0x25, 0xcd, 0xf0, 0xa2, 0x28, 0x38, 0x54, 0x50, 0xd1, 0xd3, 0x82, 0xc9, 0x8d, + 0xa8, 0xbb, 0xc6, 0x9c, 0xa5, 0xac, 0xff, 0x03, 0xcd, 0x37, 0x9f, 0x30, 0x1e, 0x8f, 0x1d, 0x49, + 0xb5, 0x06, 0x94, 0xb9, 0x3d, 0xf2, 0x14, 0xb6, 0x60, 0x70, 0x69, 0x14, 0x46, 0xd7, 0x58, 0x33, + 0x67, 0x0d, 0x61, 0x7f, 0x33, 0x23, 0xb9, 0x81, 0x2d, 0xb7, 0xd7, 0x24, 0x8e, 0xb8, 0x99, 0x20, + 0x9c, 0xe2, 0x11, 0xe3, 0xc1, 0x54, 0x87, 0x91, 0xbd, 0xa9, 0xdb, 0xb8, 0x9c, 0xbc, 0x28, 0xab, + 0x88, 0x8f, 0xfd, 0xa8, 0x88, 0xe7, 0x65, 0xe2, 0xc5, 0x9a, 0x6e, 0xcc, 0x63, 0x56, 0x44, 0xdf, + 0xed, 0x15, 0x89, 0x88, 0x95, 0x8e, 0x3b, 0xc6, 0x99, 0xa2, 0x88, 0x7b, 0x4e, 0xf3, 0xcd, 0xf3, + 0xc6, 0x13, 0x89, 0x13, 0xfc, 0xb5, 0xa6, 0xee, 0x70, 0x74, 0x3f, 0xa6, 0x84, 0xba, 0xec, 0x01, + 0xef, 0xcb, 0x35, 0x7d, 0xf7, 0x29, 0x6c, 0xe3, 0x0f, 0xef, 0x63, 0x72, 0x95, 0x71, 0x7d, 0x2c, + 0x98, 0xa5, 0xa8, 0x7a, 0x5e, 0xfa, 0x98, 0xfc, 0xf5, 0x23, 0x21, 0xea, 0xe8, 0xd4, 0xaa, 0x88, + 0xe2, 0xde, 0xf4, 0x81, 0xa6, 0x6f, 0x4f, 0xc4, 0x63, 0x8c, 0xa5, 0xd9, 0x02, 0xbc, 0x45, 0x31, + 0xd8, 0xa8, 0x2c, 0xaf, 0x98, 0xb9, 0x2a, 0x37, 0x4a, 0xd7, 0x20, 0xfa, 0x04, 0x0d, 0x87, 0x8c, + 0x46, 0x9a, 0x86, 0x11, 0x31, 0xc6, 0x19, 0xf8, 0x9b, 0x26, 0x8a, 0x4e, 0x16, 0xfe, 0xc1, 0x91, + 0x70, 0x62, 0x31, 0x34, 0x5d, 0x4d, 0x58, 0x01, 0x5f, 0x16, 0x7b, 0x28, 0x6b, 0x12, 0x3c, 0x02, + 0xf9, 0x7e, 0x70, 0x5b, 0x19, 0xf2, 0x00, 0x2e, 0xb8, 0xa6, 0xe9, 0xdb, 0x13, 0x91, 0x31, 0x96, + 0xb5, 0x93, 0xd1, 0xd0, 0xa8, 0x2c, 0xaf, 0x40, 0xaf, 0x08, 0x63, 0xaf, 0x41, 0x18, 0xc8, 0x3b, + 0x80, 0x53, 0x95, 0x20, 0x73, 0x0b, 0xbf, 0x5d, 0xd3, 0x77, 0x48, 0x1f, 0x0b, 0x5e, 0xc1, 0x62, + 0xb0, 0x0b, 0xcf, 0x03, 0x8a, 0xbc, 0x7c, 0xae, 0xfa, 0x04, 0x05, 0xfc, 0x6d, 0xcd, 0x37, 0xdb, + 0x86, 0xb5, 0x06, 0x6e, 0x1e, 0xdc, 0x66, 0x10, 0xfd, 0x49, 0xf8, 0x86, 0x98, 0x4e, 0x07, 0x4b, + 0xc6, 0xf9, 0xcc, 0xf5, 0xc8, 0x55, 0x14, 0x9b, 0xc4, 0x6f, 0xc1, 0x42, 0x82, 0xd0, 0xef, 0xd7, + 0xf4, 0x6d, 0xb1, 0x9b, 0xb0, 0x31, 0x36, 0xa7, 0x47, 0x93, 0x13, 0x0b, 0x9a, 0x99, 0x8a, 0xd2, + 0x8a, 0xc7, 0x57, 0x35, 0xdf, 0xec, 0x1a, 0xed, 0x35, 0x09, 0x9b, 0x6a, 0x4c, 0xde, 0x03, 0x8e, + 0x96, 0x32, 0x99, 0x49, 0xa9, 0xd1, 0x6e, 0xed, 0x15, 0xf0, 0x5a, 0x4d, 0xdf, 0x21, 0xbd, 0x7d, + 0x75, 0x6e, 0x97, 0x0c, 0xb7, 0xb9, 0xea, 0x13, 0x14, 0x5d, 0xaf, 0x49, 0xb7, 0x5b, 0x83, 0x80, + 0xab, 0x46, 0xd6, 0xf1, 0xa9, 0xd5, 0x93, 0xc5, 0xbd, 0xea, 0x4f, 0x9a, 0xbe, 0x9d, 0xbf, 0xf8, + 0x3c, 0x1c, 0x7c, 0xb5, 0x53, 0x96, 0x9c, 0x0a, 0x04, 0x0b, 0x93, 0x53, 0xa1, 0xbc, 0x22, 0x0b, + 0xfb, 0xe6, 0x71, 0xe3, 0xde, 0xe8, 0xf5, 0x18, 0xda, 0x84, 0x8a, 0x7b, 0x3b, 0x39, 0x93, 0x4e, + 0xba, 0x4e, 0x9b, 0x74, 0x06, 0x9e, 0x80, 0x0e, 0xdd, 0x66, 0x6c, 0x3f, 0x69, 0x0f, 0xd8, 0x15, + 0x70, 0x10, 0x7d, 0x7c, 0x14, 0x91, 0x00, 0x9e, 0xae, 0xc9, 0x1b, 0x77, 0xd1, 0x05, 0x39, 0x82, + 0x69, 0x76, 0x27, 0x30, 0x76, 0x7f, 0x2e, 0xfe, 0xd2, 0x78, 0xcb, 0x08, 0xb9, 0xfa, 0x4b, 0x9a, + 0x6f, 0x7e, 0xde, 0xf8, 0x5c, 0x0e, 0x8c, 0x98, 0x64, 0xa0, 0x31, 0xa4, 0x5d, 0xe4, 0xc9, 0xbd, + 0x0a, 0xf9, 0x5d, 0x52, 0xe4, 0x14, 0x6c, 0xd8, 0xc7, 0xd3, 0x91, 0xf5, 0xb9, 0xd9, 0xe3, 0x87, + 0xb2, 0xb1, 0xb0, 0xe0, 0xdd, 0xbf, 0x25, 0x3f, 0x57, 0x22, 0xdc, 0xc8, 0xc1, 0x12, 0x4b, 0x7c, + 0x89, 0x2b, 0x79, 0xdd, 0xd9, 0x2f, 0x34, 0xfd, 0xc6, 0x79, 0x1c, 0x63, 0x60, 0x98, 0xfd, 0x44, + 0x21, 0x36, 0x18, 0x4b, 0x17, 0x37, 0x97, 0x88, 0xd5, 0x99, 0xba, 0x75, 0x12, 0x22, 0xcf, 0x22, + 0x96, 0xca, 0x9f, 0x05, 0x0b, 0x55, 0x95, 0x1f, 0x7d, 0xba, 0x7a, 0x4d, 0xd3, 0xd5, 0x4e, 0x67, + 0x1c, 0xcf, 0x44, 0x89, 0xa2, 0xc9, 0x62, 0x32, 0x59, 0x41, 0x52, 0x79, 0xe8, 0x57, 0x35, 0xdf, + 0xbc, 0xdd, 0x68, 0xc4, 0xaa, 0x48, 0x9b, 0x60, 0xdb, 0xca, 0x0b, 0xdb, 0xd8, 0x22, 0x02, 0xf2, + 0x39, 0x63, 0xed, 0x20, 0xf3, 0x48, 0x7d, 0x53, 0xd3, 0xf5, 0x79, 0xcc, 0x1e, 0x97, 0xef, 0x79, + 0xd9, 0x2f, 0xc6, 0xa2, 0xb1, 0xc2, 0x2f, 0xc6, 0xe2, 0x22, 0x0a, 0xe0, 0x05, 0xdf, 0x7c, 0xd4, + 0x38, 0x97, 0xc8, 0xee, 0x4a, 0x04, 0x4e, 0x10, 0xa7, 0x65, 0x0f, 0xc4, 0xc6, 0x1a, 0xff, 0xf9, + 0xc4, 0x80, 0xd8, 0x16, 0x84, 0xc4, 0x69, 0xbb, 0x5e, 0x4f, 0x44, 0xe1, 0xa4, 0xb8, 0xfc, 0x77, + 0x86, 0x3f, 0x43, 0x7c, 0xdb, 0x16, 0xdc, 0x1a, 0x11, 0xf0, 0xb7, 0x80, 0x4d, 0x01, 0x7c, 0xf5, + 0x6a, 0x0a, 0xfe, 0x23, 0x9b, 0xbe, 0x53, 0xd1, 0x27, 0x77, 0xca, 0x74, 0xa3, 0xef, 0x6c, 0x67, + 0xd0, 0x66, 0x16, 0xa9, 0x7f, 0x57, 0xf3, 0xcd, 0xc3, 0xc6, 0xa1, 0xdc, 0xcd, 0xb6, 0xd8, 0x57, + 0x7e, 0xc1, 0xd5, 0xf3, 0xd8, 0x4f, 0xd2, 0x45, 0x11, 0x58, 0x0a, 0xb7, 0x11, 0xd2, 0x1f, 0x05, + 0x0a, 0xab, 0x89, 0xf7, 0xea, 0x31, 0x0d, 0x97, 0xbc, 0xde, 0xfd, 0xbb, 0x9a, 0x4c, 0xb6, 0x69, + 0xe5, 0x49, 0x5e, 0x11, 0xcf, 0x20, 0x8c, 0x27, 0xa5, 0x7d, 0x95, 0xa4, 0xeb, 0xef, 0x6a, 0xb1, + 0x73, 0xc3, 0x72, 0x36, 0xaa, 0xdd, 0x91, 0x7d, 0x5e, 0x03, 0x8f, 0x94, 0xb3, 0x34, 0x36, 0x45, + 0xe7, 0xe7, 0xc1, 0xe9, 0x35, 0x59, 0xf2, 0xc4, 0xd1, 0xf3, 0x47, 0x3a, 0x84, 0x75, 0x07, 0xcd, + 0xd9, 0x96, 0xdb, 0x6b, 0x08, 0x82, 0x5c, 0xaf, 0xd3, 0x08, 0x3f, 0xe4, 0xec, 0x60, 0xa7, 0xd1, + 0x6f, 0xce, 0x74, 0xdc, 0x46, 0xfa, 0xcb, 0xe1, 0xe6, 0x75, 0xe2, 0x33, 0xcd, 0x3b, 0xff, 0x1b, + 0x00, 0x00, 0xff, 0xff, 0x6a, 0x52, 0x34, 0xd3, 0x54, 0x3c, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -363,6 +371,10 @@ type AdminServiceClient interface { // Updates a :ref:`ref_flyteidl.admin.NamedEntity` object. UpdateNamedEntity(ctx context.Context, in *admin.NamedEntityUpdateRequest, opts ...grpc.CallOption) (*admin.NamedEntityUpdateResponse, error) GetVersion(ctx context.Context, in *admin.GetVersionRequest, opts ...grpc.CallOption) (*admin.GetVersionResponse, error) + // Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object. + GetDescriptionEntity(ctx context.Context, in *admin.ObjectGetRequest, opts ...grpc.CallOption) (*admin.DescriptionEntity, error) + // Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. + ListDescriptionEntities(ctx context.Context, in *admin.DescriptionEntityListRequest, opts ...grpc.CallOption) (*admin.DescriptionEntityList, error) } type adminServiceClient struct { @@ -823,6 +835,24 @@ func (c *adminServiceClient) GetVersion(ctx context.Context, in *admin.GetVersio return out, nil } +func (c *adminServiceClient) GetDescriptionEntity(ctx context.Context, in *admin.ObjectGetRequest, opts ...grpc.CallOption) (*admin.DescriptionEntity, error) { + out := new(admin.DescriptionEntity) + err := c.cc.Invoke(ctx, "/flyteidl.service.AdminService/GetDescriptionEntity", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminServiceClient) ListDescriptionEntities(ctx context.Context, in *admin.DescriptionEntityListRequest, opts ...grpc.CallOption) (*admin.DescriptionEntityList, error) { + out := new(admin.DescriptionEntityList) + err := c.cc.Invoke(ctx, "/flyteidl.service.AdminService/ListDescriptionEntities", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // AdminServiceServer is the server API for AdminService service. type AdminServiceServer interface { // Create and upload a :ref:`ref_flyteidl.admin.Task` definition @@ -930,6 +960,10 @@ type AdminServiceServer interface { // Updates a :ref:`ref_flyteidl.admin.NamedEntity` object. UpdateNamedEntity(context.Context, *admin.NamedEntityUpdateRequest) (*admin.NamedEntityUpdateResponse, error) GetVersion(context.Context, *admin.GetVersionRequest) (*admin.GetVersionResponse, error) + // Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object. + GetDescriptionEntity(context.Context, *admin.ObjectGetRequest) (*admin.DescriptionEntity, error) + // Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. + ListDescriptionEntities(context.Context, *admin.DescriptionEntityListRequest) (*admin.DescriptionEntityList, error) } // UnimplementedAdminServiceServer can be embedded to have forward compatible implementations. @@ -1086,6 +1120,12 @@ func (*UnimplementedAdminServiceServer) UpdateNamedEntity(ctx context.Context, r func (*UnimplementedAdminServiceServer) GetVersion(ctx context.Context, req *admin.GetVersionRequest) (*admin.GetVersionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetVersion not implemented") } +func (*UnimplementedAdminServiceServer) GetDescriptionEntity(ctx context.Context, req *admin.ObjectGetRequest) (*admin.DescriptionEntity, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDescriptionEntity not implemented") +} +func (*UnimplementedAdminServiceServer) ListDescriptionEntities(ctx context.Context, req *admin.DescriptionEntityListRequest) (*admin.DescriptionEntityList, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListDescriptionEntities not implemented") +} func RegisterAdminServiceServer(s *grpc.Server, srv AdminServiceServer) { s.RegisterService(&_AdminService_serviceDesc, srv) @@ -1991,6 +2031,42 @@ func _AdminService_GetVersion_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _AdminService_GetDescriptionEntity_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(admin.ObjectGetRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).GetDescriptionEntity(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/flyteidl.service.AdminService/GetDescriptionEntity", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).GetDescriptionEntity(ctx, req.(*admin.ObjectGetRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminService_ListDescriptionEntities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(admin.DescriptionEntityListRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).ListDescriptionEntities(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/flyteidl.service.AdminService/ListDescriptionEntities", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).ListDescriptionEntities(ctx, req.(*admin.DescriptionEntityListRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _AdminService_serviceDesc = grpc.ServiceDesc{ ServiceName: "flyteidl.service.AdminService", HandlerType: (*AdminServiceServer)(nil), @@ -2195,6 +2271,14 @@ var _AdminService_serviceDesc = grpc.ServiceDesc{ MethodName: "GetVersion", Handler: _AdminService_GetVersion_Handler, }, + { + MethodName: "GetDescriptionEntity", + Handler: _AdminService_GetDescriptionEntity_Handler, + }, + { + MethodName: "ListDescriptionEntities", + Handler: _AdminService_ListDescriptionEntities_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "flyteidl/service/admin.proto", diff --git a/flyteidl/gen/pb-go/flyteidl/service/admin.pb.gw.go b/flyteidl/gen/pb-go/flyteidl/service/admin.pb.gw.go index a27b038bb7b..796ed9f9380 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/admin.pb.gw.go +++ b/flyteidl/gen/pb-go/flyteidl/service/admin.pb.gw.go @@ -2713,6 +2713,228 @@ func request_AdminService_GetVersion_0(ctx context.Context, marshaler runtime.Ma } +var ( + filter_AdminService_GetDescriptionEntity_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "resource_type": 1, "project": 2, "domain": 3, "name": 4, "version": 5}, Base: []int{1, 1, 1, 2, 3, 4, 5, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 2, 2, 2, 2, 3, 4, 5, 6, 7}} +) + +func request_AdminService_GetDescriptionEntity_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq admin.ObjectGetRequest + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["id.resource_type"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.resource_type") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.resource_type", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.resource_type", err) + } + + protoReq.Id.ResourceType = core.ResourceType(e) + + val, ok = pathParams["id.project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + } + + val, ok = pathParams["id.domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + } + + val, ok = pathParams["id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + } + + val, ok = pathParams["id.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDescriptionEntity_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetDescriptionEntity(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +var ( + filter_AdminService_ListDescriptionEntities_0 = &utilities.DoubleArray{Encoding: map[string]int{"resource_type": 0, "id": 1, "project": 2, "domain": 3, "name": 4}, Base: []int{1, 1, 1, 2, 3, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 3, 3, 3, 2, 4, 5, 6}} +) + +func request_AdminService_ListDescriptionEntities_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq admin.DescriptionEntityListRequest + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["resource_type"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") + } + + e, err = runtime.Enum(val, core.ResourceType_value) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) + } + + protoReq.ResourceType = core.ResourceType(e) + + val, ok = pathParams["id.project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + } + + val, ok = pathParams["id.domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + } + + val, ok = pathParams["id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListDescriptionEntities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +var ( + filter_AdminService_ListDescriptionEntities_1 = &utilities.DoubleArray{Encoding: map[string]int{"resource_type": 0, "id": 1, "project": 2, "domain": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 1, 3, 3, 2, 4, 5}} +) + +func request_AdminService_ListDescriptionEntities_1(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq admin.DescriptionEntityListRequest + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["resource_type"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") + } + + e, err = runtime.Enum(val, core.ResourceType_value) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) + } + + protoReq.ResourceType = core.ResourceType(e) + + val, ok = pathParams["id.project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + } + + val, ok = pathParams["id.domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListDescriptionEntities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + // RegisterAdminServiceHandlerFromEndpoint is same as RegisterAdminServiceHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAdminServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { @@ -3811,6 +4033,66 @@ func RegisterAdminServiceHandlerClient(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("GET", pattern_AdminService_GetDescriptionEntity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_GetDescriptionEntity_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_GetDescriptionEntity_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_ListDescriptionEntities_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_ListDescriptionEntities_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_ListDescriptionEntities_1(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_ListDescriptionEntities_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -3920,6 +4202,12 @@ var ( pattern_AdminService_UpdateNamedEntity_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "named_entities", "resource_type", "id.project", "id.domain", "id.name"}, "")) pattern_AdminService_GetVersion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "version"}, "")) + + pattern_AdminService_GetDescriptionEntity_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "description_entities", "id.resource_type", "id.project", "id.domain", "id.name", "id.version"}, "")) + + pattern_AdminService_ListDescriptionEntities_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "description_entities", "resource_type", "id.project", "id.domain", "id.name"}, "")) + + pattern_AdminService_ListDescriptionEntities_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "description_entities", "resource_type", "id.project", "id.domain"}, "")) ) var ( @@ -4028,4 +4316,10 @@ var ( forward_AdminService_UpdateNamedEntity_0 = runtime.ForwardResponseMessage forward_AdminService_GetVersion_0 = runtime.ForwardResponseMessage + + forward_AdminService_GetDescriptionEntity_0 = runtime.ForwardResponseMessage + + forward_AdminService_ListDescriptionEntities_0 = runtime.ForwardResponseMessage + + forward_AdminService_ListDescriptionEntities_1 = runtime.ForwardResponseMessage ) diff --git a/flyteidl/gen/pb-go/flyteidl/service/admin.swagger.json b/flyteidl/gen/pb-go/flyteidl/service/admin.swagger.json index 62c9807fc54..bbab7c03225 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/flyteidl/service/admin.swagger.json @@ -447,6 +447,260 @@ ] } }, + "/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}": { + "get": { + "summary": "Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object.", + "description": "Retrieve an existing description entity description.", + "operationId": "GetDescriptionEntity", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminDescriptionEntity" + } + } + }, + "parameters": [ + { + "name": "id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", + "description": "Fetch existing description entity definitions matching input filters.", + "operationId": "ListDescriptionEntities2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminDescriptionEntityList" + } + } + }, + "parameters": [ + { + "name": "resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required.", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional.\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", + "description": "Fetch existing description entity definitions matching input filters.", + "operationId": "ListDescriptionEntities", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminDescriptionEntityList" + } + } + }, + "parameters": [ + { + "name": "resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required.", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional.\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, "/api/v1/events/nodes": { "post": { "summary": "Indicates a :ref:`ref_flyteidl.event.NodeExecutionEvent` has occurred.", @@ -3380,6 +3634,86 @@ }, "description": "Options for schedules to run according to a cron expression." }, + "adminDescription": { + "type": "object", + "properties": { + "value": { + "type": "string", + "title": "long description - no more than 4KB" + }, + "uri": { + "type": "string", + "title": "if the description sizes exceed some threshold we can offload the entire\ndescription proto altogether to an external data store, like S3 rather than store inline in the db" + }, + "format": { + "$ref": "#/definitions/adminDescriptionFormat", + "title": "Format of the long description" + }, + "icon_link": { + "type": "string", + "title": "Optional link to an icon for the entity" + } + }, + "description": "Full user description with formatting preserved. This can be rendered\nby clients, such as the console or command line tools with in-tact\nformatting." + }, + "adminDescriptionEntity": { + "type": "object", + "properties": { + "id": { + "$ref": "#/definitions/coreIdentifier", + "description": "id represents the unique identifier of the description entity." + }, + "short_description": { + "type": "string", + "description": "One-liner overview of the entity." + }, + "long_description": { + "$ref": "#/definitions/adminDescription", + "description": "Full user description with formatting preserved." + }, + "source_code": { + "$ref": "#/definitions/adminSourceCode", + "description": "Optional link to source code used to define this entity." + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "User-specified tags. These are arbitrary and can be used for searching\nfiltering and discovering tasks." + } + }, + "description": "DescriptionEntity contains detailed description for the task/workflow.\nDocumentation could provide insight into the algorithms, business use case, etc." + }, + "adminDescriptionEntityList": { + "type": "object", + "properties": { + "descriptionEntities": { + "type": "array", + "items": { + "$ref": "#/definitions/adminDescriptionEntity" + }, + "description": "A list of DescriptionEntities returned based on the request." + }, + "token": { + "type": "string", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query. If there are no more results, this value will be empty." + } + }, + "title": "Represents a list of DescriptionEntities returned from the admin.\nSee :ref:`ref_flyteidl.admin.DescriptionEntity` for more details" + }, + "adminDescriptionFormat": { + "type": "string", + "enum": [ + "DESCRIPTION_FORMAT_UNKNOWN", + "DESCRIPTION_FORMAT_MARKDOWN", + "DESCRIPTION_FORMAT_HTML", + "DESCRIPTION_FORMAT_RST" + ], + "default": "DESCRIPTION_FORMAT_UNKNOWN", + "description": "- DESCRIPTION_FORMAT_RST: python default documentation - comments is rst", + "title": "The format of the long description" + }, "adminDomain": { "type": "object", "properties": { @@ -4660,6 +4994,15 @@ }, "description": "Specifies sort ordering in a list request." }, + "adminSourceCode": { + "type": "object", + "properties": { + "link": { + "type": "string" + } + }, + "title": "Link to source code used to define this entity" + }, "adminSystemMetadata": { "type": "object", "properties": { @@ -4680,6 +5023,10 @@ "closure": { "$ref": "#/definitions/adminTaskClosure", "description": "closure encapsulates all the fields that maps to a compiled version of the task." + }, + "short_description": { + "type": "string", + "description": "One-liner overview of the entity." } }, "description": "Flyte workflows are composed of many ordered tasks. That is small, reusable, self-contained logical blocks\narranged to process workflow inputs and produce a deterministic set of outputs.\nTasks can come in many varieties tuned for specialized behavior." @@ -4897,6 +5244,10 @@ "template": { "$ref": "#/definitions/coreTaskTemplate", "description": "Template of the task that encapsulates all the metadata of the task." + }, + "description": { + "$ref": "#/definitions/adminDescriptionEntity", + "description": "Represents the specification for description entity." } }, "description": "Represents a structure that encapsulates the user-configured specification of the task." @@ -4944,6 +5295,10 @@ "closure": { "$ref": "#/definitions/adminWorkflowClosure", "description": "closure encapsulates all the fields that maps to a compiled version of the workflow." + }, + "short_description": { + "type": "string", + "description": "One-liner overview of the entity." } }, "description": "Represents the workflow structure stored in the Admin\nA workflow is created by ordering tasks and associating outputs to inputs\nin order to produce a directed-acyclic execution graph." @@ -5155,6 +5510,10 @@ "$ref": "#/definitions/coreWorkflowTemplate" }, "description": "Workflows that are embedded into other workflows need to be passed alongside the parent workflow to the\npropeller compiler (since the compiler doesn't have any knowledge of other workflows - ie, it doesn't reach out\nto Admin to see other registered workflows). In fact, subworkflows do not even need to be registered." + }, + "description": { + "$ref": "#/definitions/adminDescriptionEntity", + "description": "Represents the specification for description entity." } }, "description": "Represents a structure that encapsulates the specification of the workflow." diff --git a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/README.md b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/README.md index 19cd2d9d2df..9967be033bd 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/README.md +++ b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/README.md @@ -32,6 +32,7 @@ Class | Method | HTTP request | Description *AdminServiceApi* | [**DeleteProjectDomainAttributes**](docs/AdminServiceApi.md#deleteprojectdomainattributes) | **Delete** /api/v1/project_domain_attributes/{project}/{domain} | Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain. *AdminServiceApi* | [**DeleteWorkflowAttributes**](docs/AdminServiceApi.md#deleteworkflowattributes) | **Delete** /api/v1/workflow_attributes/{project}/{domain}/{workflow} | Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow. *AdminServiceApi* | [**GetActiveLaunchPlan**](docs/AdminServiceApi.md#getactivelaunchplan) | **Get** /api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name} | Fetch the active version of a :ref:`ref_flyteidl.admin.LaunchPlan`. +*AdminServiceApi* | [**GetDescriptionEntity**](docs/AdminServiceApi.md#getdescriptionentity) | **Get** /api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version} | Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object. *AdminServiceApi* | [**GetExecution**](docs/AdminServiceApi.md#getexecution) | **Get** /api/v1/executions/{id.project}/{id.domain}/{id.name} | Fetches a :ref:`ref_flyteidl.admin.Execution`. *AdminServiceApi* | [**GetExecutionData**](docs/AdminServiceApi.md#getexecutiondata) | **Get** /api/v1/data/executions/{id.project}/{id.domain}/{id.name} | Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`. *AdminServiceApi* | [**GetLaunchPlan**](docs/AdminServiceApi.md#getlaunchplan) | **Get** /api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version} | Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition. @@ -47,6 +48,8 @@ Class | Method | HTTP request | Description *AdminServiceApi* | [**GetWorkflow**](docs/AdminServiceApi.md#getworkflow) | **Get** /api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version} | Fetch a :ref:`ref_flyteidl.admin.Workflow` definition. *AdminServiceApi* | [**GetWorkflowAttributes**](docs/AdminServiceApi.md#getworkflowattributes) | **Get** /api/v1/workflow_attributes/{project}/{domain}/{workflow} | Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow. *AdminServiceApi* | [**ListActiveLaunchPlans**](docs/AdminServiceApi.md#listactivelaunchplans) | **Get** /api/v1/active_launch_plans/{project}/{domain} | List active versions of :ref:`ref_flyteidl.admin.LaunchPlan`. +*AdminServiceApi* | [**ListDescriptionEntities**](docs/AdminServiceApi.md#listdescriptionentities) | **Get** /api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name} | Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. +*AdminServiceApi* | [**ListDescriptionEntities2**](docs/AdminServiceApi.md#listdescriptionentities2) | **Get** /api/v1/description_entities/{resource_type}/{id.project}/{id.domain} | Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. *AdminServiceApi* | [**ListExecutions**](docs/AdminServiceApi.md#listexecutions) | **Get** /api/v1/executions/{id.project}/{id.domain} | Fetch a list of :ref:`ref_flyteidl.admin.Execution`. *AdminServiceApi* | [**ListLaunchPlanIds**](docs/AdminServiceApi.md#listlaunchplanids) | **Get** /api/v1/launch_plan_ids/{project}/{domain} | Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of launch plan objects. *AdminServiceApi* | [**ListLaunchPlans**](docs/AdminServiceApi.md#listlaunchplans) | **Get** /api/v1/launch_plans/{id.project}/{id.domain}/{id.name} | Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions. @@ -85,6 +88,10 @@ Class | Method | HTTP request | Description - [AdminClusterAssignment](docs/AdminClusterAssignment.md) - [AdminClusterResourceAttributes](docs/AdminClusterResourceAttributes.md) - [AdminCronSchedule](docs/AdminCronSchedule.md) + - [AdminDescription](docs/AdminDescription.md) + - [AdminDescriptionEntity](docs/AdminDescriptionEntity.md) + - [AdminDescriptionEntityList](docs/AdminDescriptionEntityList.md) + - [AdminDescriptionFormat](docs/AdminDescriptionFormat.md) - [AdminDomain](docs/AdminDomain.md) - [AdminEmailNotification](docs/AdminEmailNotification.md) - [AdminExecution](docs/AdminExecution.md) @@ -163,6 +170,7 @@ Class | Method | HTTP request | Description - [AdminSchedule](docs/AdminSchedule.md) - [AdminSlackNotification](docs/AdminSlackNotification.md) - [AdminSort](docs/AdminSort.md) + - [AdminSourceCode](docs/AdminSourceCode.md) - [AdminSystemMetadata](docs/AdminSystemMetadata.md) - [AdminTask](docs/AdminTask.md) - [AdminTaskClosure](docs/AdminTaskClosure.md) diff --git a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml index 663f7e921fb..d6c5723122a 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml +++ b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml @@ -399,6 +399,240 @@ paths: description: "A successful response." schema: $ref: "#/definitions/adminTaskExecutionGetDataResponse" + /api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}: + get: + tags: + - "AdminService" + summary: "Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object." + description: "Retrieve an existing description entity description." + operationId: "GetDescriptionEntity" + parameters: + - name: "id.resource_type" + in: "path" + description: "Identifies the specific type of resource that this identifier\ + \ corresponds to." + required: true + type: "string" + enum: + - "UNSPECIFIED" + - "TASK" + - "WORKFLOW" + - "LAUNCH_PLAN" + - "DATASET" + x-exportParamName: "IdResourceType" + - name: "id.project" + in: "path" + description: "Name of the project the resource belongs to." + required: true + type: "string" + x-exportParamName: "IdProject" + - name: "id.domain" + in: "path" + description: "Name of the domain the resource belongs to.\nA domain can be\ + \ considered as a subset within a specific project." + required: true + type: "string" + x-exportParamName: "IdDomain" + - name: "id.name" + in: "path" + description: "User provided value for the resource." + required: true + type: "string" + x-exportParamName: "IdName" + - name: "id.version" + in: "path" + description: "Specific version of the resource." + required: true + type: "string" + x-exportParamName: "IdVersion" + responses: + 200: + description: "A successful response." + schema: + $ref: "#/definitions/adminDescriptionEntity" + /api/v1/description_entities/{resource_type}/{id.project}/{id.domain}: + get: + tags: + - "AdminService" + summary: "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions." + description: "Fetch existing description entity definitions matching input filters." + operationId: "ListDescriptionEntities2" + parameters: + - name: "resource_type" + in: "path" + description: "Identifies the specific type of resource that this identifier\ + \ corresponds to." + required: true + type: "string" + enum: + - "UNSPECIFIED" + - "TASK" + - "WORKFLOW" + - "LAUNCH_PLAN" + - "DATASET" + x-exportParamName: "ResourceType" + - name: "id.project" + in: "path" + description: "Name of the project the resource belongs to." + required: true + type: "string" + x-exportParamName: "IdProject" + - name: "id.domain" + in: "path" + description: "Name of the domain the resource belongs to.\nA domain can be\ + \ considered as a subset within a specific project." + required: true + type: "string" + x-exportParamName: "IdDomain" + - name: "id.name" + in: "query" + description: "User provided value for the resource.\nThe combination of project\ + \ + domain + name uniquely identifies the resource.\n+optional - in certain\ + \ contexts - like 'List API', 'Launch plans'." + required: false + type: "string" + x-exportParamName: "IdName" + x-optionalDataType: "String" + - name: "limit" + in: "query" + description: "Indicates the number of resources to be returned.\n+required." + required: false + type: "integer" + format: "int64" + x-exportParamName: "Limit" + x-optionalDataType: "Int64" + - name: "token" + in: "query" + description: "In the case of multiple pages of results, the server-provided\ + \ token can be used to fetch the next page\nin a query.\n+optional." + required: false + type: "string" + x-exportParamName: "Token" + x-optionalDataType: "String" + - name: "filters" + in: "query" + description: "Indicates a list of filters passed as string.\nMore info on\ + \ constructing filters : \n+optional." + required: false + type: "string" + x-exportParamName: "Filters" + x-optionalDataType: "String" + - name: "sort_by.key" + in: "query" + description: "Indicates an attribute to sort the response values.\n+required." + required: false + type: "string" + x-exportParamName: "SortByKey" + x-optionalDataType: "String" + - name: "sort_by.direction" + in: "query" + description: "Indicates the direction to apply sort key for response values.\n\ + +optional.\n\n - DESCENDING: By default, fields are sorted in descending\ + \ order." + required: false + type: "string" + default: "DESCENDING" + enum: + - "DESCENDING" + - "ASCENDING" + x-exportParamName: "SortByDirection" + x-optionalDataType: "String" + responses: + 200: + description: "A successful response." + schema: + $ref: "#/definitions/adminDescriptionEntityList" + /api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}: + get: + tags: + - "AdminService" + summary: "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions." + description: "Fetch existing description entity definitions matching input filters." + operationId: "ListDescriptionEntities" + parameters: + - name: "resource_type" + in: "path" + description: "Identifies the specific type of resource that this identifier\ + \ corresponds to." + required: true + type: "string" + enum: + - "UNSPECIFIED" + - "TASK" + - "WORKFLOW" + - "LAUNCH_PLAN" + - "DATASET" + x-exportParamName: "ResourceType" + - name: "id.project" + in: "path" + description: "Name of the project the resource belongs to." + required: true + type: "string" + x-exportParamName: "IdProject" + - name: "id.domain" + in: "path" + description: "Name of the domain the resource belongs to.\nA domain can be\ + \ considered as a subset within a specific project." + required: true + type: "string" + x-exportParamName: "IdDomain" + - name: "id.name" + in: "path" + description: "User provided value for the resource.\nThe combination of project\ + \ + domain + name uniquely identifies the resource.\n+optional - in certain\ + \ contexts - like 'List API', 'Launch plans'" + required: true + type: "string" + x-exportParamName: "IdName" + - name: "limit" + in: "query" + description: "Indicates the number of resources to be returned.\n+required." + required: false + type: "integer" + format: "int64" + x-exportParamName: "Limit" + x-optionalDataType: "Int64" + - name: "token" + in: "query" + description: "In the case of multiple pages of results, the server-provided\ + \ token can be used to fetch the next page\nin a query.\n+optional." + required: false + type: "string" + x-exportParamName: "Token" + x-optionalDataType: "String" + - name: "filters" + in: "query" + description: "Indicates a list of filters passed as string.\nMore info on\ + \ constructing filters : \n+optional." + required: false + type: "string" + x-exportParamName: "Filters" + x-optionalDataType: "String" + - name: "sort_by.key" + in: "query" + description: "Indicates an attribute to sort the response values.\n+required." + required: false + type: "string" + x-exportParamName: "SortByKey" + x-optionalDataType: "String" + - name: "sort_by.direction" + in: "query" + description: "Indicates the direction to apply sort key for response values.\n\ + +optional.\n\n - DESCENDING: By default, fields are sorted in descending\ + \ order." + required: false + type: "string" + default: "DESCENDING" + enum: + - "DESCENDING" + - "ASCENDING" + x-exportParamName: "SortByDirection" + x-optionalDataType: "String" + responses: + 200: + description: "A successful response." + schema: + $ref: "#/definitions/adminDescriptionEntityList" /api/v1/events/nodes: post: tags: @@ -3079,6 +3313,135 @@ definitions: example: schedule: "schedule" offset: "offset" + adminDescription: + type: "object" + properties: + value: + type: "string" + title: "long description - no more than 4KB" + uri: + type: "string" + title: "if the description sizes exceed some threshold we can offload the\ + \ entire\ndescription proto altogether to an external data store, like S3\ + \ rather than store inline in the db" + format: + title: "Format of the long description" + $ref: "#/definitions/adminDescriptionFormat" + icon_link: + type: "string" + title: "Optional link to an icon for the entity" + description: "Full user description with formatting preserved. This can be rendered\n\ + by clients, such as the console or command line tools with in-tact\nformatting." + example: + format: {} + icon_link: "icon_link" + value: "value" + uri: "uri" + adminDescriptionEntity: + type: "object" + properties: + id: + description: "id represents the unique identifier of the description entity." + $ref: "#/definitions/coreIdentifier" + short_description: + type: "string" + description: "One-liner overview of the entity." + long_description: + description: "Full user description with formatting preserved." + $ref: "#/definitions/adminDescription" + source_code: + description: "Optional link to source code used to define this entity." + $ref: "#/definitions/adminSourceCode" + tags: + type: "array" + description: "User-specified tags. These are arbitrary and can be used for\ + \ searching\nfiltering and discovering tasks." + items: + type: "string" + description: "DescriptionEntity contains detailed description for the task/workflow.\n\ + Documentation could provide insight into the algorithms, business use case,\ + \ etc." + example: + short_description: "short_description" + id: + domain: "domain" + resource_type: {} + name: "name" + project: "project" + version: "version" + long_description: + format: {} + icon_link: "icon_link" + value: "value" + uri: "uri" + source_code: + link: "link" + tags: + - "tags" + - "tags" + adminDescriptionEntityList: + type: "object" + properties: + descriptionEntities: + type: "array" + description: "A list of DescriptionEntities returned based on the request." + items: + $ref: "#/definitions/adminDescriptionEntity" + token: + type: "string" + description: "In the case of multiple pages of results, the server-provided\ + \ token can be used to fetch the next page\nin a query. If there are no\ + \ more results, this value will be empty." + title: "Represents a list of DescriptionEntities returned from the admin.\nSee\ + \ :ref:`ref_flyteidl.admin.DescriptionEntity` for more details" + example: + descriptionEntities: + - short_description: "short_description" + id: + domain: "domain" + resource_type: {} + name: "name" + project: "project" + version: "version" + long_description: + format: {} + icon_link: "icon_link" + value: "value" + uri: "uri" + source_code: + link: "link" + tags: + - "tags" + - "tags" + - short_description: "short_description" + id: + domain: "domain" + resource_type: {} + name: "name" + project: "project" + version: "version" + long_description: + format: {} + icon_link: "icon_link" + value: "value" + uri: "uri" + source_code: + link: "link" + tags: + - "tags" + - "tags" + token: "token" + adminDescriptionFormat: + type: "string" + title: "The format of the long description" + description: "- DESCRIPTION_FORMAT_RST: python default documentation - comments\ + \ is rst" + enum: + - "DESCRIPTION_FORMAT_UNKNOWN" + - "DESCRIPTION_FORMAT_MARKDOWN" + - "DESCRIPTION_FORMAT_HTML" + - "DESCRIPTION_FORMAT_RST" + default: "DESCRIPTION_FORMAT_UNKNOWN" adminDomain: type: "object" properties: @@ -14795,6 +15158,14 @@ definitions: title: "Indicates the direction to apply sort key for response values.\n+optional" $ref: "#/definitions/SortDirection" description: "Specifies sort ordering in a list request." + adminSourceCode: + type: "object" + properties: + link: + type: "string" + title: "Link to source code used to define this entity" + example: + link: "link" adminSystemMetadata: type: "object" properties: @@ -14814,11 +15185,15 @@ definitions: description: "closure encapsulates all the fields that maps to a compiled\ \ version of the task." $ref: "#/definitions/adminTaskClosure" + short_description: + type: "string" + description: "One-liner overview of the entity." description: "Flyte workflows are composed of many ordered tasks. That is small,\ \ reusable, self-contained logical blocks\narranged to process workflow inputs\ \ and produce a deterministic set of outputs.\nTasks can come in many varieties\ \ tuned for specialized behavior." example: + short_description: "short_description" id: domain: "domain" resource_type: {} @@ -15747,7 +16122,8 @@ definitions: \ for more details" example: tasks: - - id: + - short_description: "short_description" + id: domain: "domain" resource_type: {} name: "name" @@ -16006,7 +16382,8 @@ definitions: sql: dialect: {} statement: "statement" - - id: + - short_description: "short_description" + id: domain: "domain" resource_type: {} name: "name" @@ -16316,6 +16693,9 @@ definitions: description: "Template of the task that encapsulates all the metadata of the\ \ task." $ref: "#/definitions/coreTaskTemplate" + description: + description: "Represents the specification for description entity." + $ref: "#/definitions/adminDescriptionEntity" description: "Represents a structure that encapsulates the user-configured specification\ \ of the task." adminUrlBlob: @@ -16360,10 +16740,14 @@ definitions: description: "closure encapsulates all the fields that maps to a compiled\ \ version of the workflow." $ref: "#/definitions/adminWorkflowClosure" + short_description: + type: "string" + description: "One-liner overview of the entity." description: "Represents the workflow structure stored in the Admin\nA workflow\ \ is created by ordering tasks and associating outputs to inputs\nin order to\ \ produce a directed-acyclic execution graph." example: + short_description: "short_description" id: domain: "domain" resource_type: {} @@ -29872,7 +30256,8 @@ definitions: \ for more details" example: workflows: - - id: + - short_description: "short_description" + id: domain: "domain" resource_type: {} name: "name" @@ -36411,7 +36796,8 @@ definitions: - "ids" - "ids" created_at: "2000-01-23T04:56:07.000+00:00" - - id: + - short_description: "short_description" + id: domain: "domain" resource_type: {} name: "name" @@ -42967,6 +43353,9 @@ definitions: \ do not even need to be registered." items: $ref: "#/definitions/coreWorkflowTemplate" + description: + description: "Represents the specification for description entity." + $ref: "#/definitions/adminDescriptionEntity" description: "Represents a structure that encapsulates the specification of the\ \ workflow." coreAlias: diff --git a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go index cd913be1651..31204fe6d7f 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go +++ b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go @@ -1097,6 +1097,103 @@ func (a *AdminServiceApiService) GetActiveLaunchPlan(ctx context.Context, idProj return localVarReturnValue, localVarHttpResponse, nil } +/* +AdminServiceApiService Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object. +Retrieve an existing description entity description. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param idResourceType Identifies the specific type of resource that this identifier corresponds to. + * @param idProject Name of the project the resource belongs to. + * @param idDomain Name of the domain the resource belongs to. A domain can be considered as a subset within a specific project. + * @param idName User provided value for the resource. + * @param idVersion Specific version of the resource. + +@return AdminDescriptionEntity +*/ +func (a *AdminServiceApiService) GetDescriptionEntity(ctx context.Context, idResourceType string, idProject string, idDomain string, idName string, idVersion string) (AdminDescriptionEntity, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue AdminDescriptionEntity + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}" + localVarPath = strings.Replace(localVarPath, "{"+"id.resource_type"+"}", fmt.Sprintf("%v", idResourceType), -1) + localVarPath = strings.Replace(localVarPath, "{"+"id.project"+"}", fmt.Sprintf("%v", idProject), -1) + localVarPath = strings.Replace(localVarPath, "{"+"id.domain"+"}", fmt.Sprintf("%v", idDomain), -1) + localVarPath = strings.Replace(localVarPath, "{"+"id.name"+"}", fmt.Sprintf("%v", idName), -1) + localVarPath = strings.Replace(localVarPath, "{"+"id.version"+"}", fmt.Sprintf("%v", idVersion), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v AdminDescriptionEntity + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + /* AdminServiceApiService Fetches a :ref:`ref_flyteidl.admin.Execution`. Retrieve an existing workflow execution. @@ -2619,6 +2716,259 @@ func (a *AdminServiceApiService) ListActiveLaunchPlans(ctx context.Context, proj return localVarReturnValue, localVarHttpResponse, nil } +/* +AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. +Fetch existing description entity definitions matching input filters. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param resourceType Identifies the specific type of resource that this identifier corresponds to. + * @param idProject Name of the project the resource belongs to. + * @param idDomain Name of the domain the resource belongs to. A domain can be considered as a subset within a specific project. + * @param idName User provided value for the resource. The combination of project + domain + name uniquely identifies the resource. +optional - in certain contexts - like 'List API', 'Launch plans' + * @param optional nil or *ListDescriptionEntitiesOpts - Optional Parameters: + * @param "Limit" (optional.Int64) - Indicates the number of resources to be returned. +required. + * @param "Token" (optional.String) - In the case of multiple pages of results, the server-provided token can be used to fetch the next page in a query. +optional. + * @param "Filters" (optional.String) - Indicates a list of filters passed as string. More info on constructing filters : <Link> +optional. + * @param "SortByKey" (optional.String) - Indicates an attribute to sort the response values. +required. + * @param "SortByDirection" (optional.String) - Indicates the direction to apply sort key for response values. +optional. - DESCENDING: By default, fields are sorted in descending order. + +@return AdminDescriptionEntityList +*/ + +type ListDescriptionEntitiesOpts struct { + Limit optional.Int64 + Token optional.String + Filters optional.String + SortByKey optional.String + SortByDirection optional.String +} + +func (a *AdminServiceApiService) ListDescriptionEntities(ctx context.Context, resourceType string, idProject string, idDomain string, idName string, localVarOptionals *ListDescriptionEntitiesOpts) (AdminDescriptionEntityList, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue AdminDescriptionEntityList + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}" + localVarPath = strings.Replace(localVarPath, "{"+"resource_type"+"}", fmt.Sprintf("%v", resourceType), -1) + localVarPath = strings.Replace(localVarPath, "{"+"id.project"+"}", fmt.Sprintf("%v", idProject), -1) + localVarPath = strings.Replace(localVarPath, "{"+"id.domain"+"}", fmt.Sprintf("%v", idDomain), -1) + localVarPath = strings.Replace(localVarPath, "{"+"id.name"+"}", fmt.Sprintf("%v", idName), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if localVarOptionals != nil && localVarOptionals.Limit.IsSet() { + localVarQueryParams.Add("limit", parameterToString(localVarOptionals.Limit.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.Token.IsSet() { + localVarQueryParams.Add("token", parameterToString(localVarOptionals.Token.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.Filters.IsSet() { + localVarQueryParams.Add("filters", parameterToString(localVarOptionals.Filters.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.SortByKey.IsSet() { + localVarQueryParams.Add("sort_by.key", parameterToString(localVarOptionals.SortByKey.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.SortByDirection.IsSet() { + localVarQueryParams.Add("sort_by.direction", parameterToString(localVarOptionals.SortByDirection.Value(), "")) + } + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v AdminDescriptionEntityList + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. +Fetch existing description entity definitions matching input filters. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param resourceType Identifies the specific type of resource that this identifier corresponds to. + * @param idProject Name of the project the resource belongs to. + * @param idDomain Name of the domain the resource belongs to. A domain can be considered as a subset within a specific project. + * @param optional nil or *ListDescriptionEntities2Opts - Optional Parameters: + * @param "IdName" (optional.String) - User provided value for the resource. The combination of project + domain + name uniquely identifies the resource. +optional - in certain contexts - like 'List API', 'Launch plans'. + * @param "Limit" (optional.Int64) - Indicates the number of resources to be returned. +required. + * @param "Token" (optional.String) - In the case of multiple pages of results, the server-provided token can be used to fetch the next page in a query. +optional. + * @param "Filters" (optional.String) - Indicates a list of filters passed as string. More info on constructing filters : <Link> +optional. + * @param "SortByKey" (optional.String) - Indicates an attribute to sort the response values. +required. + * @param "SortByDirection" (optional.String) - Indicates the direction to apply sort key for response values. +optional. - DESCENDING: By default, fields are sorted in descending order. + +@return AdminDescriptionEntityList +*/ + +type ListDescriptionEntities2Opts struct { + IdName optional.String + Limit optional.Int64 + Token optional.String + Filters optional.String + SortByKey optional.String + SortByDirection optional.String +} + +func (a *AdminServiceApiService) ListDescriptionEntities2(ctx context.Context, resourceType string, idProject string, idDomain string, localVarOptionals *ListDescriptionEntities2Opts) (AdminDescriptionEntityList, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue AdminDescriptionEntityList + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}" + localVarPath = strings.Replace(localVarPath, "{"+"resource_type"+"}", fmt.Sprintf("%v", resourceType), -1) + localVarPath = strings.Replace(localVarPath, "{"+"id.project"+"}", fmt.Sprintf("%v", idProject), -1) + localVarPath = strings.Replace(localVarPath, "{"+"id.domain"+"}", fmt.Sprintf("%v", idDomain), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if localVarOptionals != nil && localVarOptionals.IdName.IsSet() { + localVarQueryParams.Add("id.name", parameterToString(localVarOptionals.IdName.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.Limit.IsSet() { + localVarQueryParams.Add("limit", parameterToString(localVarOptionals.Limit.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.Token.IsSet() { + localVarQueryParams.Add("token", parameterToString(localVarOptionals.Token.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.Filters.IsSet() { + localVarQueryParams.Add("filters", parameterToString(localVarOptionals.Filters.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.SortByKey.IsSet() { + localVarQueryParams.Add("sort_by.key", parameterToString(localVarOptionals.SortByKey.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.SortByDirection.IsSet() { + localVarQueryParams.Add("sort_by.direction", parameterToString(localVarOptionals.SortByDirection.Value(), "")) + } + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v AdminDescriptionEntityList + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + /* AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.Execution`. Fetch existing workflow executions matching input filters. diff --git a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description.go b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description.go new file mode 100644 index 00000000000..6e696d7c123 --- /dev/null +++ b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description.go @@ -0,0 +1,18 @@ +/* + * flyteidl/service/admin.proto + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: version not set + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package flyteadmin + +// Full user description with formatting preserved. This can be rendered by clients, such as the console or command line tools with in-tact formatting. +type AdminDescription struct { + Value string `json:"value,omitempty"` + Uri string `json:"uri,omitempty"` + Format *AdminDescriptionFormat `json:"format,omitempty"` + IconLink string `json:"icon_link,omitempty"` +} diff --git a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description_entity.go b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description_entity.go new file mode 100644 index 00000000000..98fdc94706c --- /dev/null +++ b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description_entity.go @@ -0,0 +1,24 @@ +/* + * flyteidl/service/admin.proto + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: version not set + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package flyteadmin + +// DescriptionEntity contains detailed description for the task/workflow. Documentation could provide insight into the algorithms, business use case, etc. +type AdminDescriptionEntity struct { + // id represents the unique identifier of the description entity. + Id *CoreIdentifier `json:"id,omitempty"` + // One-liner overview of the entity. + ShortDescription string `json:"short_description,omitempty"` + // Full user description with formatting preserved. + LongDescription *AdminDescription `json:"long_description,omitempty"` + // Optional link to source code used to define this entity. + SourceCode *AdminSourceCode `json:"source_code,omitempty"` + // User-specified tags. These are arbitrary and can be used for searching filtering and discovering tasks. + Tags []string `json:"tags,omitempty"` +} diff --git a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description_entity_list.go b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description_entity_list.go new file mode 100644 index 00000000000..98ca02f0a1a --- /dev/null +++ b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description_entity_list.go @@ -0,0 +1,17 @@ +/* + * flyteidl/service/admin.proto + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: version not set + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package flyteadmin + +type AdminDescriptionEntityList struct { + // A list of DescriptionEntities returned based on the request. + DescriptionEntities []AdminDescriptionEntity `json:"descriptionEntities,omitempty"` + // In the case of multiple pages of results, the server-provided token can be used to fetch the next page in a query. If there are no more results, this value will be empty. + Token string `json:"token,omitempty"` +} diff --git a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description_format.go b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description_format.go new file mode 100644 index 00000000000..c3929102777 --- /dev/null +++ b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_description_format.go @@ -0,0 +1,20 @@ +/* + * flyteidl/service/admin.proto + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: version not set + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package flyteadmin +// AdminDescriptionFormat : - DESCRIPTION_FORMAT_RST: python default documentation - comments is rst +type AdminDescriptionFormat string + +// List of adminDescriptionFormat +const ( + AdminDescriptionFormatUNKNOWN AdminDescriptionFormat = "DESCRIPTION_FORMAT_UNKNOWN" + AdminDescriptionFormatMARKDOWN AdminDescriptionFormat = "DESCRIPTION_FORMAT_MARKDOWN" + AdminDescriptionFormatHTML AdminDescriptionFormat = "DESCRIPTION_FORMAT_HTML" + AdminDescriptionFormatRST AdminDescriptionFormat = "DESCRIPTION_FORMAT_RST" +) diff --git a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_source_code.go b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_source_code.go new file mode 100644 index 00000000000..72aa08c11a3 --- /dev/null +++ b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_source_code.go @@ -0,0 +1,14 @@ +/* + * flyteidl/service/admin.proto + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: version not set + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package flyteadmin + +type AdminSourceCode struct { + Link string `json:"link,omitempty"` +} diff --git a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task.go b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task.go index 5df22b24f69..6ebc4532474 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task.go +++ b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task.go @@ -15,4 +15,6 @@ type AdminTask struct { Id *CoreIdentifier `json:"id,omitempty"` // closure encapsulates all the fields that maps to a compiled version of the task. Closure *AdminTaskClosure `json:"closure,omitempty"` + // One-liner overview of the entity. + ShortDescription string `json:"short_description,omitempty"` } diff --git a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_spec.go b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_spec.go index 84ee0ec7241..38c518515ff 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_spec.go +++ b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_spec.go @@ -13,4 +13,6 @@ package flyteadmin type AdminTaskSpec struct { // Template of the task that encapsulates all the metadata of the task. Template *CoreTaskTemplate `json:"template,omitempty"` + // Represents the specification for description entity. + Description *AdminDescriptionEntity `json:"description,omitempty"` } diff --git a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow.go b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow.go index be78c65504c..8b092b6c3e0 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow.go +++ b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow.go @@ -15,4 +15,6 @@ type AdminWorkflow struct { Id *CoreIdentifier `json:"id,omitempty"` // closure encapsulates all the fields that maps to a compiled version of the workflow. Closure *AdminWorkflowClosure `json:"closure,omitempty"` + // One-liner overview of the entity. + ShortDescription string `json:"short_description,omitempty"` } diff --git a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_spec.go b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_spec.go index 5e6377c24cc..e4ff5018c72 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_spec.go +++ b/flyteidl/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_spec.go @@ -15,4 +15,6 @@ type AdminWorkflowSpec struct { Template *CoreWorkflowTemplate `json:"template,omitempty"` // Workflows that are embedded into other workflows need to be passed alongside the parent workflow to the propeller compiler (since the compiler doesn't have any knowledge of other workflows - ie, it doesn't reach out to Admin to see other registered workflows). In fact, subworkflows do not even need to be registered. SubWorkflows []CoreWorkflowTemplate `json:"sub_workflows,omitempty"` + // Represents the specification for description entity. + Description *AdminDescriptionEntity `json:"description,omitempty"` } diff --git a/flyteidl/gen/pb-go/flyteidl/service/openapi.go b/flyteidl/gen/pb-go/flyteidl/service/openapi.go index 0867b65ea38..da7b3b86809 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/openapi.go +++ b/flyteidl/gen/pb-go/flyteidl/service/openapi.go @@ -78,7 +78,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x79\x73\x24\xb7\x95\x2f\x0c\xff\x3f\x9f\x02\xb7\x7d\x23\x5a\xb2\xb9\x48\xf2\x8c\x5f\x0f\x27\x6e\xbc\x4f\x89\xac\x6e\xf1\x8a\x4d\xd2\x5c\xa4\xd1\x33\xe5\x28\xa1\x32\x51\x55\x30\x33\x81\x34\x80\x24\xbb\xec\xf0\x77\x7f\x02\x07\x4b\x22\xb7\xaa\xac\x85\x64\xb1\x95\x33\x11\x16\xbb\x32\x13\xeb\xc1\xc1\x59\x7f\xe7\x9f\xff\x86\xd0\x3b\xf9\x84\x67\x33\x22\xde\x9d\xa0\x77\xdf\x1d\x7d\xf3\xee\x40\xff\x46\xd9\x94\xbf\x3b\x41\xfa\x39\x42\xef\x14\x55\x09\xd1\xcf\xa7\xc9\x42\x11\x1a\x27\xc7\x92\x88\x47\x1a\x91\x63\x1c\xa7\x94\x1d\x65\x82\x2b\x0e\x1f\x22\xf4\xee\x91\x08\x49\x39\xd3\xaf\xdb\x3f\x11\xe3\x0a\x49\xa2\xde\xfd\x1b\x42\xff\x82\xe6\x65\x34\x27\x29\x91\xef\x4e\xd0\xff\x98\x8f\xe6\x4a\x65\xae\x01\xfd\xb7\xd4\xef\xfe\x15\xde\x8d\x38\x93\x79\xe9\x65\x9c\x65\x09\x8d\xb0\xa2\x9c\x1d\xff\x4d\x72\x56\xbc\x9b\x09\x1e\xe7\x51\xc7\x77\xb1\x9a\xcb\x62\x8e\xc7\x38\xa3\xc7\x8f\xdf\x1e\xe3\x48\xd1\x47\x32\x4e\x70\xce\xa2\xf9\x38\x4b\x30\x93\xc7\xff\xa4\xb1\x9e\xe3\xdf\x48\xa4\xfe\x05\xff\x88\x79\x8a\x29\x33\x7f\x33\x9c\x92\x7f\xf9\x76\x10\x7a\x37\x23\x2a\xf8\xa7\x9e\x6d\x9e\xa6\x58\x2c\xf4\x8a\x7c\x20\x2a\x9a\x23\x35\x27\xc8\xf4\x83\xdc\x12\xf1\x29\xc2\xe8\x44\x90\xe9\xc9\xaf\x82\x4c\xc7\x6e\xa1\x8f\xcc\x02\x5f\xc0\x68\xae\x13\xcc\x7e\x3d\xb2\xcb\x04\x2d\xc7\x44\x46\x82\x66\xca\xae\xf7\x0d\x51\x82\x92\x47\x12\x76\x60\x26\x82\xf4\x44\x7c\x67\x32\x23\x11\x9d\x52\x12\xa3\xc9\x02\x51\x96\xe5\x0a\x09\xf2\xf7\x9c\x48\x85\xa6\x34\x51\x44\xc8\x52\x2f\x3c\x23\x02\x56\xf0\x3c\xd6\xbd\x7c\x24\x6a\x00\x6d\x17\xa3\x0a\xdf\x16\x44\x66\x9c\x49\x22\x4b\x8b\x80\xd0\xbb\xef\xbe\xf9\xa6\xf2\x53\x7d\x06\x03\x24\xf3\x28\x22\x52\x4e\xf3\x04\xb9\x96\xc2\xc1\x98\x05\xd5\xe4\x83\x6b\x8d\x21\xf4\xee\x7f\x0b\x32\xd5\xed\xfc\xee\x38\x26\x53\xca\xa8\x6e\x57\x1a\x2a\x0d\x46\x5b\xfa\xea\x5f\xff\xd6\xf4\xf7\xbf\x82\x19\x65\x58\xe0\x94\xe8\x65\xf1\x74\x65\xfe\xaf\x32\x17\x4d\x09\xba\xf3\x82\x5a\xaa\x03\xaf\xcc\xf6\x12\xa7\x44\xef\xbc\xde\x2e\xfb\x05\xfc\x2d\x88\xe4\xb9\x88\x08\x9a\x90\x84\xb3\x99\x44\x8a\xd7\xd6\x80\x42\x0b\x9a\x88\xab\x4f\xf4\x56\x52\x41\xf4\x5e\x29\x91\x93\xca\x53\xb5\xc8\x60\x90\x52\x09\xca\x66\xe1\x52\xfc\xeb\xa0\xd3\xd4\x0c\xed\xaf\x31\x33\xf3\x41\xeb\xc4\x46\x6c\xe0\x5e\x89\x30\x43\x13\x82\xf4\x89\xa7\x31\x11\x24\x46\x58\x22\x8c\x64\x3e\x91\x44\xa1\x27\xaa\xe6\x94\xe9\x7f\x1b\xf2\x8d\xdc\x9a\xed\xcf\xda\xc0\x9f\xcb\x57\xe6\x5e\x12\xa1\x07\xfe\x48\x63\x12\xa3\x47\x9c\xe4\x04\x4d\xb9\x28\x2d\xcf\xd1\x88\xdd\xcd\xf5\x3a\xa4\x13\xca\xe0\xe4\xe9\xb5\x74\x14\xf2\x07\xb7\x5c\x7f\x40\xba\x3f\x94\x33\xfa\xf7\x9c\x24\x0b\x44\x63\xc2\x94\x3e\xd7\xb2\xda\xda\x1f\x38\xf4\x8f\x13\x74\x88\xf4\x3a\x13\xa1\x60\xbd\x39\x53\xe4\xb3\x92\xe8\x10\x25\xf4\x81\xa0\xf7\x17\x54\x2a\x34\xb8\x3e\x7f\x7f\x80\xde\x5f\x14\x8c\x43\xbe\x7f\x81\x15\xf6\x7f\xff\x35\x38\x7a\x0a\xcf\xaa\x87\xee\xdd\x40\x9f\xe6\x5b\x73\x01\x15\x2d\xfc\xf5\xdf\xc2\x76\xec\x7e\x2d\xe7\xea\x05\x4b\xb7\xfc\xbc\x2b\x17\x87\x65\x2a\x33\x70\xa9\x77\x68\x5b\xfe\x5d\xbb\x1d\x1a\x98\xb7\xdc\x92\x7b\xeb\xb1\x57\xd9\xb7\x7c\x5b\xfc\x5b\x4f\xe1\xb9\x79\xf8\x36\x0c\x1c\x2b\x38\x59\x98\x32\x73\x10\xfd\xb9\x14\x52\x9f\x45\x77\x42\xf6\x84\x6d\x6d\xc3\xcf\x83\x99\x05\x2c\xdd\x71\xea\x60\x55\xf6\x70\xde\x09\x4d\xe9\xaa\xfd\x3d\x67\xb1\x16\x1e\x2d\x43\x65\x79\x3a\x21\x42\x2f\x83\x63\xad\x30\xdb\x89\x66\xb5\x2a\x17\x8c\xc4\x1d\xa6\xf9\xf7\x9c\x88\xc5\x92\x79\x4e\x71\x22\xdb\x26\x4a\x99\x22\x5a\x52\xaf\x3c\x9e\x72\x91\x62\x65\x5f\xf8\xd3\xbf\xaf\xbb\x10\x8a\x3f\x90\x55\xfb\x7f\x6e\x76\x33\xc2\x12\xc8\x20\xcd\x13\x45\xb3\x84\xa0\x0c\xcf\x88\xb4\x2b\x92\x27\x4a\x1e\xc0\x6b\x5a\x3b\x20\xe2\xd0\xdf\x72\xd0\x83\xbb\xdd\x73\x09\xbf\xa0\xa9\x67\x76\x8c\x7c\x56\xd0\xd2\x88\xc1\xfd\x0e\x4b\x14\xde\x5a\xcf\xb0\x94\x9b\xd1\x8c\xe4\x42\x8d\x27\x8b\xa3\x07\x52\xeb\xb7\x95\x72\x30\x43\x58\x29\x41\x27\xb9\x22\x7a\xde\xba\x0d\x77\x3f\x03\x7b\x34\x42\x40\x17\xd6\xf0\x7a\x13\x8e\xa9\x20\x11\xcc\x6d\x9d\x03\xe3\xbf\xd2\xf3\xd6\x9a\xd8\xc2\xcc\xfe\x81\x2c\x40\xe6\x69\x58\x01\xbf\xe5\x23\x36\x62\xe8\x10\x9d\x0d\x6f\x4f\x87\x97\x67\xe7\x97\x1f\x4f\xd0\xf7\x0b\x14\x93\x29\xce\x13\x75\x80\xa6\x94\x24\xb1\x44\x58\x10\x68\x92\xc4\x5a\xae\xd1\x83\x21\x2c\xa6\x6c\x86\xb8\x88\x89\x78\xbe\x65\xac\x3c\x25\x2c\x4f\x2b\xf7\x0a\xfc\x5e\x8c\xbe\xf2\x85\x16\x63\xfc\xa3\xd2\x93\xbf\xd6\x16\x18\x66\xac\xfb\x0e\x5a\x7b\x31\xc1\x29\x9a\xd3\x24\x16\x84\x1d\x2b\x2c\x1f\xc6\xe4\x33\x89\x72\x73\x27\xff\xb3\xfc\xc3\x58\x4b\xbf\x3c\x26\xe5\x5f\x4a\xff\x28\xc4\xad\xb5\x3f\xf5\xfa\xf6\xda\x5f\x82\x76\xde\xed\x3b\xf8\x85\xc6\x8d\x6f\xc3\x2f\x2b\xe6\xe0\xde\x59\x32\x58\xf7\x4a\xeb\xa8\xdc\x0b\x56\xd8\x6b\x7c\x47\x10\x25\x16\x63\xac\x14\x49\x33\xb5\xa6\xe5\x01\xa3\x44\xcb\xae\xcb\x64\xd5\x4b\x1e\x93\xa1\xeb\xef\x57\x2b\x82\x1a\x61\xd3\x70\xad\x29\x11\x84\x45\xa4\xbd\x85\x3b\x2c\x1f\x8a\x16\x56\x0b\xbc\x40\x63\x48\x2f\x3f\x2a\x08\xac\xd6\x71\x21\xf6\xea\x25\x29\xde\x5c\x25\xec\x96\xe6\x23\x3f\x70\xa1\x87\xf7\x16\x04\xde\xd2\xc0\x5f\x42\xe6\xdd\xf4\x44\x7f\x71\x56\x8e\x0d\xf9\x53\x6f\x13\xd9\x7e\x25\xbb\x5a\x50\xb8\x40\x72\x21\x15\x49\x57\xda\x52\xde\xce\x42\xd8\x0b\x68\x5f\x07\x5c\xb9\x03\x7f\x03\xa7\xbe\x7c\xa3\xf7\xc7\x7b\x8d\x25\xdb\x95\x25\x74\xdf\xe7\xe9\xbc\x5d\xcb\xa7\x7a\xeb\xb6\x2f\x70\xf7\xbc\x89\x69\x96\x64\xcd\x5d\x0f\xf2\x99\xcc\x19\xad\x7b\xe5\x56\x7b\x0c\x03\x58\xa1\xc8\x96\x6d\xe9\xfe\xfc\xe9\x4f\x43\x0b\x90\x31\xf7\xa9\x39\x95\x81\x31\x0c\x45\x5c\x18\x59\x30\xb6\xe7\xdd\xe8\xb2\x83\xbb\xc1\xed\xf0\xee\x04\x0d\x50\x8c\x15\xd6\x07\x5c\x90\x4c\x10\x49\x98\x02\x3b\x81\xfe\x5e\x2d\x50\xca\x63\x92\x18\x8d\xf6\x83\x96\xac\xd1\x19\x56\xf8\x14\x2b\x9c\xf0\xd9\x11\x1a\xc0\x3f\xf5\xc7\x54\x22\x9c\x48\x8e\xb0\x23\x2b\x12\xbb\x26\x30\x8b\x1d\x6b\xc1\x28\xe2\x69\x46\x13\xef\x47\xf0\xc6\x1b\xca\x62\xfa\x48\xe3\x1c\x27\x88\x4f\x34\x57\xd1\x1a\xf8\xf0\x91\x30\x95\xe3\x24\x59\x20\x9c\x24\xc8\x76\xeb\x5e\x40\x72\xce\xf3\x24\xd6\xed\xba\x51\x4a\x9a\xd2\x04\x0b\xad\xe2\x9b\xd1\x5e\xd9\xb6\xd0\xdd\x9c\xf8\xb1\xc2\xb8\xf4\x6a\xa6\xf8\x81\x48\x44\x15\xca\xb8\x94\x74\x92\x14\x67\xfe\xfe\x1c\xc1\xb8\x4f\x2f\xce\xc1\x5e\x10\x29\xc4\x0d\x0f\x75\x9d\x5b\xfb\x90\xeb\x31\xc5\x8c\x11\xe8\x98\xab\x39\x11\xb6\x7b\xfb\xf2\x6b\xab\xfe\xf7\x97\xb7\xd7\xc3\xd3\xf3\x0f\xe7\xc3\xb3\xba\xee\x7f\x37\xb8\xfd\xb1\xfe\xeb\xcf\x57\x37\x3f\x7e\xb8\xb8\xfa\xb9\xfe\xe4\x62\x70\x7f\x79\xfa\xc3\xf8\xfa\x62\x70\x59\x7f\x68\xc9\xaa\xb3\x19\x21\x1c\xd9\x9a\x67\xab\xb7\x99\x3e\x97\xcd\xf4\xe0\xcb\x35\x9a\x5a\xa7\x54\x77\x83\xa9\xb7\x51\xd8\x2f\x51\x86\xa5\x34\x92\x91\x19\xc1\xd1\x88\x7d\xe2\x42\x33\xb0\x29\xd7\x3c\x42\x4b\x4f\x4a\xe4\x91\xa2\x6c\xe6\x3f\x3a\x41\xa3\xfc\x9b\x6f\xfe\x18\x5d\x50\xf6\x00\x7f\x91\x7d\x5c\x9c\xde\xa2\xdc\x5b\x94\x7f\x5b\x16\x65\x2d\xfa\x1c\x87\x86\xe4\xdd\x06\x57\x69\xe1\x02\x7c\xe2\x5a\x94\xe0\xb9\xd2\x7f\xea\x2e\x81\x3c\x96\x84\x58\x75\x33\x58\xfa\x08\xab\x96\x3e\x04\x4f\x41\x90\xfb\x4c\x25\x30\xa3\x27\x2e\x1e\xa6\x09\x7f\xea\x66\xae\xfc\x48\x94\x1f\x86\x16\x9c\xde\x82\x95\xf2\x67\x3b\x43\x3f\xf0\x8f\x44\xe9\xb1\xdf\xd8\x5e\xfa\x60\xab\x3e\xd8\xea\x75\x83\xad\xf6\xca\x54\xf8\xfc\xac\xb5\x6c\x57\x34\xfc\xb5\xc5\x0f\xd7\xea\x66\x6b\xf1\xa2\x05\x4e\xb2\x17\xe1\xc9\x65\x57\xd4\x2e\xf9\x72\xd9\xd9\xb4\x82\x27\x97\x86\xf1\x56\xf8\x72\x69\xd0\x2f\xcf\x93\x7f\x13\x7e\xa2\xde\x0d\xb4\xe1\x42\xbd\x49\xd6\xdd\xf1\x56\x7a\x31\x27\xce\xf3\x5f\x25\xb5\x98\x8f\x75\x82\x3c\xd6\x88\xea\xe8\x1c\xc6\xb1\x22\x6e\xa3\x31\x50\xa3\x29\x32\xa3\x1e\x8a\xd1\x18\x7b\xb1\x5d\xb0\xc5\xa6\xb7\x5e\xf7\xf0\x89\x75\x6f\xbd\xee\x81\x13\x1f\x89\x2a\x0d\xe3\xad\xdc\x7a\xa5\x41\xbf\xfc\xad\xf7\x1b\x8d\x97\xe8\x03\x24\x9e\x71\xe9\xbe\xf4\xbb\x72\x7f\x43\x20\x7e\x03\x31\x0f\x7d\x90\xc3\x5a\x6b\xf4\x65\x45\x35\x7c\xa9\x61\x0c\x6f\x33\x6e\xa1\x0f\x54\xe8\x03\x15\x5e\xc3\xa3\xf4\xf6\x02\x15\x9e\x55\xf1\x25\x9a\xac\x24\x58\x51\x43\xe5\xe6\x5d\xc6\x65\xbb\xbe\x17\x3a\xaf\x1b\xf4\x3a\x68\xb3\x6c\xcd\x04\xea\xfd\x15\xcd\xb1\x44\x3c\x8a\x72\x51\x71\xd1\x56\x4f\xf9\xa9\x20\x58\xe9\x23\x52\x36\x5c\x22\x68\x19\x09\x12\x71\x01\x4e\x4a\x8c\xb2\x39\x96\x04\x29\x81\x99\xa4\xab\xb4\x3c\xd3\x2a\x8c\x4b\xb7\xf3\x16\x14\xbc\xfa\x22\xbe\x94\x7a\x37\xe1\x71\xed\x40\x9a\xb3\xda\xf4\x64\xf9\x4d\xb2\xb3\xa9\x43\xda\x6f\x97\x99\x3f\xe3\x51\xd1\xb7\xd6\x8e\x8f\x4a\x49\x8d\xdf\xf4\xa8\x94\xad\x1d\x3b\x39\x2a\x30\xae\xb7\x72\x54\xea\x8b\xf8\x9b\x39\x2a\x4d\x53\xdf\x87\xa3\xe2\xc2\x01\x76\x7c\x5c\x6a\x3e\xf8\x4d\x8f\x4c\x3d\x5c\x61\x27\xc7\xc6\x8f\xef\xad\x1c\x9d\xe6\x05\xfd\xcd\x1c\x9f\xb6\xe9\xbf\xee\x11\xf2\x7e\x88\xce\x87\xe7\x4e\xd0\xd9\x8c\x08\xa3\x19\x45\x9a\x14\x57\x43\x2d\x15\x96\xf7\xcd\x0e\xcc\xea\xd3\xe0\x7b\x78\x0b\x27\xc1\x0f\xd6\x8c\xfd\x37\x73\x04\x6a\xf3\xde\x13\xda\x3f\xd6\x9c\xf8\x11\xd0\xda\xba\x9d\x81\x1b\x02\x84\x0f\x17\x48\x26\xc8\x23\xe5\xb9\x4c\x16\x87\x22\x67\x4d\xdc\x1e\x8c\x04\x4f\x34\x49\x10\x67\xc9\x02\x49\x85\x85\x72\x8f\xd9\xcc\x78\x94\xf4\x61\x4a\xb0\x54\xe8\x81\xf1\x27\x86\xa6\x98\x26\xb9\x20\x28\xe3\x94\xa9\xa3\x11\x3b\x67\xe8\xc6\x8c\x11\x34\xef\x03\x94\x4b\x7d\x04\x23\xcc\x18\x57\x28\x9a\x63\x36\x23\x08\x33\x07\x5d\x53\x50\x06\xe2\x02\xe5\x59\xac\x0f\x96\xee\xa2\x62\x63\x2a\x0e\xd8\x88\xdd\x81\x15\x43\x22\xf2\x59\x09\x92\x92\x64\xa1\xfb\xd0\xb4\xaf\x38\xb2\xeb\x63\x86\x6a\x0d\xe2\x44\x08\x2e\x24\xe8\xec\x93\xc5\x3f\x30\x53\x94\x11\x04\x6a\xa6\x34\xc0\x47\x87\xe8\x82\x4b\x88\xc9\xfe\xf1\xcf\x12\x45\x49\x2e\x15\x11\x07\x68\x92\xcf\x24\xa2\x0c\x65\x09\x56\x53\x2e\x52\x3d\x42\xca\xa4\xc2\x13\x9a\x50\xb5\x38\x40\x29\x8e\xe6\xa6\x2d\x58\x03\x79\x30\x62\x31\x7f\x62\x52\x09\x82\x7d\xef\xee\x21\xfa\x2a\x7c\x66\x08\x40\x7e\x7d\x00\x86\x7b\x9a\x66\xc9\x22\x1c\x7e\x90\x08\x0d\x7b\xa2\x1b\x21\x31\x9a\x90\x08\xe7\xd2\x1a\x76\x94\x58\x20\xf2\x79\x8e\x73\x09\x7b\xa7\xa7\x67\xad\x1e\x11\x4f\xb3\x84\x28\x82\xe8\x14\x29\x41\x49\x8c\xf0\x0c\x53\xbd\x74\xb7\x64\x49\xe2\xb6\x27\x7a\xbb\x81\x96\xea\x7f\x05\xcb\x47\xca\x05\x41\x31\x51\x98\x26\x72\xb9\x53\xf2\x45\x09\x0e\x3d\x3b\xbd\xa1\xfd\x25\x37\xb4\xd7\xd4\xb6\xe4\x26\xb4\x3b\xd6\x5f\x85\x6f\xe9\x2a\x2c\x73\x85\xbd\xb8\x0b\x0d\x48\xc4\x0e\x04\x42\x66\xad\xe2\x11\x4e\xb6\x94\x0d\x6f\xec\xa0\xd6\x96\x0e\xdd\x87\xfd\xa1\x78\x5b\x87\xc2\xec\xda\xfe\x9c\x8a\xb6\x84\x8a\x9d\x23\xc5\xac\x83\xf1\xb2\x24\x23\x42\xa2\x14\x2b\x7d\xb1\xcd\xec\x15\xdd\x11\xc5\xb0\x00\x75\x79\x53\x07\xe5\x25\x90\x5c\xbe\xec\x88\x85\x3e\x52\xe1\x37\x88\x40\xbb\x37\x09\x8c\x7d\x0e\xf4\x33\xe5\x40\x53\xd9\xe7\x40\xf7\x39\xd0\x5d\x17\xa8\xcf\x81\xee\x73\xa0\xdf\x6c\x0e\xf4\xb3\xa6\x3f\xef\x2e\xc9\x79\x37\x99\xcc\x6f\x4a\x3a\xef\x25\xf3\x5e\x32\xef\xd3\x95\xfd\xd4\x76\xc5\x05\xdd\xd7\xef\x62\x92\x10\x45\xda\x0d\x74\x44\xa4\x5a\xe1\x30\x37\x3c\x65\x5a\x14\x9c\x09\x22\xe5\xb6\x3c\xcd\x37\x1c\x96\x57\x68\xf0\x47\x14\x28\xb3\x9e\x2c\xc1\xae\xb3\x8c\xd9\xf9\xb6\xdf\x26\xcb\xf3\xc3\xef\x21\x1b\x7a\x1e\xd8\xf3\xc0\x4d\xa6\xb6\x3f\xe6\xe8\xe0\x30\xbf\x94\x3d\xda\xf3\xf6\x2c\x6f\x17\x4e\xef\x8d\xa3\xb5\x60\xb4\x86\xc2\x21\x2b\x95\xfb\xc3\x6d\xe9\x7c\x4b\x5e\xbf\x4e\x5f\xcb\xf8\xba\x69\xe7\x6d\x32\x75\x33\xf6\x9e\xa3\xf7\x1c\xbd\xe7\xe8\x6f\x9b\xa3\xbb\x93\xfc\xaa\xee\xc5\xa0\x70\xda\x98\xc6\xdb\xd4\x4e\xeb\x5e\x87\x02\xa7\x24\x1e\x42\x96\x98\xcf\x71\x13\xbf\xea\x4f\xc2\xaa\x68\x2e\x1f\xac\xbb\x03\x32\xfc\xba\x58\xf5\x52\x29\xab\xcd\xfc\x91\x45\x81\xb2\xf3\xf8\x4d\xb8\x24\x1b\x57\xf8\x0b\x29\xae\xb6\x1f\x5c\xe4\xc5\x6b\xab\xed\xc7\xb4\x7b\x17\x59\x5f\x5a\xad\x77\x02\x75\x9c\x70\xef\x04\xda\x5f\x27\x50\x87\x6d\x7c\x16\xcf\xee\x0b\x1f\xcf\x97\x12\x1d\xbb\x67\xee\xb8\x04\x1b\x16\xa3\x3c\x4b\x38\x8e\x3b\x56\x47\x0f\x24\xba\x0e\xe9\x3b\x2c\x46\x82\xcc\xa8\x54\x44\xe8\x7d\x69\x14\x0c\x57\xe7\xf3\xbc\xd5\x32\xe8\x9d\x23\x36\xc3\x6e\xdf\xfd\x7b\x87\xe1\xdf\xd8\x3b\x1b\x38\xd1\x04\xc7\xbe\x3e\x31\x88\x6f\x29\x5e\xa0\x39\x7e\x24\x2e\xca\xfc\x11\x27\x34\xc6\xd5\xb5\xae\xcc\x70\xd9\x80\xfe\x73\xbd\x01\xe1\xf2\x70\x7c\x41\x3b\x59\x8e\x02\xb6\x00\x15\xf0\xce\x5c\x6b\xe5\x89\x20\x38\x5e\xa0\x09\x21\xcc\x93\x4d\xc3\x7d\xd2\x32\xe6\x9d\x08\xce\xaf\xae\x95\xd6\xa9\x67\x5f\xd4\xd2\x17\x8c\x7b\x6d\xe6\x37\xdb\xeb\xa0\xdb\x2b\x9e\xf2\xbb\xb7\xc5\x82\xfa\x58\xd8\xde\x36\xf9\xfa\xb6\xc9\x3e\x16\xb6\x57\xf4\xf7\x4c\xd1\xef\x63\x61\xfb\x58\xd8\xde\x0c\xb2\x7c\xda\xbd\x19\xe4\x8b\x88\x85\xed\x24\xc3\x6f\x18\x0d\xfb\xc6\xa5\xf9\x5e\x98\x77\xef\xf5\xc2\x7c\x2f\xcc\x7f\xa1\xc2\xfc\x7e\xac\x70\x2f\xc9\xf7\x92\x7c\x2f\xc9\xf7\x92\x7c\x2f\xc9\xef\x7c\x19\x7b\x49\xbe\x59\x92\x87\xbf\x5c\xb1\x9d\x75\xc5\xfa\x35\xc5\xf9\xb5\xd3\xdd\xd6\x77\x06\x7e\x24\xea\xad\x7a\x02\x7b\xa9\xbd\x97\xda\xf7\x5b\x6a\xdf\x9b\x09\x7d\x79\x85\x32\xfa\x52\x13\x7d\xa9\x89\xbe\xd4\xc4\x33\x97\x9a\x70\x5f\x77\xc8\x91\xb2\x87\x4b\x61\x95\x4b\x83\x55\x5c\x04\x9b\x74\x12\x7b\x3a\xa4\x46\x55\x7a\x58\x2d\xf7\xa0\x81\x42\x29\xd7\xba\x1b\x23\xa5\x77\x1c\x83\x33\x81\x35\x33\xfa\x48\x18\x72\xc9\x01\x07\xf6\x1a\x3b\x00\x63\xca\xbf\xfc\xe1\x33\xc9\xb7\x58\x21\x8c\x14\x4d\xc9\x11\x3a\x9f\x1a\x6e\x11\xe9\xd3\x25\x89\x92\x95\x68\x2c\x43\xf9\xf0\x11\x8b\x8b\xb1\xba\xbe\x69\x11\x9c\x63\x5e\x3b\x70\xcc\x36\x4f\x94\x61\xbd\xae\x71\x40\x1a\x9d\x78\x0e\x05\x07\x2d\x25\x22\x71\x5f\x96\xba\x75\x2f\xa7\x38\xd6\x8c\x21\x18\x42\x91\x25\x1c\xbe\x0f\x77\x3a\x95\x3e\xbc\xa8\xf4\xbd\xf9\x1a\xe0\x4a\x01\x5e\x14\x60\xd5\x3b\x0d\x63\x0e\xd1\x6f\x5a\xc4\x8b\xf3\x84\x20\x2c\x25\x8f\x28\x06\x35\xc6\xc8\x00\x88\x2a\x67\x69\x70\x2f\xb9\xae\x63\x2a\xf1\x24\x21\xb1\x5d\x63\x52\x44\x3b\x2d\x1d\x39\x95\x68\x42\xf4\x12\x6b\x36\x55\x5e\xfd\xb9\x91\x40\x1a\x46\x13\x0c\x85\xd4\x47\x42\x98\x19\xc8\x12\x09\xda\x10\xe7\x5b\x15\xa2\xfb\x8c\x3b\xff\xb4\x17\xa9\x7b\x91\xfa\x37\x2a\x52\xef\x51\x84\xe6\x5e\x24\x0e\x82\x0f\x54\x73\xfe\xb1\x37\x6c\xca\xae\xb6\x9e\x0b\x2a\x95\x44\x51\x2e\x15\x4f\xdb\x25\x9f\x4f\xae\x87\x81\xef\xe0\x94\xb3\x29\x9d\xe5\xe6\x6e\xf9\xd5\xca\x26\xfe\x44\x17\x6a\xca\x22\x23\xdd\x0c\x43\xde\x6e\xbd\xaa\xb3\xc6\x7c\xc4\x06\x27\x6f\x43\x3b\x6f\xe2\xb6\x6b\x1e\xfa\x4b\x5d\x7a\xeb\x28\xab\x85\x7d\xdc\x6a\x9a\x5a\xbf\x18\xdf\x0c\x6f\xaf\xee\x6f\x4e\x87\x27\x68\x90\x65\x09\x35\x2e\x2b\x43\x61\xf4\x1f\x7a\x52\xa6\x6a\x94\x27\x11\x2b\x10\x19\x30\x77\xf0\x91\x69\x7d\x10\x1d\xa2\xd3\x8b\xfb\xdb\xbb\xe1\x4d\x4b\x83\x96\x24\x00\x71\x80\xa4\x59\x02\xf2\xd1\x43\x3e\x21\x82\x11\x2d\xe1\x5b\xc8\xf7\xc2\x73\x66\x1a\x1d\xfe\xf7\xf0\xf4\xfe\xee\xfc\xea\x72\xfc\x97\xfb\xe1\xfd\xf0\x04\x39\xda\xd2\xcd\xea\x71\xe9\x51\xc4\x0b\x86\x53\xad\x75\x97\xcb\x5b\xfd\x3d\x27\x39\x88\x63\x74\xc6\x52\x02\x95\x18\x4a\x2d\xba\x01\x5f\x0c\xbe\x1f\x5e\x94\x5b\x9e\x93\x10\x87\x1e\x25\x78\x42\x12\xeb\xca\x03\xef\x94\x3e\x3f\x01\x62\xbf\xf1\xf1\xe5\x66\x55\xff\x72\x3f\xb8\x38\xbf\xfb\x65\x7c\xf5\x61\x7c\x3b\xbc\xf9\xe9\xfc\x74\x38\xb6\x9a\xd4\xe9\x40\xf7\x5b\xea\xc9\x2a\x5c\xe8\xef\x39\x4e\xb4\x46\xce\xa7\x0e\x99\x1e\x3d\xcd\x09\x43\x39\x03\x8a\x33\x6a\x3e\x68\x25\x21\x2c\x8f\x99\xd1\xf5\xc5\xfd\xc7\xf3\xcb\xf1\xd5\x4f\xc3\x9b\x9b\xf3\xb3\xe1\x09\xba\x25\x09\x28\xc2\x6e\xd1\x61\x17\xb3\x24\x9f\x51\x86\x68\x9a\x25\x44\xaf\x06\xb6\x38\x10\x73\xfc\x48\xb9\x28\x69\x2b\xb0\x8e\xc0\x0a\xa0\x7d\xa7\x70\x8e\x83\xa5\xbb\xba\xfc\x70\xfe\xf1\x04\x0d\xe2\xd8\xcf\x41\x42\x1b\x25\xca\x71\x68\x42\x87\x35\x34\xa1\x08\x9b\x80\x10\x28\xd0\xfe\x48\x84\xa0\x31\xa9\xd0\xd1\xe0\xf6\xf6\xfc\xe3\xe5\xa7\xe1\xe5\x1d\xac\x98\x12\x3c\x91\x68\xce\x9f\xc0\x0b\x04\x33\x04\xe7\xd0\x23\xa6\x09\x74\xe6\x36\x8b\x33\xf4\x34\xa7\xe0\x39\x84\x0a\x05\xbe\x67\x63\x93\x10\x79\x3d\xa9\xe2\xa5\xb5\xfe\xd2\xc1\xab\xab\xea\xd5\x93\x54\x7f\xa3\x72\x2c\x96\xbd\x50\xa2\xf2\xfa\x8b\xab\xa8\xb5\xfe\x45\x85\xdc\xda\x0d\x14\x35\x7a\x69\x9f\x69\xb1\xd7\x9d\xed\x13\xe5\x35\x7c\xb1\xdb\x5b\x33\xde\x78\xec\xec\x54\xc7\xff\x2c\x31\xe0\x7f\xed\x30\x5a\xcb\x24\xe8\x2c\xc5\x2e\x0c\xb2\xd5\x7f\xb5\xd7\x6c\xc7\xcb\x3b\xf8\xb2\xe9\xc3\xba\x1f\x27\xf8\xe0\x2d\xdc\xca\xe1\x70\xf7\xe8\x06\xbe\x09\xe5\x2c\x27\xae\xa7\x44\xe1\x18\x2b\xac\xf9\xda\x8c\xa8\x23\x74\xc5\xe0\xd9\x1d\x96\x0f\x07\xc8\x15\x1e\x43\x5c\xa0\x42\x90\x7d\x81\x04\xf7\x37\x62\xc0\x5c\x5f\xb9\xea\x8d\x04\xbd\x91\xa0\x79\x65\xfa\x68\xb9\x96\x15\xde\xd5\x8d\xba\x96\xcd\x7f\x77\x17\x5f\x60\xe2\x77\x81\x2f\x15\x1b\x6d\xe9\x46\x5c\x69\x8f\x7d\xbb\x97\xe1\xcb\x5a\x64\x77\x7a\x35\x9a\xba\x64\xfd\xbd\x67\xfe\xaf\xbf\xf7\xfa\x7b\xaf\xbf\xf7\xf6\x60\x85\x5f\xdd\xba\xdd\xc0\xdd\x5f\xd5\xbc\xbd\x4a\x41\xde\x18\x26\xaf\x50\x88\xd7\x01\xca\xfb\xb5\x0b\x1e\x5e\x83\x59\xbb\xae\x21\x4b\x24\xe7\x58\x98\x82\xdf\x11\x4f\x53\xce\xca\x76\xf3\x03\xe4\x9d\xfc\x60\x94\x5c\x09\xa6\xaa\x29\xbb\xe8\x86\xbe\x0d\x7b\x77\xb0\x2e\x2f\x91\xdd\xb4\x53\x11\xc2\xa4\x0d\xf4\xfa\xf5\x33\xca\x19\x3d\x8e\xe1\x4e\x71\x0c\xf7\x63\xae\xcf\x92\x09\xb5\x7b\x1b\xfc\xdb\xc8\x7e\xea\x01\x0b\xfb\xfc\x9e\x3e\xbf\x07\x7e\xef\x01\x0b\x77\x47\xad\xcf\x2b\xd3\xf3\x98\x8c\x2b\x15\xba\xfc\x3f\xc7\x55\x97\x57\xe9\x49\xe8\xff\x2a\x3d\x28\x12\x9e\xa0\x75\x1a\xef\xb2\xaa\xd7\x25\x8f\xc9\x16\x95\xbd\xf4\x88\x3a\x57\xf5\x2a\xf5\xb5\xe7\x22\xbc\x5b\x26\x23\xca\x97\x06\xfe\xcc\x82\x7c\x0b\xc5\x7c\x89\xd6\xa8\x06\xfa\xef\x4d\x53\x2b\x17\xea\x4b\x2d\x9b\x50\x30\xb8\x37\xe4\xa8\xe9\x76\x0b\xb8\xf0\x9e\x71\xcb\x5d\xd0\xfc\xdc\xdf\x08\xcd\x8f\x9f\x07\xd2\xa6\xfb\x85\x50\x41\xb2\x29\x5f\x05\x9b\x22\xd8\x94\xba\x7f\x1b\x76\x9e\x70\xc4\x2f\x61\xe9\x59\x4a\x4c\x5f\xdc\x35\xb1\xec\x68\xf4\x97\x45\xc7\xe5\xfa\x52\xaf\x8c\x1e\x79\x66\x99\xed\xa5\x87\x76\xe9\x4d\x3f\xfb\x33\xe1\xde\xf4\xf3\xa6\x4d\x3f\xc6\x51\x3d\xce\xb0\x20\x4c\x35\xc8\xe8\xd5\xeb\x04\x5e\x0f\x73\xf8\x9d\xd4\x01\x0d\x18\x69\xd1\x5e\xc8\xfe\xaa\xfa\xb2\x6c\x41\x56\x30\x08\x92\x97\x8e\xff\x59\xfc\xed\xa5\xff\x52\x5d\x8b\x25\xd1\x5e\x06\x34\x5f\xea\x3b\x3a\xb7\x81\x5f\xdb\xa7\x37\xd9\x14\x62\x27\x0a\x26\xe4\x91\x24\xdd\xe2\xc3\x5c\xfa\x02\x89\x0b\x81\xaa\x98\x5d\x43\xdc\x58\x5d\x40\x6d\x8e\x19\xbb\x36\xef\xbd\xad\xe4\xa6\xda\xa0\x5f\x36\x7e\xac\x4e\x56\xdd\x8e\xa7\xdb\x77\x6a\x12\x75\x82\x6c\x10\x2d\xeb\xf2\x69\xb8\xa3\x2e\x19\x1b\x43\xae\x52\xdb\xfd\xf2\x9b\x8b\x2a\x69\xdd\xf9\x57\x8d\x2d\x69\xe2\x3d\x4d\x0c\xa7\x8b\xf5\x78\x57\x49\x94\x8e\xd8\x5a\x62\x3e\xda\xcc\xcd\xcf\xc4\x6c\x3e\x12\xf5\x65\x70\x9a\x8f\x44\xbd\x14\x9b\xd9\x94\xb7\x2c\xe5\x2b\x45\x0d\x9d\xfd\x8b\x5d\x58\x27\xa8\xe6\x67\x33\x49\x1b\x51\xe3\x73\x97\xc3\xa9\x2a\x6e\xb5\xcc\x92\xa0\xde\xe7\x98\xf6\x39\xa6\x7d\x8e\x69\xf5\xa8\xf7\x39\xa6\x7d\x8e\x69\x63\x46\x4c\x4c\x12\xa2\x48\xab\xd4\x72\x06\x8f\x5f\x4b\x6a\x31\xbd\x3f\x97\xcc\x62\x5a\xff\x32\xc4\x16\x33\x97\x5e\x72\xf9\xcd\xe8\x45\x6e\xc3\xf7\x42\x2f\x32\x27\x79\x95\x69\xa6\xf4\x63\x43\x10\xfe\x8b\x9b\x6b\x36\x61\x49\x3b\xb0\xd9\x1c\x3a\xd7\x58\x91\xd3\xd2\xd5\x8c\x73\x06\x5f\xbe\x49\x5e\x55\x1d\x7a\x6f\xd2\x41\xc1\xd6\x3d\x1f\xeb\xaa\x9d\xb9\x6e\x13\xb7\x34\xfa\x76\xe7\xbd\x2f\x2c\xbb\x8d\xee\xf7\x95\x71\x6f\x9c\x27\xf5\x05\x18\xb8\xd6\xe3\xcc\x85\xcd\xeb\x0b\x62\xcb\xbd\xfd\xeb\x95\x73\x77\x6a\xfc\xf7\xcd\x4e\xb7\x37\xf7\xf5\xe6\xbe\xde\xdc\xd7\x9b\xfb\x7a\x73\x1f\xea\xcd\x7d\x2f\x64\xee\x5b\x4f\x82\x2b\x59\x00\xbf\x20\x21\xae\xb7\x06\xf6\x72\xdc\xee\xa6\xbb\xaf\x9a\xf4\x3e\x99\x40\x3b\x23\x69\x17\x49\x84\x2b\x73\x47\xec\xb4\x7f\x5d\x99\x34\x12\x54\x25\x71\xc3\x59\x95\x18\x72\xed\x86\xfd\x76\x98\x9c\x7c\x6e\x3e\xb6\x4d\xf8\xbb\x5b\xf7\x2f\x36\xfa\xbd\xaf\xbb\xda\xb8\x56\x7d\x70\xfe\x92\xc5\xe9\x83\xf3\xfb\xe0\xfc\xbd\x0b\xce\xdf\xb9\x4a\x95\x71\xb9\x0c\x3c\xcc\x5c\xcd\x4b\x51\x03\xdc\x45\x6f\x74\x19\x4d\x0a\xa6\x56\x5c\x4c\xb2\x84\x2f\xc0\xde\xb3\xd4\xf2\x6d\xba\x28\x94\xa0\x65\x97\xbf\x7b\xfb\xba\x1e\x1e\xb1\xe7\xf7\xbf\x1b\xf9\x4b\xa9\x35\xfb\x22\xf6\x16\xf3\xde\x0b\x41\xf7\xf8\x9f\x15\xc8\x8c\x4e\x98\xba\x01\xc8\xc5\xea\x63\x30\x62\xcd\x4f\x82\xf2\x8e\xf6\xd6\x9c\xe4\x2a\xc8\x47\x95\xfa\x00\x64\x44\xa8\x45\xf0\x26\x49\x33\xb5\xf8\xaf\x11\xa3\x45\x15\x38\x3a\x63\x5c\x18\x1e\xa8\x3f\x9e\x63\x16\x27\xfa\xfc\x48\xdf\x4e\x84\x19\xe3\x0a\x84\x13\x98\x41\x8c\x1e\x29\x36\xa2\xcc\xe0\xfa\xbc\x43\x7c\x40\xa7\xb3\x58\x72\xed\xbf\xa1\x93\xf8\xd2\xf5\xd5\x56\xdc\xa2\x1f\x13\x3e\x81\x8a\xa0\x79\xd9\xc4\xa0\x1b\xe8\x9d\xd1\xa5\x9d\x7b\x2d\xe6\xa1\xb0\x7c\xa8\x02\xf9\x94\x61\x1d\xc6\x4b\xa1\x7d\x56\xbc\x5b\x2a\x76\xb1\xfc\xd5\x0a\xfc\x4f\xf9\x99\x05\x04\x82\xc7\x30\xe4\xea\x38\xdc\x8f\x61\x87\xee\xb7\xa2\x65\xf7\x8b\xab\xa8\x0e\x3f\x0a\xa2\xc4\x62\x8c\x95\xd2\x0c\x69\x97\x98\x43\x77\x58\x3e\x6c\x81\x39\x54\xf6\x34\xad\xc0\x1c\x2a\xf5\xb5\xe7\x1c\xab\x84\x39\x54\x1e\xf8\xb3\x73\xac\x8e\xc4\xbd\x82\xb1\xbd\x3d\x78\x89\xae\x47\x75\x8d\x89\xff\x56\xa0\x26\xba\xb1\xae\x55\x46\xe7\xb7\x08\x3b\xb1\x8c\x17\xef\xcd\x08\x2b\xd7\xc1\x97\x78\x72\xcb\x97\x5b\x7f\x44\x97\xad\xd1\x17\x57\xfa\xb5\x22\xb3\xac\x98\xdb\x1b\x29\x01\x5b\x15\xbb\x76\x3d\xaa\xe7\xb1\xbf\x07\xbb\xb1\x4e\x08\xd5\x79\xb9\xe4\x81\x3f\x43\x2e\xa8\xaa\x00\x8d\x37\xa5\xce\xa9\x0c\xf1\x24\x22\x2e\x8c\xe4\x15\xdb\x33\x6b\xec\x89\x06\x9b\xfb\x04\x0d\x50\x8c\x15\xd6\x87\x54\x90\x4c\x10\x49\x98\x32\x5a\xbd\x41\xaa\x4f\x79\x4c\x12\xa3\x51\x1b\xd3\xd5\x19\x56\xf8\x14\x2b\x9c\xf0\xd9\x11\x1a\xc0\x3f\xf5\xc7\x50\x1f\x5e\x72\x84\x1d\xe1\x90\xd8\x35\x81\x59\xec\xcb\xd2\xa3\x88\xa7\x19\x4d\x7c\xb9\x07\xef\x5e\xa0\x2c\xa6\x8f\x34\xce\x71\xe2\xe1\xf5\x47\x6c\xf8\x48\x98\xca\x41\x03\xc4\x49\x82\x6c\xb7\x01\x7a\xbe\x33\x05\xb8\x51\x4a\x9a\xd2\x04\x0b\xa4\xb8\x1d\xed\x95\x6d\x0b\xdd\xcd\x89\x1f\xab\x2b\x25\x80\x52\xfc\x40\x24\xa2\x0a\x65\x5c\x4a\x3a\x49\x8a\x63\x7c\x7f\x8e\x60\xdc\xa7\x17\xe7\xb6\x36\x3b\xe2\x86\x0f\xba\xce\xad\x03\xc3\xf5\x98\x62\xc6\x08\x74\xcc\xd5\x9c\x08\xdb\xbd\x7d\xf9\xb5\xcd\xaf\xaf\x0d\xf9\xde\x6e\xca\x0d\x47\xf6\x7a\x3a\x6b\x67\x85\xb5\xab\xb6\xda\x4d\x55\x6d\xd7\x53\x9f\xc1\xe7\xdc\x5d\x99\xac\xe0\x15\x96\xd5\xc8\x4d\xf1\x0a\x4b\xdd\xbf\x09\xe7\x74\x69\xc4\x2f\x81\x57\xf8\x1b\xd5\x2c\x7b\xb5\xf2\x59\xd6\xed\x4b\xd5\x29\xf7\x5c\xa1\xec\x91\x16\xfb\x2a\x17\x7d\xa8\xc9\x0e\x17\xa7\x0f\x35\xe9\x43\x4d\xbe\xd8\x50\x93\x76\xf5\x84\xc6\x5b\x67\x6c\xae\x59\xd7\xce\x5b\x19\xc4\xaf\x20\x4a\x69\xb1\xbf\x43\xa5\xbb\x26\x6d\xa1\x90\xa5\x4b\x95\xa9\x36\xd7\x1c\xce\xe3\x37\xa1\x32\x34\xae\xe6\x4b\xa8\x0e\x7d\x91\xb4\x9d\x16\x49\xdb\xbb\x69\xf7\x52\x65\x2f\x55\xf6\x82\x53\xc7\x09\xf7\x82\xd3\xfe\x0a\x4e\xaf\xa5\x0d\x7d\x49\x78\xd9\x5a\xc4\x2a\x65\x25\x2d\x8d\x53\x36\xf8\x4a\xe0\xcc\xc8\xb3\x84\xe3\x78\x55\xc4\xd1\xaf\x81\xf8\xb6\x44\xee\x0b\xda\x15\x45\x9c\x72\x45\xfc\x5b\x26\xdb\x99\x06\x74\x8f\x6f\x41\xb4\xd3\xe3\x34\x23\xee\x10\x1d\x19\x76\xf8\xee\xdf\x3b\x0c\xfc\xc6\xde\xc9\xc0\x69\x26\x38\x76\x00\x06\x46\x3c\x4b\xf1\x02\xcd\xf1\x23\x41\x53\x4c\x13\x63\x9f\xa3\x31\xae\xae\x6f\x65\x6e\xcb\x06\xf4\x9f\xeb\x0d\x08\x97\x87\x53\x64\x34\xea\xfb\xc2\x48\x55\x11\x4e\x9c\xbb\x0f\xde\x99\x63\x89\x70\x22\x08\x8e\x17\x68\x42\x08\x0b\x32\xd9\xba\x8e\x79\x27\x82\xf1\xab\x87\x67\x86\x74\xf3\xaa\x51\xde\xc0\x35\x20\x5e\xb1\x14\xf7\xf8\x5c\x8a\x65\x95\x93\x6c\xa1\x43\x6e\xa3\x38\xca\xef\xde\x0a\x73\x79\x09\x35\xf1\x0b\xf6\x22\xf5\x9e\xa2\xe5\x61\x78\x3b\x8a\x6a\x1a\xb1\x3b\xad\x5a\x15\x18\x0c\x41\x8a\x2c\xfa\x83\x5b\xae\x3f\x40\x84\xbe\x8d\xda\x4f\x16\x85\xe6\x2d\xab\xad\x79\xb9\x0c\x1d\x6a\xa1\x38\x22\x42\x19\x90\x07\xa6\xc8\x67\x25\xd1\x21\x4a\xe8\x03\x41\xef\xf5\xe9\x40\x83\xeb\xf3\xf7\x07\xe8\xbd\x29\xaa\x8f\xb2\x04\x33\xf9\x7e\x6f\xb4\x8f\x5e\x45\xef\x93\x8c\x7b\xcf\x4f\x6f\xc0\xe8\x0d\x18\x3b\x5f\xc6\x7d\x32\x60\xbc\xa2\x8c\x6e\x72\x9b\x9e\xa5\x98\xed\xbe\x48\xeb\xbd\xb0\xde\x0b\xeb\xbd\xb0\xfe\xc5\x0a\xeb\xfb\xb1\xc2\xbd\xa4\xde\x4b\xea\xbd\xa4\xde\x4b\xea\xbd\xa4\xbe\xf3\x65\xec\x25\xf5\x8a\xa4\x0e\x7f\x39\xb4\x80\x75\xc5\xf6\xce\xe2\xfa\x66\xd0\x00\xdd\xdc\x74\x16\x1b\xe0\xad\x48\xe6\xbd\x54\xde\x4b\xe5\xfb\x2d\x95\xef\xcd\x84\xbe\xbc\x84\xe0\x3e\xa5\xb6\x4f\xa9\xed\x53\x6a\x5f\x23\xa5\xd6\xf1\x92\x65\x12\xce\xb2\xba\x3e\x3f\x59\xe6\xf2\x15\x65\x51\x92\x83\xa8\xaa\x7f\xfe\x3e\xa7\x49\x8c\x40\x45\xd2\x9a\x2e\xe5\xec\x6b\xa0\x27\x20\x05\x18\xa7\xab\x44\xb1\x5c\x82\xf9\xa9\xc6\xea\xf6\x56\x88\x29\x46\xbb\x29\x0c\xdb\xae\xf6\xd4\x15\xc6\xd8\xa4\xfa\x5f\xe9\x37\xd7\xd0\x1e\xd5\x04\x3c\x70\x62\x89\xe6\x48\x6e\x7c\xcf\x5c\x1d\xb0\xb1\xcf\xb5\x6a\x05\xfe\x6c\x3f\x7a\x5b\xa5\x0c\xea\xa3\xee\x2b\x04\xa2\x60\xd7\xfa\x0a\x81\xcf\x38\x6f\x77\xce\x56\xcc\xdc\xd1\xa8\xb1\x85\xbf\xd1\x69\xbf\x7a\xb0\x63\xfb\x49\x7f\xd5\xd0\xc7\xc6\x8b\xac\x96\x5b\x77\xfc\xcf\xc6\x7b\xea\x15\x0a\x23\xae\x7d\x39\xed\xa4\x44\xe2\x36\xd7\xd3\x47\xa2\xbe\x94\xbb\xa9\x2f\x93\xd8\x97\xd7\xd9\xd1\x74\x37\xba\x7b\xde\xec\x6c\xfb\xa2\x90\x7d\x51\xc8\xbe\x28\x64\x5f\x14\xb2\x2f\x0a\x89\x7e\xe3\x45\x21\xd7\x96\x5f\x77\x50\x1e\x72\x1b\xe9\xd5\x74\xff\xa5\x08\xb0\x7d\x89\xc8\x5e\x86\xdd\xdd\x74\x7f\x5b\x32\xec\x1e\x5a\x50\xf6\xa2\x16\xa6\xb7\xa0\xbc\x3a\x2c\x91\x67\xed\x9d\xa1\x89\xc2\xb8\x17\xff\xf5\x4e\x11\x8a\xdc\xa6\xf5\x28\x45\xf6\xff\x7a\x94\xa2\x1e\xa5\xa8\x65\xd6\x7d\x60\x75\x8f\x52\x84\xfa\xd0\xe1\x3e\x74\x78\x9f\x43\x87\x3b\x6c\x63\x8f\x52\xd4\x51\x64\x7c\x26\xa4\x22\x27\x73\x6d\x85\x56\xd4\x20\x0e\xae\x46\x2c\xfa\xb9\xae\x11\xed\xad\xa8\xe7\xc6\xda\x23\x17\xf5\xc8\x45\xdb\xd2\xce\x5e\x28\xa0\x2f\x88\x60\xd4\xc4\x61\xd6\xc9\x8b\x6e\x60\x2e\xdb\x2a\x98\x6f\x03\xcd\xc8\x8d\xb6\x4f\x92\xee\xd3\x31\xf6\x3f\x1d\x63\xef\x92\xa4\xf7\x46\x53\xe9\xd5\xf9\x3e\x4f\xba\xcf\x93\xee\x8d\x1d\xbd\xb1\x63\xe7\xcb\xb8\x4f\xc6\x8e\x57\x96\xdb\x9f\x11\xd5\x68\x1f\x25\xf8\x5e\x80\x37\xef\xf5\x02\x7c\x2f\xc0\x7f\xa1\x02\xfc\x7e\xac\x70\x2f\xbd\xf7\xd2\x7b\x2f\xbd\xf7\xd2\x7b\x2f\xbd\xef\x7c\x19\x7b\xe9\xfd\xc5\x90\x8e\x9a\x44\xf8\xb5\xd1\x8e\xd6\x74\xf3\x05\xc9\x6c\x6f\x49\x5a\xef\x25\xf5\x5e\x52\xdf\x6f\x49\x7d\x6f\x26\xd4\x23\x1f\xf5\xc8\x47\x3d\xf2\x51\x8f\x7c\xb4\x91\x8c\xf4\x6f\xf6\x58\xbe\x0b\x6e\x62\x7f\x65\xbf\xfb\x3e\xe1\x93\xbb\x45\x46\xf4\x7f\xcf\x68\x4a\x98\x04\x89\x96\xaa\x45\x28\x13\xb5\xac\x7c\x7d\xcd\xdf\xdd\x9e\x5f\x7e\xbc\x08\x53\xd5\xde\x7d\xba\xbf\xb8\x3b\xbf\x1e\xdc\xf8\x75\xf1\xb3\x0a\xd7\xc2\x7e\x57\x12\xeb\x2c\xc9\xdf\x10\xad\xbf\xc2\xa9\xb9\x55\x58\xe5\x72\xb3\x91\xdd\x0c\x6f\x87\x37\x3f\x41\xaa\xdd\xf8\xec\xfc\x76\xf0\xfd\x45\x89\x20\x4a\xcf\x07\xa7\x7f\xb9\x3f\xbf\x69\x7f\x3e\xfc\xef\xf3\xdb\xbb\xdb\xb6\xa7\x37\xc3\x8b\xe1\xe0\xb6\xfd\xeb\x0f\x83\xf3\x8b\xfb\x9b\xe1\xd2\xf5\x58\x3a\xda\xe5\x8a\x8c\x84\x45\x82\x2c\x16\x14\x59\xae\x21\x8a\x35\x44\x5e\x7c\x74\xec\xb0\xa9\xaf\x13\x74\x6f\xed\x02\xd4\x36\xee\x42\x92\x7c\x43\x46\xa1\x89\xa9\xc4\x93\x84\xc4\xb5\x96\xdc\x1a\xb6\xb5\x84\x4b\x83\x7a\xd2\x1a\xb8\x17\x39\x35\xcf\x8b\x0c\x2f\x40\x90\x00\xac\x08\x8b\x1b\xfa\x30\xfb\xd0\xda\x03\xd3\xbc\x8b\x3e\x92\x52\x4f\x51\x2e\x04\x61\x2a\x59\x18\x81\x5b\xd6\x1a\x75\xdb\xd7\xd6\xac\xbd\x53\x7d\x83\x73\x2c\x4d\xe4\x55\x69\xfc\x82\x24\x04\xcb\x86\x31\xdb\xdd\xef\xb6\x2c\x7e\xaf\xac\x45\xc7\x5c\x46\x53\x4c\x93\x5c\x90\xca\x69\xe1\x69\x86\x05\x95\x9c\x0d\x3f\xeb\xbb\x4c\x1f\xe4\x2b\xf8\x9c\x8b\xcd\x4e\xcc\xf0\x2f\x21\x05\x5f\x96\xff\xf9\xf1\xae\xfc\xaf\xd2\x99\xbf\xb8\x2b\xff\x6b\x39\xad\x07\x0d\x57\x29\xfb\x10\x7d\xbc\x3b\x41\x1f\x21\xa4\x4b\xa0\xbb\x39\x36\x14\x7b\x71\x77\x82\x2e\x88\x94\xf0\x4b\xf1\xb1\xa2\x2a\x81\xb9\x7d\x4f\x19\x16\x0b\xe4\xa6\x6f\xb2\xc8\x31\xf8\x4a\xdc\xd2\x54\x17\x8f\xfd\x2d\x67\xa0\xfe\x17\xab\x77\xc1\x67\x34\xc2\xc9\x76\x8b\x38\xb8\x2c\xf1\x81\xab\x9b\xa5\x4b\x11\xbe\x5d\x5f\x8b\xc1\xe5\x19\x64\x68\xbb\xa1\x36\xcc\xfc\x92\x48\x4d\x24\x11\x67\xb1\xf5\x1f\xe9\xdb\x7f\x11\x08\xf5\x7f\xe3\x90\xe5\x9e\x4b\xad\x6a\x0e\x2e\xcf\xd0\x31\xba\xba\x19\xb1\x2b\x11\x1b\x63\x2a\xd1\xd2\xb0\xa1\x39\x2a\x11\xe3\x0a\xd1\x34\xe3\x42\x61\xa6\xb4\x22\x00\x62\x80\x5d\x11\xc3\x01\x4e\x79\x9a\xe6\x0a\xeb\x83\x56\x5b\x54\x66\x4c\x2a\xb7\x44\x9d\xc7\xe0\x9e\x69\x58\x43\x23\x27\x14\x73\xc9\x84\x6e\x5f\xcb\x28\x65\x3d\x9c\xc6\x35\x55\xd6\x35\x81\x85\xc0\x65\x69\xe2\x1d\x55\x24\xad\xbe\xdf\x31\xbc\xf8\x5f\x8d\x46\x86\x53\x93\xce\x43\xc4\x40\x44\x73\xaa\x48\xa4\xf4\x11\xdc\x88\x26\xee\x2f\x7f\xbc\xbc\xfa\x39\x94\x20\xde\x0d\x3e\x9d\xfd\xe9\xdf\x4b\x3f\xdc\x7c\xaa\xfd\x30\xfe\xe9\x4f\xb5\x5f\xfe\x7f\x4b\xe9\xa9\xda\x53\x4d\xcf\x0f\xe6\x72\x08\x22\x35\xd8\x95\xdd\x54\x11\x4d\xf1\x8c\x20\x99\x67\x9a\x02\xe4\x51\x79\x7f\xb5\x48\x79\xc1\x71\x4c\xd9\xcc\xa4\x57\x5f\x50\x45\x04\x4e\x3e\xe1\xec\x83\xb3\x81\x6f\xb0\x3a\xff\xf7\xb6\x94\x0c\xff\xee\x97\xc1\xa7\x30\x9d\xfe\xdd\xf5\xcd\xd5\xdd\xd5\xd2\x59\x97\x5a\xa8\x1f\x23\xfd\xf8\x04\xfe\x17\x1d\x23\xdd\xba\x97\x7c\x53\xa2\xb0\xd6\x08\xd0\x57\x26\x25\xd4\xa7\x70\x51\x96\xc0\xa9\xc9\x04\x4d\x29\x5c\x29\xc6\x0a\xf8\xb5\x11\xae\xbd\xf6\xe0\xcf\x8d\xf9\xc0\x24\x7d\xdb\x4b\x99\xc5\x58\xc4\xe8\x6f\xb2\x8a\xcd\x00\xc6\x67\xf3\x03\x89\xd1\x21\x9a\x2b\x95\xc9\x93\xe3\xe3\xa7\xa7\xa7\x23\xfd\xf6\x11\x17\xb3\x63\xfd\xc7\x21\x61\x47\x73\x95\x26\x06\x8b\x42\xaf\xc2\x09\xba\x16\x5c\x5f\x21\xa0\xa0\x13\x41\x71\x02\xa9\xe8\x13\xc3\xff\xf8\x14\xfd\x1a\x71\x41\x8e\x8a\x8d\xb1\x86\x29\x7b\x8f\x58\xe3\xd5\xb1\x7e\xa9\x81\x99\x54\xf7\x13\xc5\x24\xa2\xb1\x15\x33\x08\x8b\x38\x58\x2f\x8d\xbf\x43\xb7\xe7\xf2\x68\x89\x75\x36\xfb\xe5\x0c\x94\x15\x1c\x93\x00\x4a\x42\xf1\x32\xc1\x69\xc5\xe7\xdc\xa8\xad\xb9\x56\xd1\x21\xba\x19\x6e\x55\xf7\x6a\xa6\x27\x1c\xf1\x04\x4d\xf2\xe9\x94\x88\xd0\xd7\x7d\xa0\xb5\x19\x2a\x91\x20\x11\x4f\x53\x90\x18\xf4\x57\xb9\x34\x54\x0d\x2b\x66\x47\x7b\x34\x62\xb0\xff\x5a\xcd\x01\x0a\x88\x39\xb0\x3a\x46\x48\x8c\x30\x5b\x98\x6e\x26\xf9\xb4\xe4\x4b\x07\x8c\x17\x1c\x23\xaa\x46\x6c\x90\x24\x48\x90\x94\x2b\x12\x86\x69\x83\xe3\xad\xb4\xe0\xc0\x22\x05\xc9\x12\x1c\x39\x10\x80\x84\x47\x38\x41\x53\x9a\x10\xb9\x90\x8a\xa4\x61\x03\x5f\x81\xad\x46\xaf\x19\x95\x28\xe6\x4f\x2c\xe1\xd8\xce\xa3\xfa\xd9\xd7\xe5\xd3\x38\x74\xf8\x1b\x43\x21\xb8\x80\xff\xf9\x91\xb2\x78\x67\x1c\xea\xfe\x76\x78\x13\xfe\xfb\xf6\x97\xdb\xbb\xe1\xa7\xf5\xb8\x8f\xa7\x2c\x18\x1e\xe8\xf0\x27\xe8\xd6\x2c\x02\x17\x5a\x22\x12\x2d\x93\xfa\x64\x49\xa9\xf8\x81\xc7\x1b\x72\xdf\x4f\x83\xcb\xfb\x41\x89\xa3\xdc\x9e\xfe\x30\x3c\xbb\xaf\xe8\x03\x76\x7e\x25\x19\xde\xa8\x7f\xe1\x6f\xa7\x3f\x9c\x5f\x9c\x8d\x1b\x14\xc6\x77\x37\xc3\xd3\xab\x9f\x86\x37\x85\x6e\xd7\xb8\x44\x95\xc1\x54\x99\xd5\x9d\x61\x4a\x73\x1e\xa3\xc9\xa2\x19\x6d\x45\x4b\xce\x09\xf8\x73\x0b\xbc\x21\xd3\xea\x09\xf0\x26\x07\x7c\x53\x7c\x91\xf2\x98\x1c\xd8\x77\x00\xa6\xc6\x18\x57\x8c\xc4\xdc\xdc\xb0\xee\x1d\xb3\xc0\x50\x61\x10\x64\xfc\xc2\x9d\xa0\x01\x92\xfa\xc5\x5c\x1f\x6a\x41\x67\x33\x30\x1c\x56\x86\x6a\x5a\xb3\x9f\xc2\xf2\xc2\x77\x66\xff\x33\xc1\xe1\x9c\xeb\x6e\xad\xc5\xd9\x5b\x25\xcc\x87\x06\x65\xb7\xd4\xa2\xc0\x60\x70\x68\x18\x9a\xdb\x2c\xbd\x08\xad\xeb\x65\xce\x63\x91\x58\x01\x6c\x4b\x1a\x7b\x67\x26\xc8\x23\xe5\x79\xf0\xa9\x45\xcd\x29\xed\x78\x63\xf3\xc5\x02\xc0\xb2\x19\xa3\x48\xa5\x19\x4f\x1e\x8d\x2d\x68\x16\xf6\x08\x2d\x4c\x05\x4f\x1b\xda\x28\x1f\x93\xf3\xab\x5b\x25\xb0\x22\xb3\xc5\x99\x65\x19\x9b\x1f\x8f\xb3\xab\x9f\x2f\x2f\xae\x06\x67\xe3\xe1\xe0\x63\xf9\xc4\xfb\x27\xb7\x77\x37\xc3\xc1\xa7\xf2\xa3\xf1\xe5\xd5\xdd\xd8\xbd\xb1\x94\xe4\x5b\x3a\xa8\xdf\xd3\xe5\x17\x4f\x90\x66\xb9\xc0\x1a\x1d\x9c\x65\xc0\x1f\x27\x64\xca\x85\xe1\xf3\xa9\x0b\x7f\xb0\x22\x8c\x5b\x5b\xab\x8b\x55\x66\x71\x02\x96\xb1\xa6\x26\x8d\xd5\x5b\x09\x82\x53\xb8\x27\x30\x43\x43\x16\x1f\x5e\x4d\x0f\x6f\xcd\x8f\x29\x16\x0f\x44\xf8\x4f\x9f\x04\x55\x8a\xb0\x92\x4a\x87\xdd\x90\xbd\x92\x58\x74\x70\x84\x6e\x34\xdf\xd7\xef\xfb\x4b\x4d\x13\x7b\x4c\x14\xa6\x89\xb4\x83\x2d\xad\xeb\x09\xba\xc0\x62\x56\xd8\xe1\xbe\xe2\xd3\xa9\x69\xec\x6b\x33\x0c\x7d\x87\x95\x66\xd1\xc0\x7b\x35\x69\xb8\x7b\x11\xfa\xb3\x2f\x7b\x79\xb8\x4e\x55\xf7\xd9\x76\x34\x75\x7f\x0d\x2b\x6e\x34\xf6\x92\x6e\x68\x9f\x34\xd0\x1a\x4c\xdc\x3c\x5e\x7e\xc9\x34\xb7\x5d\x27\xa7\xf2\x8b\x0d\xe4\x64\xb2\xf8\xf4\xce\x4f\xb5\xb6\xd9\x40\x4b\xe4\x33\xb5\x06\x83\x70\xdc\x15\x12\x2a\x9a\x01\xf3\x2a\xce\x32\x82\x85\x6c\xda\xed\xb2\x18\xd8\xb2\xf7\xa6\xa7\xb0\x0f\xbb\xc9\xae\x9f\x03\xc4\x19\x18\x1c\xbc\x10\x51\xa1\xc8\x0e\x34\x60\xda\xaa\x51\xc0\x35\x40\x99\x5d\x59\xd8\xb0\x4f\x54\x6a\xa5\xd1\xfc\xf8\xbd\xc5\x33\xdb\x8c\x20\x3e\x0c\xce\x2f\x2a\xc2\xc5\xf8\x6c\xf8\x61\x70\x7f\xb1\xdc\x4c\x58\xfa\xae\xba\xc5\xe8\x10\xe9\xe7\x65\xdf\x3b\x9d\x9a\x3b\xc3\xa1\xb2\x19\x95\x96\x30\x30\x5a\xd9\xa4\x3b\x63\xaf\x8e\x49\x96\xf0\x45\x4a\x18\x98\x78\x4a\x37\xa1\x5e\xcf\x29\xa6\xf6\x6a\x09\x06\x0b\x56\x1c\x6b\x76\x83\x6b\xec\xd0\x41\xc1\x91\xd8\xdf\xbc\x65\x24\xb8\x0a\xeb\xbe\x36\xde\x33\xfb\x9f\x5b\x85\xd5\x86\x67\x6c\x70\x7a\x77\xfe\xd3\xb0\xac\x1f\x9e\xfe\x70\xfe\x53\x93\x54\x33\xfe\x38\xbc\x1c\xde\x0c\xee\x56\x08\x27\x95\x26\x9b\x84\x13\xa9\x07\x5c\xf5\x9e\x52\xe9\xa3\x8a\x22\x83\x27\x87\xa8\x92\xe8\x91\x4a\x3a\xa1\x80\xbe\x67\x3d\x91\xf7\xe7\xc0\x59\x21\xcd\x92\xaa\x85\x13\x5f\x4c\xbf\xe5\x7d\xd4\x9c\xd4\xb6\x6f\xcc\x0e\xa1\x7f\x12\xac\x7c\x66\x73\xdc\xa4\x4f\x10\xe8\xb6\x8f\xa0\xb4\x05\x9f\x31\x2d\x48\xb3\x19\x11\x66\x38\xe0\x7d\x09\xc7\x12\x3c\xd7\xa3\x0a\x85\x95\x62\xd5\xbc\xd0\x3a\x23\x8c\x08\x80\xf7\xf2\x9d\x18\x41\x4a\x10\xf6\x5e\xcb\x5c\x59\x42\x23\xaa\x92\x05\x8a\xc0\x86\x05\xe6\xcc\x14\x33\x3c\xb3\xc2\x01\xa8\x39\x15\x92\xf8\x8b\x81\x28\xbc\x9a\x5a\xd3\xfe\x1d\x25\x1b\x1e\xb3\xfb\xcb\xb3\xe1\x87\xf3\xcb\x32\x09\xfc\x70\xfe\xb1\x24\xc2\x7e\x1a\x9e\x9d\xdf\x97\x6e\x73\x2d\xc9\x2e\x97\xeb\xab\xcd\x36\x1c\x45\xff\xd2\x09\x3a\x33\x9f\x9e\xe8\xc5\x6d\xc0\x5f\xf4\xca\x6f\x65\x1d\x6e\x5c\x58\x9f\xfb\x63\xc8\x94\x68\xf4\x4b\x74\x35\x21\x59\x1f\x64\xc9\x86\xd4\x1c\xaa\x50\xeb\xfb\xb2\xea\x54\xae\x87\x72\x58\x47\xa4\xee\xe4\xa8\xb0\x2c\x85\x31\x0c\x60\x34\x68\x33\x62\x35\xb8\xb5\x0a\x86\xfd\x13\xb8\xa8\xd3\x5c\x2a\xe3\x4a\x04\xe2\x44\x0f\x7f\x96\x7a\x41\xc1\xd5\x78\x84\x6e\x09\x19\x31\x67\x3d\x98\x51\x35\xcf\x27\x47\x11\x4f\x8f\x0b\xf0\xcf\x63\x9c\xd1\x14\x6b\x49\x9a\x88\xc5\xf1\x24\xe1\x93\xe3\x14\x4b\x45\xc4\x71\xf6\x30\x83\x28\x1a\xe7\x4e\x3d\xf6\xcd\xce\xf8\xef\x2e\xfe\xf8\xcd\xe1\xc5\x9f\xbf\x79\x57\xb7\x90\xb5\xed\xff\x90\x45\x38\x93\x79\x62\xa3\xee\x44\xb8\x36\xee\xc8\xe7\x64\xd5\x7e\x5f\x96\xb7\x6b\x3b\xfd\xf5\xf4\xfa\xbe\x64\xb1\x2e\xff\xf3\xd3\xf0\xd3\xd5\xcd\x2f\x25\x4e\x79\x77\x75\x33\xf8\x58\x62\xa8\xc3\xeb\x1f\x86\x9f\x86\x37\x83\x8b\xb1\x7b\xb8\x8d\xed\xed\x47\xc6\x9f\x58\x79\x69\xa4\xe3\x80\xb5\x9e\x4e\xd0\x07\x2e\xd0\x8f\x7e\x27\x0f\x27\x58\xc2\x15\xe3\xee\x2c\x79\x80\x32\x1e\x03\xe3\x45\x24\x9b\x93\x94\x08\x9c\x58\x9b\x81\x54\x5c\xe0\x99\xb9\xe9\x65\x24\xb0\x8a\xe6\x48\x66\x38\x22\x07\x28\x02\x6a\x98\x1d\xc0\xa6\x80\xaa\xc5\x67\x55\x3b\xdf\x4d\xce\x14\x4d\x89\x53\xc1\xed\x3f\xef\xcc\x66\x6c\xb0\x39\x57\x77\x3f\x94\x85\xbd\x0f\x17\xbf\xdc\x0d\xc7\xb7\x67\x3f\x2e\x5d\x4f\xf3\x59\x69\x64\xb7\x10\x80\x74\xca\x93\x3c\x65\xe1\xdf\x9b\x8f\xed\xfc\xf2\x6e\xf8\xb1\x3a\xba\xab\xc1\x5d\x99\x32\x6e\xca\x41\x72\xef\xbe\xbf\xba\xba\x18\x96\x5c\xc2\xef\xce\x06\x77\xc3\xbb\xf3\x4f\x25\xfa\x39\xbb\xbf\x31\x50\x9f\xcb\xa6\xe9\x46\xd0\x30\x51\x3d\xad\x70\x9a\xbb\x66\x85\x9d\x38\xd1\xc0\x06\xa5\x9b\xb3\x7c\x18\x00\x3d\x99\x70\x30\xb0\xea\x1c\x7a\x93\x6a\x64\x46\xda\xc8\x0e\x55\x79\x9b\x50\x3b\x3b\x5e\xba\xd1\xcb\xb8\xf2\x9d\x1f\x82\xc1\xd9\x35\xca\x36\x4e\x12\xfe\x64\xc2\x81\x53\xaa\x6f\x65\x0b\xfb\xa7\x5f\x91\x85\x87\xf0\xa8\x81\xe3\x95\xb7\x85\x44\x82\xa8\x4f\x3c\x67\x6a\x73\x92\x1b\x5c\x96\xf8\xce\xf0\xf2\xa7\xf1\x4f\x83\x32\x05\x9e\x5f\x2c\x67\x35\x61\x13\x0d\x57\xf1\xe0\xf2\x17\x7f\x09\x43\xd0\xf8\x81\xd7\x50\x8d\xec\x1a\x25\x54\x8b\xbd\x11\xd6\xda\x6b\x02\x12\x0d\x22\x14\x4c\x0e\xa9\x9e\x1c\x04\xa9\x66\xc6\x9f\x64\xf8\x93\x19\xe4\x89\xfb\xa3\xd2\x9e\x84\x75\x01\x6b\xaa\x8b\xc9\x87\x76\xac\x56\xcd\x10\x61\x8f\x54\x70\x00\x8b\x46\x8f\x58\x50\x2d\x8d\x9b\x96\xf5\x5c\x4f\xe0\x7f\xd7\x6b\x13\x0c\xa3\x15\xc6\x75\xcb\x85\x3a\xf3\xc1\xc0\x9b\x59\x43\x9a\x82\x62\xeb\xe1\xb0\xcd\x86\x8e\xfa\xb7\x0d\x9b\xb3\x65\xd0\x70\x79\xc2\x7f\x4f\xce\x28\x4e\x34\x03\xd8\x9d\xbc\x38\xb8\xbc\x3d\x2f\xcb\x8f\x65\x35\x23\xe0\xcb\x1b\xcb\x8b\x60\xa8\x34\x23\x77\xca\xc4\xed\x5f\x2e\x8c\x76\x01\x88\xe2\xe6\xdc\x06\x8a\x85\x85\x66\x31\xd2\x44\x86\x85\xac\x7c\x21\x11\x40\xf0\x15\x01\x57\xfa\xce\x82\x70\xa6\x47\x4e\xe3\x11\x23\x9f\x33\xc2\x24\x04\x07\x98\xfb\xac\xf0\xb5\xcb\x23\x74\x3e\x05\x96\xa0\x5f\x67\x28\x67\xd6\x01\xa6\x2f\x5c\x33\xc8\x03\x2d\xca\x16\xe8\x30\x81\xf9\x88\x11\x17\x2c\x55\x0c\x7e\xc4\x7e\xf6\x4e\x34\x78\x34\xe5\x9a\x01\xe9\x5d\xb4\xed\x9d\x20\xcc\x24\x3d\x40\x5a\x61\xa9\xee\x29\xa4\x1f\x68\x85\xd2\x86\x70\x69\x4e\x63\xff\x7c\xf9\x6b\xa0\x16\x27\x1c\x5e\x06\xcd\x77\x41\xe5\x2a\x68\x11\x8d\x13\xe3\x31\x19\x77\xbf\x13\x22\x2e\x88\xf5\xb3\xac\x7d\x0d\xac\x62\xec\x77\x58\x3e\xd4\x7c\x0f\xe7\x4c\x2a\xcc\x22\x72\x9a\x60\xb9\x61\x10\x92\xb3\x71\x1c\x94\x25\x8e\x9b\x9b\xfb\xeb\xbb\xf3\xef\x57\x70\xf9\xea\xc7\xf5\x30\xa0\x28\xc9\x9d\x7b\x6e\x22\x38\x8e\x91\x66\x9f\x33\x6e\x5c\x81\x56\xf0\x2f\x70\xf5\x4d\x6e\x90\x0f\xa8\x2c\x61\xfa\x17\x29\x0d\xd6\xce\x11\xba\x12\xa8\x5d\x08\x14\xe9\x95\x40\x81\xc9\xc3\x6d\x35\x78\x16\x4d\xb9\x21\x6b\xdd\xca\x12\xac\xa6\x5c\xa4\x86\xcb\x97\x26\x6d\x1a\x5f\xde\x28\x65\x8a\x08\x91\x67\x8a\xba\x42\x09\x55\x29\x55\x6f\xd9\x05\x9f\x7d\x22\x52\xe2\x19\xd9\xc6\x01\xdd\xa4\x3c\xdc\xfe\x14\xfe\x13\x1c\xcc\x5d\x64\xff\xd2\x08\x5d\xe4\xbb\xa3\xa7\x2b\xf6\xc1\x04\xf2\x5c\xf3\x84\x46\x1b\x06\xdc\x7d\x18\x9c\x5f\x8c\xcf\x3f\x69\x25\x7e\x70\x37\xbc\x28\x89\x12\xf0\x6c\xf0\xe1\x6e\x78\x63\x11\xe2\x07\xdf\x5f\x0c\xc7\x97\x57\x67\xc3\xdb\xf1\xe9\xd5\xa7\xeb\x8b\xe1\x8a\xc8\x9c\xd6\xc6\xeb\xd6\xd5\xea\xab\x27\xb5\x5f\x60\x87\x35\x2f\x0b\xed\x65\x90\x79\x86\x69\x02\x4e\x70\x6e\x9c\xe1\x18\x31\x1e\x1b\x0c\x2e\xe9\xac\x33\x1e\x96\x1d\x9d\xab\xf7\x49\x82\x70\xae\x78\x8a\xc1\x6b\x93\x2c\x46\x0c\x4f\x34\x6b\xc5\x49\x12\x84\x77\x89\x9c\x31\xcd\x62\x75\x63\xa6\xfe\x41\x94\x10\xcd\xce\xb3\x20\x61\xd0\xfa\x0d\xa6\x94\x41\xa4\x6d\x8a\xc5\x83\x2b\xe6\xe8\xd3\x30\xfc\xa1\x90\x08\xcb\x11\x33\xd8\x60\x56\x5a\xe9\xb0\xc2\x27\x9d\xde\x6a\x5d\x9d\x14\x3f\x10\xbd\x2a\x69\x1e\xcd\x51\x26\xf8\x4c\x10\x29\xad\x6d\x39\xc2\xcc\x04\x20\xd8\xd7\xf5\x35\x34\x62\x8c\xeb\xa5\x70\x26\xec\x98\x64\x84\xc5\x84\x45\xd4\xa4\x06\x82\xef\xde\x9b\x36\x67\x02\x67\x73\x24\x39\x38\xbd\x61\xd9\xc1\x7e\x65\x3e\x72\x37\x99\x45\x43\x83\xc7\xa1\x05\x5a\xe4\x9a\x4f\x5c\x81\x9c\x68\x56\x19\x3e\x76\x97\xa1\x73\xbb\x18\x3b\x60\x9a\x25\x44\x99\x4a\x18\xb0\xe4\xb0\x19\x7a\xad\x4b\xfb\xa1\xb7\xa9\x69\x13\xf4\x85\xed\xc6\x8c\xa5\x1d\xd1\x51\x83\x65\xdb\x1e\x29\xf4\x03\x66\x71\xa2\x5b\x71\x3e\x8c\xf2\x59\x84\x54\x94\x81\xa6\x1a\x77\x1a\xb7\xb9\x45\x23\x9c\xcb\x6d\xae\xd1\x4a\x3e\xa7\xb1\x0a\x1e\x16\x41\x21\x40\xde\x36\x99\x13\x56\x37\xd3\x2c\x12\x27\xdc\xae\x92\x79\x3d\x37\xd5\xdd\x10\x8c\xa6\xe5\x9a\xcd\x04\x65\x11\xcd\x70\xb2\x91\xee\x57\x09\xc6\xb7\x31\xee\x5f\xd1\xa9\x26\x9f\xaf\x6b\x6e\x5b\x45\x44\x0a\x49\xce\x76\x98\x7e\x0b\xd7\xb0\x24\xd9\xac\x06\x22\x8b\x68\x12\x2c\x78\x6e\xfc\x71\xb0\x2e\x24\x6e\x38\xaa\x47\x4d\xdb\xad\x4f\x06\x2e\x07\x40\x6f\xb0\xd9\x26\xf2\xa7\x6d\xfd\x2a\xad\xd8\xde\x4d\x30\x1e\x4e\xae\x9b\xdb\x6c\xda\x81\xe0\xe1\xbf\x96\xd1\xce\x27\x9c\x69\x9a\xb1\x35\x31\x70\x31\x47\xab\x24\xd9\x9a\x7f\x2e\x7e\x26\xf0\x9d\xfb\xbc\x90\xee\xbb\x51\x2c\xa1\x0d\x80\xaa\x77\x52\x8a\x21\x08\xf2\xd4\x2d\x8d\x4f\x73\x2d\xcb\x22\x0c\x51\x08\xe8\x2b\x72\x34\x3b\x42\xae\xc2\xc9\x01\x1a\x5c\x5f\x0f\x2f\xcf\x0e\x10\x51\xd1\xd7\x2e\x66\xd1\x06\x2c\x8d\x98\xe2\x56\x5a\x59\xb8\xea\x34\x29\x11\x33\x52\x9a\xb3\x8b\x6e\x82\x50\xe5\x19\x95\xca\x86\xcf\x6a\xbe\x12\xd4\x11\xa2\x69\x55\xcc\x36\x14\x92\xab\xf9\x36\xa4\x81\xa5\xcc\x53\xad\xcb\x8e\x29\x4e\xc7\x82\x27\xdb\x30\x85\x33\x98\x0a\xa8\xcb\x3e\xc5\x9f\xe2\x14\xe9\x66\x6d\x28\x88\x77\x39\x7a\x91\x4e\x0b\x46\x9a\x2f\xeb\x7b\x33\xb8\xb7\x9c\xf7\xc1\xc6\xa3\x51\x17\x02\x01\x10\x00\x2d\xac\xa2\x30\x1b\x8f\xad\xa5\x7e\x8c\xa3\x48\xab\xdc\x3b\x9e\x54\x50\x9c\xca\xb9\x04\x6c\x47\xcf\x36\xcd\x55\x74\xee\x86\x99\x69\x0e\x06\xc1\xc0\xf5\x5a\x2e\x0d\xfd\x4e\x16\xb5\x5e\x5d\xf9\xa8\x7b\xe9\x4d\x2a\xe6\x12\x96\x04\x76\x52\x9a\xf2\x53\x6a\x4e\x2c\xf4\x68\xd8\xa5\x4b\x88\xd1\x0d\x2f\x78\x2e\x9a\x18\xdd\x88\x9d\x91\x4c\x10\x2d\xe9\x57\x1d\x28\x9e\xa6\x6f\xca\x94\xd8\xd3\x75\x4f\xd7\x6f\x9e\xae\x4f\x4d\x15\xb2\x81\xaf\x3a\xb7\x95\x00\x67\x1a\x1b\x67\x9c\x27\xe3\x0e\x36\x91\xee\x2b\x5e\xf2\x84\x55\x6a\xb2\x01\xac\x00\xcf\x41\x3e\x2a\x5d\x9b\x5c\xdf\x75\x41\x8a\xad\x1d\xde\x92\x65\x70\x2e\xb3\xa0\x1a\xd4\x36\xe7\xbd\xa9\x95\x65\x2d\xa1\x67\x17\x73\x4e\x8d\x7c\xd3\x54\x64\xab\x7c\x98\x9c\x28\x42\x59\xad\xd4\xa1\xa1\x67\xa8\xdb\x0f\x72\xc7\xdf\x73\xae\xb0\xfc\xfa\x68\xc4\xb4\x10\xf5\x40\x16\xc6\xdc\xaa\xc5\x94\xdf\x6b\x59\xfc\x50\x12\x26\x21\xdc\xfb\xf7\xc6\x3d\xa7\x49\xdc\x99\xab\x8d\x6a\x6a\x2a\x2c\x96\xeb\x7f\x41\x88\xae\x6d\xd4\x4a\x49\x45\x00\x74\x51\x34\xcc\x3d\x33\xc3\x9f\x11\x05\x29\xd6\x8a\x2a\xd0\x99\x62\x53\xc2\xb1\x36\xf4\x95\xa6\x2b\x43\x15\x82\x83\x9f\x24\xce\xb7\x63\xfc\xb2\xde\xc6\x4a\xce\xe8\xb5\x85\x5b\x1b\xf3\x7e\xec\xec\x46\x91\xe0\xb5\xba\x88\x58\x22\xb3\xd3\x13\xc3\x0e\x9c\xff\x9a\xb0\xa3\x27\xfa\x40\x33\x12\x53\x0c\x11\xf0\xfa\x5f\xc7\x7a\x5e\xbf\x3b\xbd\xb9\xba\x1c\x17\x99\x3c\xff\x35\x62\x83\x44\x72\x9f\xa5\x80\x18\x67\x3e\xdc\x3e\x13\xc4\x89\x84\x76\x2e\x60\x75\x2d\xcc\x88\x23\xd6\x36\x82\x98\x47\xf2\x08\x3f\xc9\x23\x9c\xe2\x7f\x70\x06\xae\xf4\x01\xfc\x79\x9a\xf0\x3c\xfe\x19\xab\x68\x7e\x0c\xe7\x5a\x1d\x93\x47\xc2\x94\x71\x53\xe9\xe5\x8a\x21\x79\x57\x42\xb4\xfe\xef\xf4\x98\x8b\xa4\x22\xa9\x35\xd9\x88\x64\x0a\xfd\x3f\x82\x4c\x38\x57\xcd\x97\x14\x9f\x4e\x25\x59\xeb\x42\x2a\x94\xb4\xdb\x2b\xf4\xe7\x3f\x7d\xf3\xad\x26\xa1\x4d\xd6\xf8\xfc\xf6\x6a\xac\xbf\xff\xdd\x99\xfd\x5e\xae\xc1\xee\xae\xb2\x82\xb5\x39\xe2\x31\x81\xf3\x39\x83\xdb\x4f\x80\xf3\x02\xd8\x1b\x90\x43\xb1\x8f\x4d\xdc\xed\xcc\xc0\x1c\x6c\x95\x35\xb4\xc5\xad\xfe\x31\xe1\x13\xb0\x0b\xe5\xa5\x02\x69\x4b\x22\x3c\xb6\xb4\xa7\x9f\x51\x99\x25\x78\x51\xeb\x61\xd5\xb2\x5f\x6a\xee\x94\xe1\x88\x14\xf8\x0c\x2e\x18\x2b\xe2\x69\x0a\x01\x82\xce\x73\x12\xd3\x29\x44\x0a\x2a\x7d\xe7\xa3\x09\x51\x4f\x10\x97\xea\x7e\xf5\xb2\x8a\x33\xc8\x6a\x56\x06\xec\x72\xa4\x17\x39\xce\xc1\x9b\x36\x7a\x77\x80\x46\xef\x62\xf2\x48\x12\x9e\xe9\xd3\xac\x7f\x20\x2a\x6a\xda\xc4\x61\x8a\x69\x72\xc9\x95\xbf\xf9\xb6\xd9\x4f\x41\x22\x9a\x51\x7d\xba\xc6\x44\xb7\xfb\xac\x29\x61\xcd\x07\xec\x6e\x4e\x3c\x8e\x14\x8c\x01\xe1\x38\xd6\x44\x0c\xd5\xe2\xdc\xf0\x0a\x13\x3b\x0b\xa6\x5e\xaa\x82\xb4\xbe\xdc\xa6\xa5\x04\xe8\x31\x6c\xb3\x2c\x56\x34\xee\x80\x37\xbc\xec\xf4\x24\xb5\xfb\x65\x9c\xa9\xdb\x77\x5c\x54\xee\x5a\x4a\xff\xb6\x10\x61\x80\xe0\x60\x2d\x96\xad\x16\x9e\xea\x01\xd4\x6b\xd1\x6d\x9c\xe5\x95\xb9\xd5\xdf\x2d\x1d\x9a\x0c\x21\xd4\xa2\xb0\x9e\x28\x58\x17\x6c\xee\x40\x35\x5d\x81\xac\x1c\x71\x94\x70\x59\x4e\x25\xec\x3c\xe8\x53\xfb\xe9\xb2\x71\x0f\x43\x63\x4c\x9e\xf8\x2c\xbe\x4e\x74\x37\x68\x58\xf8\x0a\x56\x86\x61\x13\xca\x2a\x10\xf6\xed\x03\x44\xc1\x19\x05\x92\x6d\x52\x24\x56\xb0\x18\x15\x52\xe2\x88\x15\x26\x3d\x89\x9e\x48\x02\x5e\x80\x88\xa7\x19\x48\x40\x76\xb8\xb6\x25\x7d\x81\x2b\xac\xc8\x01\xe2\xb9\xd2\x8d\x99\x90\x25\x77\xc7\xd9\x78\xa8\x42\x2a\x34\xaa\x89\x8d\x0d\xf0\xd8\x5d\x86\xd6\x0d\x2b\xa4\x0c\x7d\x24\x0a\x5a\x01\x6c\xc4\x70\x82\xa6\xf2\xf6\xd2\xa3\x74\x5a\xdb\xb6\xb5\x4f\x94\x9d\xc9\x1a\x3b\x5f\xe4\x95\x7d\x9f\xf0\xc9\xd2\x7d\xbf\x82\xc6\xd1\xfd\xcd\xb9\xf3\xa1\x14\xe6\xe5\x00\xdc\xa9\xa4\x70\x0d\xaf\x6f\x86\xa7\x83\xbb\xe1\xd9\x11\xd2\x7a\xdd\x47\xa2\xfc\x74\x21\xfc\xdc\xc3\x04\x9a\x91\xdb\x44\x35\x26\x15\xc1\x71\x0b\x75\x13\x21\x4a\x41\xe2\x2b\x18\x47\x39\x8b\x6d\x39\x61\x43\x0e\x19\x65\x26\xa3\x0f\xf2\x2e\xab\xf3\xb4\x8e\x8b\x55\x27\x10\xcc\xc8\xe3\xb7\x63\xc4\x37\xe3\x4d\xeb\x8e\x8b\x55\xe4\x53\x76\x78\x3c\xf7\x64\xe0\x68\xa9\x39\xa1\x02\x75\x9a\x96\x21\xaa\x71\xf7\x39\x05\x11\x00\x9f\x70\xb6\x3c\x3a\x17\x3f\x95\x88\xd6\x48\x32\x81\x69\xe3\xb9\xcf\x81\x63\x6b\x63\xc3\x0a\xb7\x9f\x60\x21\xef\x1b\xde\xea\xf9\xa6\x09\x88\x91\xb5\xea\xf9\x47\x23\x56\x19\x84\x75\xf3\x49\x04\x67\x07\x7e\xa1\x0c\x95\xae\xc4\x03\x34\xa5\x9f\x6d\xa3\x85\xfb\xdf\xbd\x1a\xd8\x83\x5a\xdc\x4d\x73\x5c\x3f\x53\x6b\x88\x0d\xd7\xf0\xfd\x52\xf7\x07\x97\x4a\x4b\x5d\x5a\x72\x15\x44\xeb\x17\x24\x46\xd0\xad\x0f\x46\x58\x29\x32\x28\x2c\xf4\xa2\xe0\xb5\xf4\xad\x02\xe6\x35\xc6\x8a\x1c\x2a\xba\x32\x3e\xdc\x86\x10\x41\xb0\x11\x56\x41\xb6\x74\x71\xf3\x4c\xc8\x0c\x33\xe7\xb9\x6e\x19\xae\xbb\xf2\xb6\x60\x55\x5a\x82\xc5\x10\x3d\x07\xf2\x15\x44\x46\x95\xc6\x21\x33\x58\xcf\xa5\xe3\xb0\xc6\xc1\x7d\x58\xb6\x27\xec\x6d\x95\x2d\x83\xcd\xb3\x78\x9f\x06\x9b\x60\xa9\x90\x1d\x53\x9b\x26\x19\x48\xf8\x3b\x00\xbe\x58\x56\x60\x37\x54\xcd\xba\xda\xe3\x34\x09\x95\x95\x10\xa2\x14\xb5\xd5\x5f\x73\x49\x6c\x12\x5d\x4a\xc4\xcc\x09\xc2\xa6\x32\x97\x3f\xdb\xb6\x44\x97\xbb\x25\x42\x66\x02\x31\x0c\xf5\xa6\x8f\xd0\x80\xd5\xd2\x89\x9d\xd9\xba\xb4\x5e\xe6\x4e\xc2\xc9\x13\x5e\x48\x94\x09\x93\x79\x67\x02\x1b\xdc\xe4\xc1\x9f\x58\xfe\xc8\x5b\x8a\x94\x8b\x2c\x41\xa0\x4a\xaf\xf6\x29\x04\x05\xa7\xbb\x73\xbb\x8e\x3a\x51\xc5\xe9\xde\x54\x13\xda\xab\x9a\x1d\x58\x9d\x22\xe3\x68\x8e\xd9\x8c\x8c\x6d\xb2\xe1\x46\xda\x92\x6e\xe7\x14\x9a\x39\xb3\xad\x34\x5f\x4e\xd7\x46\x61\xb2\x10\xbb\xe6\x55\xa7\xd3\xc1\x21\x90\x0a\xcf\x08\x32\x23\x5a\xa6\x98\x14\xd0\x01\xa1\x41\xdd\x62\x31\x81\x9e\x60\x5b\x1d\x96\x83\x0c\xda\x84\x77\xb0\x0c\x5f\xe0\x09\x49\xb6\x8e\x05\xd8\xc8\x4a\x07\x5d\x5b\xe4\x49\xc5\xf5\xd2\x40\xb0\x04\x41\x4f\x73\x22\xaa\xec\xd8\xd9\xb6\x45\xde\x14\x3a\xb1\x6c\x9e\xa5\x62\x78\x5b\x4c\xd4\x41\xa9\x6e\x32\xd5\x36\x80\xd5\xf0\xda\x0b\x80\x48\x9b\xec\x23\xe1\xf5\x57\x35\x09\x6e\x36\x90\x00\x0f\xb5\x65\x1c\x5b\x03\xa2\xae\x9c\xca\xc6\x39\x18\x1d\x0b\x0d\x9c\x4f\x11\xe3\x8c\x20\x2a\x8b\x97\x55\x39\x5a\xcc\x67\x30\x6a\x11\xdf\x18\x5f\xea\xe5\x5d\x9f\xdb\xd2\x52\xe4\x96\x78\xdb\x80\x0b\x7f\x67\x44\x2b\xaa\x58\x2c\x00\x01\xc5\xf0\xe1\xb2\x4c\xb7\x72\x9c\x3b\x17\xb8\xef\x1c\xc0\x4d\xe0\xc8\x54\x1c\x81\x18\x59\x19\x1c\x32\x30\x31\xf6\x25\xfb\x91\xcd\xe2\x1b\x31\x6f\xd9\x00\x42\xa4\x12\xa5\x38\x83\xd8\x73\xc6\x55\xf1\x95\xc9\x4a\x55\x7e\x0b\x0f\x9c\x20\x2e\x0d\x4c\x79\xcb\x0a\xac\x32\xed\xb8\xeb\xb7\x58\xd7\x32\xfa\x87\x43\x2e\x9a\xd1\x47\xc2\x1c\x4d\x1f\xb8\x33\xa1\x07\xe5\x3a\x4d\x16\x87\x18\xbc\xb0\x24\x0e\x0d\xd7\xcb\x39\x92\x2d\xed\xba\x07\xf6\xc8\xee\x4b\xa6\x37\x3e\xaf\x59\x28\x4d\x0e\x79\x09\xfc\xcf\xf9\xcd\x43\x2a\xb5\xb0\x46\x26\x50\x1e\x4b\xf4\x7b\xc6\xd5\xef\x03\xe0\x27\x67\xbc\x30\x95\x7f\xad\x09\xea\xa0\x86\x68\x0b\x87\xd6\x12\x0e\xc2\x41\x02\xf2\xca\x95\xdf\x16\x7f\xad\x88\x0b\x78\x56\x69\x74\x58\x0f\x12\x6c\x83\x04\x37\xa5\x32\x76\x66\xb1\x79\x89\x9a\xf6\xc8\x90\x81\x20\x2e\x19\x3d\xe5\x82\x54\xca\x75\x18\x7e\xee\xa3\x68\xd3\x4c\x35\x66\xa2\xd5\x45\xa3\x06\x83\xa7\xa9\x5c\x50\x9c\xf4\x92\xa1\x53\x1e\x8d\xd8\x2d\x21\xed\x70\xf6\x7e\x2f\x7e\x85\x86\x60\xac\x4e\x6a\x5c\x42\x69\xbb\x08\xa9\x4d\xcb\x60\x23\x4b\xa8\x66\x05\x46\x54\xb3\x5d\x62\x93\x30\xd8\x36\xb9\xdc\x3b\x29\xc2\xba\xcc\x6d\x20\x48\x47\x23\xf6\x81\x0b\x7b\x05\x4b\x0b\xc3\x38\xc1\xd1\xc3\x21\x61\x31\xc2\xb9\x9a\x1b\x30\x22\xeb\x57\x58\x58\x6a\xd0\x92\x06\x90\x8d\xcf\x34\xa2\x32\xc2\x22\x76\x80\xa0\x8f\xdc\x8d\x62\xc4\x82\x46\x00\xe8\x11\x70\xb0\xa1\x1a\x50\x9b\xaa\x49\xa0\xf0\x40\xdb\x5a\x34\xd5\xb9\xa9\x55\xb9\x59\x7e\xce\x4a\x75\x7b\x00\xa2\x92\x11\x69\x45\xf6\xca\xea\x9c\x3b\x6b\xa3\xd3\xef\x64\x58\xf9\xdc\xbf\x79\x60\x35\x0a\x63\x92\xb2\x33\xd0\x92\xce\x37\x8e\xd7\x96\x40\x95\xa6\xb9\x80\x18\xa5\xa6\x36\xbf\x8a\xe6\x34\x29\x7c\x17\x5f\x1f\xf8\x61\xea\x26\x13\xf2\x48\x12\x03\xe9\x17\x09\x08\x5c\x30\x56\xc3\x6f\xd0\xff\x31\xb5\x5f\xd0\xb7\x23\xf6\x11\xd8\x70\x92\x2c\x00\x70\xc4\xb7\x8c\x55\xa5\x99\x87\xc6\x01\x28\x1b\x29\x85\xca\x03\x31\x7b\x3d\xc7\x8f\x64\xc4\x5c\x33\xff\x07\x3d\xa0\x3f\xa0\x6f\xdb\xd4\x3b\x17\x7f\xf0\xcc\x76\x8e\x0f\x81\x77\x3f\xb8\xe5\x2c\xa3\xb4\xfc\xc6\x99\x41\x4a\x46\xc8\x86\xc4\x23\x8f\x1b\x46\xd9\x23\x8f\x6a\x41\x2e\xe1\xa9\xc5\x82\x30\x35\x66\x3c\x26\x63\xd2\xe0\xd2\x5c\xc2\x24\xb4\x10\x70\xc9\x63\xb2\xd2\x21\xe9\x99\xe9\xcf\x60\xba\x91\xf9\xc4\x6f\x07\xe4\x3f\xf8\x60\x77\x6f\x7d\x28\x53\x5a\xf3\xc8\x3d\x38\xcf\x26\xe3\xde\xd4\x99\x7a\x65\xe5\xb3\x03\xb8\x10\xec\x00\x9a\x1d\x7a\x09\x56\x2e\x44\xbc\x7a\x1c\xab\x8e\x00\xfd\xb2\x9e\xb9\xbd\xac\x02\xd8\x21\x80\x86\x15\x74\x46\xb5\xfc\xde\xdd\x61\x0b\x9c\x70\x13\x6f\x86\xc1\x60\xe9\xe4\xce\x28\x96\xc2\xe5\xa1\x1d\x7a\xfa\x2b\x9c\x90\x13\x9e\x57\x05\x78\xbb\x00\x54\x86\xc1\xeb\x56\x56\x5f\x68\x3e\x3c\x33\x01\x92\x64\x4e\x4d\x4a\xc2\xe0\xf4\x02\xe9\xd3\xc1\x53\x93\xb7\x0b\x8b\x96\xab\x39\x17\xf4\x1f\xad\x01\x5c\xed\x32\x7a\xe1\x69\x2d\xe2\xdd\xcc\x38\xcb\xd2\x3a\x10\xab\x11\x29\x54\x49\x2b\x69\xd2\x99\xd0\x24\x07\x88\x1a\xcd\x66\xa7\x79\x62\x70\x2d\x23\x2e\x62\x53\x9c\x4e\x96\xa2\xeb\xf4\x7b\x5e\xbc\xc7\xca\x37\x48\x2d\x92\x87\x45\xce\x34\x16\x9c\xa5\x02\xe8\x5f\x72\x92\xef\x28\x40\xd1\xa2\xe1\xbf\x50\xe4\x47\x55\x0d\xc0\x33\x59\xc4\xec\x9a\xb5\xd1\xbc\xb9\x58\xdf\xbf\xeb\x99\xca\x20\xa4\xd7\x59\x16\x7d\x86\xac\x51\xc9\x4d\xdd\x94\xb5\x2c\x3a\x37\x06\x19\x70\x07\x26\x9d\x97\x88\xe7\xa8\xcb\x48\x0d\xec\xc7\x92\xdf\xa3\x0f\x70\xad\xb2\x88\x67\xb2\x93\x38\x88\xc5\x8a\xf4\xf1\x8c\x26\x93\x0d\x98\x5c\x5d\xa8\x5e\xb6\xde\x81\x01\xc5\xb3\xb5\x86\x58\x73\xc5\x91\x9e\xfb\x93\xa0\x90\x40\xbf\x28\x5e\xf6\x25\x82\xdc\x75\x11\xf2\x18\x2d\xa5\x18\xb1\x16\xe2\x3a\xdc\x12\x2e\x9a\x79\xfc\x1a\x06\x08\xdb\x50\xb9\xeb\xba\xdf\xbe\xed\x44\x18\x96\xb4\xaf\x47\xa2\x9e\x3d\xb7\xf2\x30\x78\xa0\xd4\xd7\x31\x20\x7a\xd1\xe6\xe5\x4e\x86\x27\xc7\x71\x84\xa3\x79\xeb\xa4\x26\x9c\x27\x04\xb3\x36\xe9\xb5\xf1\x71\xf5\x88\x18\xec\x17\x60\xdd\x49\x02\x00\x48\x6e\x09\x6c\xd1\x8c\x42\x7c\x67\x31\x00\xd7\x19\x1e\x6e\x32\xdd\xdc\x40\x15\x61\xce\xf2\x43\xd9\x2c\x21\xd5\xb5\xb2\x08\x83\x07\xb6\x93\x24\xca\x93\xa0\x6a\x46\x46\x84\x1e\xb5\x5e\xe2\x47\xc2\xb4\xce\x60\xc7\xe1\x9c\x19\x4f\x2e\x5e\xdc\x63\x65\x1f\xf8\xae\x9d\x3f\x4d\x2a\x2e\x48\x3c\x62\x70\x70\x79\xf9\xb0\x6a\x5a\x95\x5a\xcd\x08\xed\x52\x1b\x9f\xce\x40\x88\x58\xfb\x78\xde\x96\xcd\xc4\x6b\x9f\x49\xd3\xf7\x18\x62\x0c\xb6\x76\xad\x05\xee\x97\x22\x93\xc5\x6c\xac\xcb\x56\x7e\x21\x23\x32\x44\x6d\x94\x93\x28\x83\xa0\x8d\xb6\x6c\xd9\x67\xbd\x4b\x0a\x74\x50\x77\x1b\x74\x1c\xca\x52\x57\x75\x47\xc7\x33\x58\x27\x97\x9d\xdb\x0b\x1b\x71\x5b\x76\xd9\x9a\xb0\x3f\x1e\x44\xad\xb8\xfa\x37\x4a\x60\x48\xde\x80\x90\xfb\x9f\x8d\x86\x4d\xa5\xb1\x80\x39\x14\xd0\x34\x53\x0b\x0b\x1a\x0f\xf7\xa2\x85\x93\x56\x73\xcc\x6c\x42\x7c\x93\x7b\xb8\x7a\x47\xc6\x25\x07\x71\x53\x67\xd0\x91\x35\x2b\x34\x36\xe9\x16\x3a\x4c\xb0\xaa\x24\xb4\xb4\x45\x83\x98\xfa\x3b\x63\x9c\xb4\xda\xb2\x76\xc0\x34\x01\x7d\xa7\x48\x62\xb1\xd8\x38\x4a\xe4\x44\xf3\x2e\x9c\x24\x95\x79\x61\x28\xa1\xab\x3c\x06\xff\xa4\x28\x14\xd4\xdd\x59\x9d\xe0\x09\x59\xcb\x3d\x7d\x61\x3e\x58\x4a\x45\xf0\x4a\x51\xe2\xb5\x53\x56\x74\x18\x7a\xd7\x98\x43\xbe\x6a\x60\x61\xe6\xf9\xd2\xbb\xa9\x9c\xbd\xbd\xd9\x10\x25\x89\x72\x41\xd5\x62\x6c\x8d\x7e\xdd\x99\xd6\xad\xfd\xf2\xd4\x7e\xd8\x45\xa3\x3e\x41\xae\x3f\x67\x64\x84\x7b\x4a\x50\x03\x30\x6c\xa7\xd0\x65\xbb\xb5\x96\xdc\x98\x5b\xba\x6c\x61\x5d\x72\x6b\xb7\xa1\xea\x2e\x36\x1d\x9e\x05\x2e\x1d\xf3\xa9\x4b\x1b\xed\xbe\xb0\x55\x44\xd7\x35\xac\xa5\x0e\x9d\x2a\x13\x94\x0b\x0b\x9c\xda\x25\xa8\x2d\xc5\x9f\xc7\x19\x16\x38\x49\x48\x42\x65\xba\xb9\x6d\xf7\x8f\xdf\x2d\x1d\xed\xa9\x01\xf8\x95\x16\x2e\xfb\x33\x4d\xf3\x34\x28\xcd\x0e\xa8\x42\x01\x36\x88\x75\x97\xd8\x14\x57\x37\xc0\xe2\xa2\x61\x8a\x8a\x00\xed\x65\xc4\x02\xdc\x2f\x6b\xaa\xc0\xd1\x1c\x4a\xe6\x4e\x31\x15\x8c\x48\x79\x84\x2e\xb9\x22\x27\xe8\x13\xce\xee\x40\x50\x33\x15\x37\x66\xc6\x3a\x8e\x25\xd2\x52\x6b\xce\xa8\x3a\x18\x31\x0b\x16\xe6\x56\xe5\x38\xe2\xcc\x00\xc6\x44\xb0\xb0\xbe\x09\x30\xf7\x3a\xe4\x14\x65\x40\xf8\x35\x95\xb4\x2c\xb6\xc0\x4f\xe3\x20\x7a\x75\x6c\xb2\x03\xd6\xa0\xe3\x1b\xfc\x64\xe2\xb5\xa1\xc2\xa4\xf9\x7a\x89\xe4\x6e\x03\xa2\x2c\xc0\xb2\xc1\x49\x72\x81\x23\xdc\xc8\x85\xc8\x43\xc3\x9b\xe8\xd4\xaf\xe8\x11\x39\x42\xdf\x27\x7c\x22\x0f\x90\xf4\x98\x62\xae\x00\xa6\x3c\x30\x0e\x2a\xf8\xb7\xc9\xe4\xf9\xda\xad\x7e\xc1\xf7\xa1\x2a\xc2\x94\x7e\x46\x09\x7d\x20\x48\xfe\xf1\xe4\xf8\x38\x5d\x1c\x4e\xf2\xe8\x81\x28\xfd\x17\xc8\x14\x8d\x2b\xe4\x12\x6c\x71\x53\xba\xee\xaa\xd5\xa9\xa7\xfa\x76\xa2\x48\x0b\x12\x21\x09\xc0\xca\xe9\x2b\xdd\xd7\x9d\x71\x99\xa1\x9c\x35\x17\xd5\xb0\x53\x16\x79\xdb\xf1\x2a\xe1\x51\xbd\x8c\xb6\x62\xea\xea\x84\x30\x58\xd3\x04\xcf\x2a\x2a\xcb\x1a\x4a\xca\x55\x4a\x2d\x15\xe9\xb9\x43\xbc\x85\x3e\x65\xe5\x28\xb3\xf7\xce\x1d\x09\x6e\x45\xeb\x6e\x39\x1a\xb1\x81\x44\x4f\xc4\x94\xcb\x81\x94\x32\xf0\x4e\xe4\x54\xce\x7d\x42\x19\xd8\x4b\xa1\x51\x83\x16\xa4\x7b\xf2\x8a\xa3\xd3\xac\x9c\xff\xc6\x6a\xa0\x50\xf4\x53\x37\x0c\x19\xe3\x2e\x90\x10\x3d\x09\x9c\x65\x44\x8c\x98\x45\x7e\x01\x7c\x33\xce\x6d\x90\x48\x5b\x34\x79\xaf\x51\xee\x97\x46\x39\xa8\x84\x96\x43\x05\xa9\x14\x94\x1e\x59\x14\xca\x70\xf6\x29\xaf\x72\x96\xae\x66\x00\xbb\x82\x8f\x63\x4e\x64\x60\x78\x46\xde\x7e\x94\xd0\x29\xd1\x37\xe6\x88\xe9\xa5\x0f\x8d\xe4\x06\x33\xcb\x41\x68\xe9\x4e\x23\xc1\xa5\xb4\xd1\xe2\xa6\x9d\xe5\x39\x3f\x5b\xc0\xf3\x1b\xe0\x2f\x53\x18\xb3\x0a\xd4\x1f\x3c\x73\x90\xfd\xf6\x61\x73\xbd\xc4\xb6\xa6\x56\x02\xf4\x17\x6b\xb1\x06\x44\xff\xf1\xe9\xc5\xb9\xc7\xa5\xae\x74\x5d\xc7\xe8\x0f\xc1\xd2\xda\x51\xfa\xeb\x33\x0e\xf0\xfa\x2b\x4d\x2c\x41\xec\x5f\xbd\x59\xe5\x18\xd5\x6d\x32\xe1\x2b\x5b\xbf\xea\xce\xaa\xd0\xcc\xaa\x50\xea\x1d\x6d\x53\x0b\x2b\x8c\x40\xc8\x79\x6e\xaf\x30\x08\x0b\xfa\x2d\xa9\x70\x9a\x85\x69\x82\x0e\x0a\xc4\x4e\xd3\x1c\xb5\x36\xc6\xfd\xa2\x10\x65\x11\x36\x11\x18\xd5\xc1\xd5\xb6\x62\x3d\x2f\xcd\x9d\x45\x3e\xdb\x45\xe8\xed\xcb\xe5\xdd\x26\x8b\x22\xd2\x4c\x5a\x79\xc3\x57\x26\x6f\xb6\x55\x4f\x88\x47\x79\x6b\xdd\xd0\x6d\x13\xeb\x9c\xfe\x86\x04\xc1\xd2\x86\x10\x40\xfe\x59\x25\x37\x65\x0d\x93\xa6\x1f\xb3\xc9\x60\x3d\xf4\xb8\x8a\xc1\x55\x63\xa1\xc2\x23\x77\x10\xa9\x10\x04\xea\xbb\x1b\xac\xea\xf3\xca\xed\x02\xb0\xe2\x82\xe0\x78\x11\xac\x88\x77\x92\x9b\x9e\xc1\xa4\x23\x69\xaa\x95\x4e\x10\xa7\x19\x3f\xe4\x99\x93\xb3\x4b\x6f\x01\x28\x26\x9d\xea\x1b\x2b\x70\xb1\xeb\x2f\xd8\x21\x14\x2e\xd6\x7a\x49\x43\x7c\xa1\x6b\x04\x6e\x69\x80\xca\x9e\x13\x7b\xc3\x8d\xde\x0d\xbe\xbf\xba\xb9\x1b\x9e\x8d\xde\x15\x11\xe5\x2e\x65\xca\x49\x98\x1e\xb3\x8f\xb3\x11\xf3\x41\xa0\x1e\xd3\x08\xf6\x12\xe1\x38\x2e\x10\xe5\xac\xe2\x63\xe4\x8c\xa5\x1c\x39\x38\x15\x2b\xc3\x3f\x97\x34\x73\x0f\x79\x33\xfb\x7a\xb2\x96\xb8\x7b\x4a\x27\xc7\x64\xff\x2c\x49\xd3\xd8\xd1\x65\x13\xc2\xb1\x28\xa3\x1f\x12\x5f\xc9\x97\x91\x27\x27\xdf\xc3\xed\x7c\x8c\xcd\x25\xbc\x1e\xb7\x73\x1b\xb2\xc1\xa6\x7e\xa0\x9f\x49\x7c\xd3\x22\x55\xed\x24\x0b\xa3\x53\xf4\x5a\xe3\x2e\xe4\x8c\xae\xa3\xa5\xfa\xa9\xdc\xeb\xef\xba\xb3\x25\xc3\xde\x2a\x88\x29\x00\x97\xa2\x10\x46\x11\x11\x0a\x53\x86\xa6\x70\xb0\x59\xb4\x40\x80\xc5\x41\xc0\xef\xfa\x1d\x4a\x29\x83\x6c\xf7\x65\x4b\x7b\x5f\x9e\xc7\x3a\xa5\x32\xcf\x2f\xef\xcb\x95\xbd\x7f\xb8\xba\x2f\xd7\x69\x1b\xfc\xb2\x54\x56\xad\xb4\xb0\x2c\xc0\x25\x98\x62\x91\x39\x67\x81\x63\xfc\xca\x34\x4d\xf4\x23\x51\x3f\x69\xbe\xcc\xd9\x2e\xc2\xca\xad\x9c\x05\x0e\x27\x32\x7e\x34\x0d\xaf\x41\x06\x76\x28\x4b\x72\x07\x9c\x24\x07\x3d\x20\xdb\x43\x98\xc8\x7e\x64\x2a\x92\x0d\x74\x73\xa0\x32\xba\x00\x2d\xad\x2f\x71\xa6\x97\x6b\x04\x6f\x5b\x58\xf5\xb0\x39\x3e\x35\x1f\x77\x0a\x18\xbe\x09\xc3\x84\x75\x5b\xc5\x52\xa2\xc1\xf5\x79\xc3\x5a\x5f\x54\x6d\xf2\x5f\x16\x7c\x6a\xe2\xdd\x03\xbb\x46\x4e\x0d\xf2\xbd\xf6\x02\x34\xd5\xce\x74\x3b\xbc\x54\xe3\x45\xbd\x2e\xbb\x66\x9f\xf5\x1a\xde\x42\x9e\x2d\xe5\x71\x5a\xc5\x60\x37\x20\x32\xc5\x32\xac\x89\x22\x13\x0e\xc8\xc6\xd5\x87\xc8\x29\xf5\xa0\xcd\x83\x10\x49\xc5\xd4\x84\x75\x7e\xe0\x9d\xa1\xcb\x14\xb3\xe9\x02\x2f\xf3\x93\xa1\x68\x8f\x3e\x00\x78\x0a\xae\x00\x80\x0b\xb6\xb4\xc9\xc0\xe1\x74\x43\x6a\x5b\x0f\x91\xa6\x18\x9f\xb3\x27\xda\x22\x36\x38\xc3\x56\x29\x06\x09\xdf\x21\xf3\x35\x01\xb9\x1f\x8d\x58\x10\x01\x20\x8d\x4c\xae\xcf\x88\x03\xc3\x84\x0a\x2b\x9a\x9d\xda\xac\x07\x7f\x33\x97\x76\xa0\x9a\x73\xac\xe6\x65\x38\xcb\x5a\x3f\xf6\x74\xca\x39\x76\x99\x5d\x4e\xbd\xb7\x81\x55\xa1\xf1\x03\xda\x0b\x00\xec\x6c\xc7\x60\xdf\x03\x8d\x1a\x07\xf0\xe8\x41\x36\x70\xcc\x89\x64\xef\x95\xcf\x9d\xa3\x89\x85\xe0\xc4\x55\x7b\xab\x16\x39\x30\xb5\x2d\x2f\x3f\xe0\x3b\x80\xbb\x59\x57\xaa\x0d\x8e\xd5\x4a\x1b\x8a\x73\x9a\x01\x25\x84\xc1\x1d\xd0\x69\x1b\x36\xcd\xe7\x8c\x44\x9b\x60\x72\x5c\x63\x81\x53\xa2\x88\x58\x16\xdf\x51\x2e\x5e\x04\xb1\x0b\x6e\x07\x6d\xbf\x66\x17\x0d\xb2\x63\x15\x02\xd4\xab\x5e\x17\xab\x30\x36\xfc\x2c\xd6\x82\x13\xd2\xd3\xf8\xc9\x42\x59\xae\x39\x0b\xdb\x4f\x31\x0d\x1b\xbe\x12\x40\xaa\x6c\x3b\xa7\x97\xc1\x96\xb8\xab\xa1\x34\x94\xe2\x2f\xf6\x04\x54\x62\xf5\x28\xdb\xd0\x24\x56\xf1\xd2\x9d\xf0\x6e\x17\x32\xee\x72\x12\x2b\x87\xaa\x14\x8c\x0e\x54\x02\xf2\xbe\x01\x56\x68\x46\x84\x00\xa1\xa5\x29\xe4\x2c\xf0\xa3\x58\xbc\xb0\xc2\xda\x68\x25\xab\x2a\x98\x71\x65\xb9\x56\xf0\xb8\x5d\x65\xcb\xf7\x12\xcd\xae\x25\x9a\x35\x6c\x7b\x86\x3a\x89\xa8\x00\x77\xd8\x22\x43\x36\xe3\xba\x3c\x41\x48\xe6\xb0\x57\xa4\xad\x54\x02\x57\x3f\x65\xfe\x5f\x65\x0e\xee\x88\x3a\x24\xd5\xa6\x2c\xb5\xa3\xc0\x3f\x02\xee\x91\x24\x94\x06\x6c\xa0\x02\x8c\xd6\xc4\x95\x19\x13\xf4\xf9\xa5\xf1\xae\x40\xb6\xe8\x82\xe7\xe8\x89\x4a\xad\x0b\x8f\x18\x04\x5e\x79\x53\xb5\xe2\xb6\x54\xf2\x01\xbc\x05\x79\xe5\x32\x9f\xa4\x54\x21\x1c\xcc\xb0\x64\x2f\x3b\xb0\xe7\x59\x7f\x00\x33\x6e\x4c\x5c\x6e\xc2\x3c\x59\x71\x68\x36\x30\xfe\x14\x8d\x6c\x9b\x9b\x1c\x04\x89\x3e\x6f\x76\x72\xa0\xf1\x84\x1a\x66\xe3\x99\xeb\xd3\x93\x51\xb3\xb5\xc1\xa2\x30\x02\x54\x26\x95\xaa\x72\xb7\x58\xec\xc5\x15\xa9\xc9\xc5\x46\x74\xca\x4d\x2e\x5e\xdf\x45\x72\x72\x1b\x2c\xf6\xb2\x64\x35\xf7\x49\x8b\x71\xd6\x25\x41\x2a\xee\x22\x91\x43\x49\xe9\xba\x55\x52\xda\x37\x98\xa8\x22\xc2\x7a\xf3\x78\xdd\x75\xd4\xc1\x22\xe1\x25\xa4\xa2\x20\x7f\xad\x0c\xb2\x41\xaa\x9c\x9f\x71\x05\x49\x0a\x11\x94\x0c\xab\x25\xce\x8d\x58\xb3\x04\xb2\x9c\x27\x6e\x1b\xf3\xbe\x53\x38\xa9\xe0\xfc\xb9\x59\x58\x8b\xd6\xcf\x3e\x6a\xc8\x28\xcb\xb6\xf8\x57\x55\xc4\x2c\xfc\x4f\x2d\x0a\x08\x08\x1e\x9b\x64\x70\x36\x9c\xca\x8e\x11\xe9\x2b\xcf\x85\xbd\x74\x77\xa8\xda\xd5\xb8\x73\xe7\x00\x7e\x2f\x23\x5b\x6e\xec\x22\x50\x9d\x1a\x5f\x71\x23\x6e\x52\xd4\x04\x50\x1a\x77\x86\x2d\x59\x4d\xf7\xd6\x8d\x1f\x80\xeb\xd1\x0e\x1d\x9b\x30\x0c\x8f\x78\x5c\xd9\x92\xd2\x84\x6d\xb1\xb8\x67\x98\xf4\xba\x85\x68\x02\x57\x98\xb0\xe1\x93\x34\xb4\x1b\x40\x05\x1a\x1b\x75\x56\xe1\xc3\x5e\xb4\xcb\x59\x4c\x04\x23\x58\xcd\x5f\x2e\x68\xfd\x74\x5b\xe3\xf4\x8b\x05\xb0\x9f\xee\xa4\x0a\x59\x25\x28\x7c\xcd\x78\xf0\x35\x82\xab\x8b\x9a\x34\x35\xc5\xb1\xa9\xfa\x63\x81\xe9\xb1\x0e\x95\x6e\x15\xd7\xde\xac\xcc\x3d\x4f\x84\x7f\x83\xd5\xa7\x16\xdb\xaf\x0f\x7b\x58\xc9\x67\xc5\x92\x7c\x11\xa1\xf4\xcf\x1f\xdd\xbd\xac\x66\x50\x1e\x04\x7c\x43\xe1\x26\x85\x29\xb3\xdc\x6b\x59\x8c\xb7\x29\x93\xdf\x14\xd6\xbd\xf7\x09\x03\x5f\x7c\xbe\x40\x1f\x3d\xde\x47\x8f\xf7\xd1\xe3\x6b\x45\x8f\x2f\x33\x33\x7a\xcf\x17\x14\x79\x2e\x55\xe6\x30\xeb\xb8\x42\x5b\xdb\x3c\xaa\xdb\x59\xea\xc2\x90\x18\xfb\x8b\xfd\xa1\x31\x2a\xa6\xf6\x59\x75\xb6\xa1\xd5\x90\x2d\xaa\xc6\x77\x2c\xe2\xc4\xc2\x67\xd9\x98\xd5\xb2\x95\x67\x99\x41\x72\xc4\x7e\xe0\x4f\xe4\x91\x88\x03\x84\x15\x4a\xb9\x56\xd2\x83\x28\x14\x20\xb8\x12\x12\xb3\x89\x36\xc0\xe8\x12\xa7\x24\x1e\x82\xaa\x17\x44\xb6\x59\xb3\xa8\x75\x68\x36\xa1\x44\x02\xe0\xa1\xd9\x06\x17\x9d\x30\x62\x26\xda\xcc\x44\x38\xc1\x9d\x4c\xdd\xc4\x80\xae\x7f\xef\xdd\xad\xbf\x3f\x42\x77\xfa\x1e\xa0\xb2\x3c\xde\x00\x34\xaa\x6d\x6c\x23\x36\x13\x3c\xcf\xbc\xa5\x8a\x4f\xc0\x44\x66\xd8\x47\x83\xbb\x15\x06\xe3\x7c\xad\x11\x8e\xb5\xc6\xbb\x9c\x70\x5e\x25\x10\x71\x23\xe4\x95\x90\x80\x34\x97\xf0\xd1\x55\x36\xda\xd9\x78\x49\x03\xbc\x89\x65\xf8\xd1\xcf\xe4\xc2\x3d\x23\x12\x6c\x2f\xde\xb6\x5d\x4a\x7f\x2d\xa7\x58\x37\x8e\x73\x99\xe5\xd1\x7b\x07\x9c\x05\xbd\x39\x7b\xbb\xe8\xdc\x46\x56\x99\xdc\x3a\xcb\x8f\x9f\xcd\x26\xd9\x39\x80\xb2\x8d\x5f\x5c\xe7\x22\xe3\x20\xf1\x24\x0b\x97\x6d\x6e\x01\xaa\x32\x9e\xe5\x26\x7a\x8c\x86\xc1\x44\x8d\x94\x4d\xa5\xfa\x84\x55\x34\xd7\xfc\xbd\x00\x6a\xda\x51\x54\x5d\xc1\x95\x9f\xd7\x4e\xd9\x30\x83\xd3\xb0\xf7\x16\xc3\x7d\x07\xbb\xb5\xb9\x5f\x5d\x84\xb5\xbb\xb1\x53\xdd\x5f\xa9\x56\x63\x60\x7d\x74\x9f\xd8\x27\x7a\xa2\xab\xa8\x68\xd5\xf8\xbb\xd1\x56\xb9\x50\xd0\xce\xe3\xf5\xb6\x40\xbe\x38\xb3\x38\x43\xc5\x8b\xc8\x4a\x4c\x8d\x2c\x27\x17\x74\xb3\x44\x10\x0b\xee\xfd\xa8\x05\x72\x6f\xd7\x4c\x71\xa6\x85\x75\xc5\xf5\x2d\x29\x66\x46\x5e\x14\x44\xe5\x42\xdf\x23\xb9\xa0\xee\xec\x57\x52\x59\xdb\xa9\x03\xec\x80\xc7\x61\x21\x98\x08\x07\x35\xb2\x8c\x5b\x1d\x47\x2a\xc7\x3e\xfc\x0f\x68\x22\xa1\xec\x41\x77\x66\xd2\x76\x9d\xfb\x5a\x38\x31\xaa\x61\x4f\x57\x12\xf6\x16\xbb\xdc\x5e\xf1\x75\xd5\x49\xa3\x6c\x16\x60\xba\x35\xdb\x62\xbb\x40\xb6\x37\x7e\xd9\x0d\x76\xbe\xf1\x53\x27\xfb\x6c\xf2\xed\x12\xcc\x99\x8d\x0b\x01\x97\x42\x9d\x6d\xb8\xa9\x95\x9e\x42\xb4\x3d\x6b\x27\x03\xd0\x4c\x53\x56\x19\x5b\x69\xea\xbf\xfc\x5f\xa6\xc4\x8f\x59\x9a\xff\x42\x5c\x8c\x98\xf9\xfd\xc0\xc3\xeb\xeb\x17\x0a\xdc\x4a\x9c\x92\x02\xd9\x4f\x94\x31\xc0\x00\x09\xc1\x62\x38\x19\x8c\x52\x8f\x2e\xae\xc7\x10\xd4\xb0\xae\x55\xd3\x4d\x31\xc3\x33\x40\x44\x3d\x80\xf8\x33\x10\x57\x0b\x91\xdf\x90\xb4\x29\xd3\x06\xdc\x4a\x33\x4b\x9b\x72\x59\x54\x9b\x84\x3e\x8d\x28\x6b\x01\x19\x8b\x20\x86\x66\xea\x77\xa5\x8e\x37\x93\xd8\xef\x06\xb7\x3f\x8e\x6f\x86\xb7\x57\xf7\x37\xa7\x25\xb1\xfd\xf4\xe2\xfe\xf6\x6e\x78\xd3\xf8\xac\x48\x57\xfc\xcb\xfd\xf0\xbe\xe5\x91\x6b\xe0\x62\xf0\xfd\xf0\x22\x7c\xe5\x2f\xf7\x83\x8b\xf3\xbb\x5f\xc6\x57\x1f\xc6\xb7\xc3\x9b\x9f\xce\x4f\x87\xe3\xdb\xeb\xe1\xe9\xf9\x87\xf3\xd3\x81\xfe\x32\x7c\xf7\xfa\xe2\xfe\xe3\xf9\xe5\xd8\x05\xf7\x86\x8f\x7e\xbe\xba\xf9\xf1\xc3\xc5\xd5\xcf\xe3\xa0\xcb\xab\xcb\x0f\xe7\x1f\x9b\x66\x31\xb8\xbd\x3d\xff\x78\xf9\x69\x78\x79\xb7\x54\x11\x69\x5e\x8d\xd6\xea\x93\xc1\x45\x16\x18\x67\x02\x31\x69\xb2\xb0\xa4\x4d\xff\x01\x2e\x82\x6b\x43\x8f\x87\x07\xee\x2f\x53\xd0\xf5\x50\xb3\x40\xe7\x7d\x2a\xb8\xc7\x88\x79\xf7\xa0\xbf\x54\x15\x9e\x49\x97\x7d\x5a\x1a\xed\x09\x1a\xc0\x59\x01\x85\xa1\xd4\x29\x60\x4e\xf8\x91\x3a\x87\x32\xd0\x61\x42\x53\x0a\xbe\x65\x74\x88\xaa\x1b\x5e\x6e\xd0\xce\x09\x86\x60\xbd\x63\xf1\xb2\xd3\x20\xab\x89\xad\x40\x29\x27\xc8\x71\x68\x62\xd4\x76\x03\x99\xb9\x60\x38\xa5\x91\xf9\xa1\x82\x1a\x89\x0a\x84\x84\x6a\x8b\x25\x02\x2b\xb7\x3c\x27\xe8\xc7\x3f\x17\x83\x02\x4f\x81\x35\x10\xe4\xb5\x42\x60\xf6\x81\xc8\xcd\xaa\xae\x22\xcf\x52\x4f\xee\x98\x5b\x13\x2e\x9c\x5b\x5b\x2f\x16\xdc\x3a\x39\x0b\x50\x92\x4a\x3e\x1e\x5b\x2f\x1e\x1d\xa2\x0a\x8d\x9f\xa0\x5b\x40\x68\x90\x85\xea\xae\x77\x31\x4b\xf2\x19\xad\x95\x8b\x9e\x90\x39\x7e\xa4\xdc\xa1\xee\x9b\xe2\x04\xb0\x8e\x56\xb4\x42\x87\xa8\xf5\xa0\x9c\xa0\x41\x1c\xcb\x32\x83\x2b\x51\x8e\x63\x99\x87\xe5\x61\x87\xc0\x46\x2c\xf6\x6c\xb3\x42\x47\xc5\x91\x83\x15\xdb\x3d\x06\x45\x9d\x1d\x96\xef\xde\xad\xf0\x54\xe5\xc3\xd8\x91\xf2\x78\x23\x61\xe0\x0e\xcb\x87\x86\x2a\xf4\x8d\xf7\xab\x43\x03\xd9\xae\xc7\xf6\xd2\xf7\x8d\x9d\xfa\x95\x1d\xc3\x41\xdb\xac\xcf\x56\x30\xdb\x15\x5d\xba\x19\x27\x95\x8a\x43\x9d\xfb\x2b\x55\x2c\x6a\xec\x6c\xa7\x5e\x95\x66\x69\x0c\x8e\xe4\xd8\xd3\xff\x1a\xf3\xb8\x86\x4f\xaf\xfc\x97\x4b\x45\xb6\x71\xb0\x6e\xeb\xfa\x5a\x6a\x79\x9a\xd6\xdf\xb2\x94\x0e\x77\x84\x4a\xd3\x5d\x18\x04\xbc\x78\x1a\x81\x5b\x0d\x53\x66\xab\x88\x10\xef\xf7\x71\x75\x73\xf5\x39\xf6\x95\xad\xf0\x84\x3f\x96\x94\xcb\x94\x48\x89\x5b\x30\x2b\x02\x93\xd8\x36\x8c\xc1\x9f\x50\xfb\x61\x47\x7a\x72\x67\xf2\x4e\x7f\xb5\xcc\xe8\x73\x13\x6a\xc6\x6e\xa2\x5a\x60\x8d\x5d\x3c\x2b\xba\x32\x59\x6d\x9a\xbf\x1c\x14\x21\x2b\x5c\x04\x91\x3c\x6d\x6e\x96\x8e\x66\xb5\xea\x82\x35\x16\x87\x09\x5d\x65\xeb\x47\xba\x04\xad\x6f\x0c\xe4\x6b\xfd\x17\xb8\xbc\x3e\x6b\x50\x5d\xc9\xaf\x18\x16\xce\x35\x35\xe2\x4d\x55\xfe\x60\xa4\x07\x08\x9b\x64\xc2\x42\x9a\x92\x79\x34\x37\xde\x1c\x7d\x65\x1c\x8c\xd8\x53\xb0\x21\xa5\x70\xdb\x41\xd8\x12\x80\x20\x7e\xd6\xc7\x8d\x3e\x96\x82\x98\x41\x64\xa4\x10\x51\x1b\x10\x82\x71\xbc\x15\x55\x6f\x56\x10\x78\xb0\x5f\x5b\x90\xfa\x06\x25\xce\x1a\xaa\xf0\x37\x15\x3a\xf3\x73\x0b\xea\x8b\x6d\xa1\x29\x77\x1d\x42\x50\xe2\xac\x69\x04\x3b\xa8\x70\xf6\xa2\xa8\xc4\x3e\x29\xd2\xe4\xd0\xa6\x13\x0b\x53\xa0\xa7\xeb\x56\xfb\x0f\x6e\x46\x7f\x30\x7e\x87\xbc\x05\xd7\x22\x68\xcd\x03\x13\xa3\x43\x2d\xb3\xba\x7c\x6b\x1b\xf0\x20\xd1\xa1\x01\x3b\x7b\x0f\xf1\x8c\x83\xeb\xf3\xf7\x07\xe8\x7d\x98\xd3\xf5\x7e\xa3\x03\x68\xc7\x6d\xab\x9c\x81\x36\x55\x0a\xec\x2f\x1f\x3b\xd8\xab\xca\x49\xb4\x7b\x66\x0f\x22\x6a\x3b\x87\xfa\xcb\xd2\x37\xe0\x04\x86\xaa\x5d\xc6\x4f\xea\xc3\x8a\xad\x0b\xc8\xc8\xb8\x54\x36\xac\x5d\x3c\x62\x93\x45\xd5\xc9\x73\xe0\xbd\x3c\x9d\x4f\xe9\xd6\x95\xa8\x74\x7b\xf5\x24\xe0\x1d\x87\xbb\x2e\xbf\x0f\x56\xa4\x15\x0f\x4c\x64\x33\x9f\x06\x5c\xac\x2d\x1a\xa0\x8f\x13\x6f\x9a\x55\xc9\x5e\xe6\x16\xb3\x71\x53\x56\xc9\x3f\x6f\x8d\xdc\x3a\x04\x57\x0f\x9a\x56\xc4\xc6\xd5\xb7\x08\xd7\x3d\x95\x3d\x2f\x95\xed\x22\xaf\xa0\x3c\xb8\xf5\x2f\xd0\x53\x23\xc7\x05\xcd\x38\x83\xab\x56\x26\x3c\x83\x2f\x95\x2b\x5b\x5d\xe7\x73\x4d\x9f\x6f\xb0\x26\xab\x9d\xbe\xb7\x26\x70\xc0\xb8\x5d\xeb\x63\xad\x0e\x75\xa0\x6c\xed\x14\x4e\x4d\x0e\xa1\xa2\x29\x39\x40\x9c\x25\x8b\x20\xd8\xc1\x9e\x57\x20\x37\x13\x0b\x34\x27\x54\xb8\x4e\x2c\xcc\xdc\x5a\x49\xe7\x6b\x4a\xe3\x6d\x34\xb2\x45\xa4\xc9\xe5\xe0\xd3\xf0\x6c\x3c\xbc\xbc\x3b\xbf\xfb\xa5\x01\x42\xb0\xfc\xd8\xa1\x08\x06\x2f\xdc\xfe\x72\x7b\x37\xfc\x34\xfe\x38\xbc\x1c\xde\x0c\xee\x56\x20\x0c\x2e\xeb\xac\x0d\xbd\x2e\x97\x4d\xea\xdb\x3a\x08\x76\xce\xcc\xdb\xd0\x7b\x1d\x67\x30\xe8\x84\x92\x16\xac\x41\x93\x60\xcf\x62\x22\x50\x4c\x1e\x49\xc2\xb3\xc2\xac\xda\xb8\x60\x01\x08\x61\x43\xfb\xcb\x80\x08\xa1\xcd\xea\x1a\x9f\x20\x53\xa2\x2a\xa8\xd2\xe9\x1b\x04\x91\x0f\x0b\xc2\xde\x2b\x44\x3e\x67\x09\x8d\xa8\x0a\x12\xf0\xb8\xb0\xee\x15\xe3\x3e\x84\x28\xd0\x15\xc4\xb5\xb3\x68\x94\x9d\xeb\xfc\xa1\x27\xbd\xae\xed\xfb\x13\xe5\x41\xb1\x56\xd6\x3d\xd9\x81\x62\xdf\xe2\x34\xae\x61\x76\x6d\x30\xba\xe7\x30\x0f\xd4\x33\x61\x6c\x12\x5d\x0b\x9e\x57\xf3\x20\x57\xdf\x86\xcb\xe2\x64\x4a\xe7\x7a\x79\xa0\x4c\x37\x4a\x7d\xe5\x70\x97\x52\x3d\xc0\x1d\xe0\x5b\xd8\x18\xf1\x35\x03\x16\x6a\x65\x2e\x98\x89\xed\xc4\x48\x90\x94\x2b\xad\x80\x99\x88\x80\x03\x2d\x54\x51\x9c\xd0\x7f\x00\x12\x94\x20\x47\x41\x04\x05\x24\xda\xc5\x61\xc4\xa5\x45\x69\x38\x1a\xb1\xb3\xe1\xf5\xcd\xf0\x54\x33\xa4\x23\x74\x2f\x01\xe4\xa9\x34\xf5\x33\x4b\xde\x46\x1c\x0b\x23\x19\x28\x93\x8a\xe0\xb6\x60\x30\x22\x04\x17\xdd\xf9\x83\xef\x6f\x08\xdf\x35\x93\x37\x3c\x2b\xd9\xa6\x9c\x01\xe0\xb2\xb5\x98\x6b\x10\x9b\xbf\xf3\xd4\xa7\x1b\xfc\x54\x5a\x91\x10\xe4\x02\x24\x91\xf2\xaa\x3f\xe3\x6a\x03\x86\x63\xf7\xf9\x95\xfa\xbc\x86\x6f\x97\xcd\xf3\x0e\x42\xec\xa4\x2a\x00\x21\x0d\x66\xa4\x2f\xd6\x51\x99\x67\xab\xa8\x28\x5e\x03\x10\xa3\x42\xfa\x13\x32\xc3\x0c\x89\x9c\xb1\x0a\x42\x68\x68\x69\xab\x07\xcd\xac\x7b\x54\xf5\x9a\xe1\x94\xe7\x0c\x94\x06\x08\x63\x6d\x18\x8c\xcc\x08\x53\x2b\x06\xf3\x5a\x70\x27\x95\xa1\xee\x2f\xe2\x49\xc3\x40\xdb\x40\x4f\x9a\xfc\x49\x50\x31\x76\xbd\x6b\xd9\x05\xe5\x95\x9c\x4a\xfa\x50\xf9\xfb\xb9\x59\xcb\xc6\xf2\x61\xeb\xee\xee\xb0\x7c\x58\xdd\x55\x4c\xa2\x87\x75\x2f\x9b\x6a\x06\x64\x62\x0b\xee\xd6\x8c\x7d\x0b\xfd\xd4\x56\x94\x80\x3a\xcb\xd1\x03\xfa\xe1\xee\xd3\x05\x9a\x52\x2d\xf7\xea\x6b\xe5\x12\x6b\x19\xfb\x5e\x24\xbe\x88\xbd\x91\x41\x72\x91\xf8\xbb\x17\x36\xde\x89\x52\x81\x94\xa0\x6f\x34\x3c\x23\xce\xd8\x2b\x2c\xa6\x5d\xa5\xa2\x84\xc0\x2c\xe6\xa9\x99\xc7\xb1\xcc\xa7\x53\xfa\xf9\x48\x61\xf1\xf5\x1a\x12\xcd\x69\xc9\xc1\x56\x21\x23\x1b\x3e\x69\x21\x16\xc1\xaa\xb0\x52\x4e\x18\x3e\x12\xa6\x76\x22\x64\x43\x13\x0d\x19\xde\xdd\x4c\xe5\xa6\xbc\xde\xf9\x59\xc1\xa1\x7d\x99\xf7\x20\x34\x47\x09\x0c\x97\x95\xcd\xaa\xb1\x7e\xe1\x36\x6f\xf5\x63\x67\x07\x28\xbc\x5a\x5f\x97\x15\xf1\xdd\x76\xb5\x8b\x32\xbb\x45\x6c\xa6\x83\x28\xdf\x10\xf3\x45\x12\xa3\x8a\x07\x58\x03\x56\xc3\xaa\xee\xb9\xe9\x73\x8e\x65\xb5\xcb\x95\x5b\xbe\x01\xc0\x49\xa9\x99\x8f\x04\xf2\xff\x76\x11\x4d\xbd\x4e\x9e\x37\x0c\xe4\x5e\x24\x10\x07\xbc\xd4\x14\x63\x4a\xfc\xea\xe3\xeb\xc5\x13\xdc\x41\xd0\x34\x83\xd1\x92\x0f\xc9\x04\x81\xa2\xf3\x27\xe8\x3a\x21\x5a\x7c\xc8\xb5\x08\x91\x27\x89\x03\x83\x5a\x2e\xe2\xac\x05\x60\xf6\xec\xf3\x0a\x04\xe8\x25\x13\x73\x60\x68\xcb\x67\x16\xac\xc1\xee\xb3\xf3\x83\xf5\x05\x3b\x28\x58\xc3\xca\xaa\x10\x30\xe0\x85\x09\xfe\x04\x7b\x08\x2e\x71\x63\xfa\x0f\xcd\xe6\x05\x91\x73\xde\x9a\x11\x17\xce\xf6\x79\xe6\xe0\x96\xf2\x19\x27\x61\x23\xef\xc6\x6d\xc1\xc1\x1d\x2e\xe7\x33\xd3\x44\xa3\x48\xb0\x6c\x8a\x1e\xc5\xde\x87\x30\x58\x68\x4e\x1b\xca\x66\x87\x06\x8e\xb9\xc2\x5e\x14\xc2\x64\x15\xf6\xf7\x42\x22\x5f\x18\x07\xa2\xff\xbc\xb0\x82\x16\x71\xed\x54\xc9\xa2\xe2\x13\xd2\x77\xfa\x7a\x5c\xd6\x66\x3f\x14\x4d\xe8\x01\x37\xb3\x36\x0b\x60\x0f\x72\x9b\x8d\x6d\x91\x25\x80\x2f\xbb\xc5\x66\xca\x8d\x3a\x45\x3b\x03\xdd\xd6\x8f\x03\x62\x59\x91\xf0\xf5\x5c\xee\x9c\x12\xb5\x94\x26\xd0\x43\x46\xad\x0f\x19\x65\xab\x19\x78\xda\x03\x80\x37\x25\x20\xa3\xbb\xf0\xd8\x54\x2f\x79\x6b\x65\x5d\x95\x6a\x53\xda\x9d\x4e\x79\x35\xa5\x2f\xf4\xb9\x3f\xdb\xd2\xe5\xa3\x27\xb3\x18\x43\xa6\xe2\x36\x61\x1f\xa5\xf9\x1b\x73\x35\xb4\x49\x62\x64\xd2\xd2\x0d\xa0\xad\x5d\x3b\x6f\xaa\xcf\xb0\x20\x4c\x8d\xd8\x8d\x1e\x85\xf9\xa2\x70\xfd\x17\xd5\xea\x49\x51\xdb\x71\x8a\xb0\xfd\x0a\x16\xbd\x2d\xf2\x4a\x8e\xcd\x4b\xa0\x0b\x3d\x63\xf6\xf4\xf7\xe6\x1d\x93\xcc\x6e\xc1\x5c\xf4\x54\xe9\xb4\xd0\x1b\xb5\xb0\x17\xcd\x29\xe4\x92\xc7\x44\xda\xcb\x83\x2a\x0b\x16\xe0\x45\xe5\x9c\x38\x58\x5d\xf8\xcc\xf3\xaf\x26\xe6\xea\x34\x53\xe6\x2c\x42\x72\xc4\x82\x3e\x96\xa0\x30\x1a\xed\x70\x43\xb1\x1f\xf6\x99\xc6\xde\xd3\x02\xff\x34\x3b\xc4\x05\x9d\x51\x16\x14\x6a\xb1\xd3\x4b\x71\x06\xf6\x44\x73\x06\xf9\xd4\xdf\x3f\x77\x36\xac\xfd\x08\x46\xfc\x3f\xff\xfd\xd7\x23\xda\x66\x6e\x97\x63\xbb\x02\xfb\xb0\x93\xeb\x6d\x4b\xb8\xf3\x01\x3c\x44\x0b\xec\x80\xcc\x27\x1e\xbb\xb9\x14\xaa\x5f\xfc\x6a\x2f\x37\x4d\x34\x5c\xcd\x8d\x7f\xb1\x4c\xee\x60\x8c\x17\xf9\xf2\x5b\x36\x60\x71\x85\x07\xba\x70\x33\x06\x51\x9e\x0e\xfc\xdf\x44\xe7\xe9\xf6\x2b\x17\x4a\x85\x41\x05\x28\x6d\xdb\x44\xc3\xcd\xb1\x7c\xbe\x90\x87\xc6\x8a\x2a\xc6\x4a\x19\xde\x91\xab\x82\x1f\xcc\x20\x4d\x16\x9d\xde\x95\x5c\x12\x61\x0e\xb4\x87\xf3\x41\xf5\xa2\xcb\x10\xfb\xb6\xc2\x87\x43\x52\x4c\xd7\x8a\xd3\xd6\xef\x37\x23\xe4\x95\x8c\xb8\x78\x46\xc4\x38\xce\x4b\x41\xb9\xab\xda\xbe\xd6\x1f\x9d\xe5\x6a\xb1\xba\x7d\x99\xe0\xe8\x61\x1d\x54\x42\xfd\x7e\x4b\xb3\xab\x05\xc3\x20\x74\xa2\x2c\x1c\xb6\x60\xfe\x91\x0a\xe6\x9f\x8d\xe5\x2b\x69\xed\x70\xd1\x30\xa8\x9a\x1d\x08\xf7\xf6\x26\x32\xc8\xc4\x30\x72\x34\xc9\x0b\x2b\x87\xc7\x7a\x8f\x8f\x46\xec\x83\x29\x96\x00\x8a\x87\x19\x40\x04\x89\x14\xe4\x73\xc6\x25\x29\x65\xf6\x34\xe0\xb7\xdb\xcc\x3c\x3b\x8c\x66\x99\xb4\x52\xb5\x7c\x2b\x91\xf4\xd5\xd1\x1b\xeb\x1b\x5e\x9f\x72\x33\x05\x6e\x25\xf5\x44\x34\xa3\x9a\x76\xc6\x8d\x27\x6d\xfd\xa9\x77\x2d\xff\x51\xc4\xca\x00\x8e\x8f\x4a\x16\x07\xc8\x4f\xaf\x42\x10\x09\x79\x24\x60\xa6\x84\x31\x86\x28\xfd\x65\x53\x53\x0b\x3b\x59\x75\x80\x8a\xb4\x3a\x60\x0b\x28\xae\x8e\xa0\x9c\x7c\xd4\x44\x8b\xe5\xb4\x8a\xad\x33\x80\x9a\x1c\xfe\x6b\x48\xa1\x83\xb0\x5a\xc1\x82\x28\x44\x3e\x2b\x62\x8b\xed\xdd\xb9\x1c\xad\x7a\x58\x37\x6a\x4e\x33\x69\x17\x91\x76\x4f\x15\xb5\x89\xd8\xcc\x5c\x97\x84\x16\xbb\x7b\xdf\x26\x65\xcd\x31\x8b\x6d\xa6\xa1\x95\xa5\xb5\x4c\x01\xb3\x33\x76\x20\x1f\x83\x6d\xf3\xe5\x02\x98\x67\xd3\xa6\xc1\xa3\x86\x8b\xcc\xe9\x45\x5a\x32\x07\xb7\x35\x17\x5a\x40\xcd\x99\xa2\x89\x26\x0e\x3b\x06\xad\x35\xe7\xcc\x03\xad\x41\xc4\x70\x1b\x96\x17\x95\x92\xb2\xd9\xd8\xae\xa4\x4b\x9a\xeb\x76\x31\x94\x69\xea\x93\x69\xca\xfc\xf8\xbd\x6b\x68\xb9\x9d\xd7\x90\x35\xe0\x2c\xb9\x74\x3d\x10\xac\x19\x77\x93\xb1\x00\x59\x2e\xcb\x6f\x4c\x63\xb3\x14\xd4\xd4\x74\x85\x89\xae\x63\xa4\x00\xb1\xae\x9e\x1f\x5f\x5c\x21\xd2\xa6\xe0\x99\xc4\x1a\x88\x80\x56\x2d\x39\x86\xb2\x35\xb7\xf0\x9c\x79\x11\xcd\x16\xed\xf1\x19\xd4\x95\x34\x45\xec\xba\xb3\x61\xde\x38\x49\x26\x38\x7a\xf0\xca\x86\x57\xb9\xb9\x70\xa0\xe7\x5a\x40\x85\xaa\x4e\x86\xb8\xf4\x40\x23\x90\x6e\x42\x2f\x8c\x41\x48\xb1\xc3\x2e\x3a\x37\xab\x66\x21\x9e\x0c\x24\x8e\x19\xbd\x89\x19\x8f\x49\x96\xf0\x45\xda\x72\x9f\x55\x53\xb3\xb6\x89\x80\x68\xcb\x0c\xdb\xe9\x55\x56\x61\x7a\x6b\x5f\x66\xb5\x3c\x8f\x1d\xe0\xf5\xac\xc1\x25\x3f\x26\x7c\x02\x56\x3e\xab\x65\xbb\xdc\x85\x20\x84\xbe\x7a\x9e\xd7\xcd\xa8\xa8\x9e\x48\x2a\xb3\x04\x2f\x96\xf5\x60\x62\xf9\x9f\x77\xdf\x4c\xee\xf7\x6a\x23\x58\xf7\x28\xd8\xc6\xcf\x9f\x03\x81\xf5\xc2\x49\x02\xe6\x5d\xc3\xbf\x2a\xc6\x24\x93\x44\x75\x94\x09\xae\x05\x05\x3e\x62\x0a\xcf\xdc\xe6\x5a\xe1\x92\x3f\x31\x22\xe4\x9c\x66\xa5\x6a\x6f\x5b\x87\xdd\x5a\x8a\xb6\xff\x31\x41\xa6\x6b\xf0\x4e\x9e\x1d\x1a\xe4\x07\x4d\x1f\x32\xc3\x51\x61\xfc\x8b\x12\x2c\x25\x9d\x2e\x02\xc0\x06\x1f\xc1\x08\x69\x31\x65\x6d\x39\x28\xb0\xd4\xc4\x68\xcc\xf8\x76\x93\xb1\xbc\x7d\xb6\xd6\x7d\xf9\xf8\xd1\x38\x44\xc6\xd2\xf7\x49\x1d\x9d\xc3\xdd\xd4\x16\xa5\xa3\x15\x49\xd3\xa4\x66\x6f\x96\x61\xbc\x14\x54\xa5\xdd\x8c\x50\x08\x93\x76\xd8\x56\x91\xf1\x40\x0a\x21\xc8\x88\x2a\xa5\xa8\xc1\xe6\x6b\xc5\xc9\x99\x3f\x35\x71\x7a\x10\x06\xc8\x55\x2f\x3e\x3e\x40\x72\x2b\xf0\xa2\x2e\x74\x71\x46\x12\xb2\x93\x48\xd6\x0d\x88\xa4\xea\x61\x0f\xc8\x63\x29\x69\x14\x20\xe9\xab\x8d\x0b\x1b\x04\xd8\xb6\x40\xa0\x34\x0f\xfd\x67\x33\x50\x1b\x63\xdb\xb4\x8b\x60\xff\x82\x55\xee\xaa\xbb\x34\x61\xa9\x99\x16\x2c\xc9\x15\xdd\x94\xe8\xaa\xe8\xd4\xcb\x2b\xfb\x48\x6a\xaf\x1c\x8a\x5a\x1b\xd7\x47\xd2\x25\xe2\x60\xe5\x01\xd8\x88\x03\xd5\xf9\x74\x37\xba\xb0\x7e\x42\xc5\xd1\x8c\x28\x53\x58\xdb\x57\x0f\x7f\x4b\x34\xb1\xb3\x40\xfa\x1d\xad\x7e\xf3\x21\x5f\xef\xd4\xde\x12\x25\xdd\x95\x50\x83\xa7\xb3\x9b\xb3\x87\x5b\xb0\x1f\xc7\xd2\x08\xae\x5f\xbc\xdc\xb2\x75\xf2\xb9\x1d\x99\x4d\xc1\xfe\x0d\x09\x54\x66\x8e\xb1\xfd\xc2\xa7\x5b\x97\x80\x86\x70\x09\x9c\xcd\xac\xd1\xeb\x73\xbd\x2a\x69\x7f\xe9\xa2\xd7\xfa\x34\x5e\x1d\x55\x41\xdd\xbd\x3c\xb8\x9e\x3c\xe8\xc0\x0b\xf7\xf0\xf2\x6f\x3b\x06\xfb\x79\xff\xec\x81\x70\x58\xbb\x12\x77\x27\x22\xbe\x21\x32\xd9\x0b\x49\xb1\xb6\x15\x2f\x25\x2f\x1e\x3a\xf4\x98\x02\x8b\x65\x7f\xb7\x68\x3f\x4e\xf2\x8d\x75\x03\x3d\xdf\x05\xbb\x9a\x5e\x76\x42\x1f\x00\xa4\x88\x21\xdf\x34\xb7\x95\x19\xe0\xf0\x06\x21\x63\x35\xdf\xc3\x8a\x60\x3c\x3b\xbc\x4e\x61\x78\xb5\xe5\x7c\x8e\xed\xb5\xc9\x45\x9d\x37\xf7\x39\x49\x6d\xdd\xb1\xec\x42\x47\x79\x66\x2f\x8e\xa5\xc6\xe0\x83\x3e\x26\xb6\xdb\x2d\xda\x00\x59\xe2\xb6\x6c\x97\x87\xac\xa9\x6c\xd5\xf6\xe9\xd1\x2e\xe5\x6c\x9c\x09\x32\xa5\x9f\x37\x12\xc5\xaf\xe1\x53\xab\x5e\xea\x65\xae\x14\xc2\x02\xf7\x0c\x14\xce\x0a\xe2\xf6\xec\x4a\xdb\x62\x39\x23\x56\x64\x9c\xd9\x74\xb3\x07\xb2\x40\x5c\x94\x7e\xda\x14\x5c\x6f\xf7\x45\xbb\xcc\xbe\xce\x95\xca\xe4\xc9\xf1\xf1\x8c\xaa\x79\x3e\x39\x8a\x78\x6a\xc2\xcd\xb9\x98\x99\x3f\x8e\xa9\x94\x39\x91\xc7\xdf\x7d\xfb\x6d\xb1\xc5\x13\x1c\x3d\xcc\x0c\x5c\x49\xdd\xef\x54\xda\xf2\xdb\x7a\x61\xdb\xf5\x4b\x3d\x08\xce\xc6\xe4\xb3\x26\x52\xb9\x29\x90\xcd\xbd\x24\x12\x0d\x7e\xbe\x45\x72\xc1\x14\xfe\x7c\x82\x3e\x51\x06\x02\xc8\x0f\x3c\x17\x12\x9d\xe1\xc5\x21\x9f\x1e\xa6\x9c\xa9\x39\xfa\x04\xff\x6b\x7f\x7a\x22\xe4\x01\xfd\x42\xb0\xb0\xfb\x6b\x4b\x22\xf9\xea\xba\x73\x0c\xb9\xb8\x12\x91\x47\xbd\xc2\xdf\xfe\x07\x4a\x4d\xcb\x27\xe8\x9b\xe3\x6f\xff\x03\xfd\x1e\xfe\xff\xff\x8f\x7e\xdf\xa2\xa9\xad\x07\x85\x03\x85\x33\x6f\xca\xee\xb8\x83\xca\x4a\x6d\x50\x4b\xf8\x54\xf0\x62\xa7\x1a\x5b\x7e\xa0\xd1\x03\x9f\x4e\xc7\x8a\xa6\xc4\xe4\x06\x8d\xb1\xa8\xc1\xa8\x6e\x88\x2b\x48\x6d\xe5\x53\x41\x0d\xdc\xb6\xab\xad\x60\x3b\x35\x99\xd0\xee\xb8\xc9\xbc\xa8\xfc\x08\x41\x20\xa5\x6a\x9a\x54\xc2\x57\x24\xd6\xa7\x62\x9d\x80\x0f\x67\x9d\xa9\xd7\x67\x2f\x90\x03\xc2\x6a\xbe\x3e\x70\x2b\x8c\x42\x34\x81\x1a\x76\x21\x1b\x8f\x43\x2d\x3c\xf2\x8b\x89\x79\x83\xa9\xbd\x56\xbc\x9b\xac\x75\xbe\x3a\xd4\xed\x96\x8b\xad\xe4\xe5\x07\x52\x8b\xb9\xed\x58\x47\xc4\xd5\x90\x0c\xeb\x4a\x43\xd2\x29\x17\x1e\xdf\xd3\xe8\xb5\xb6\xda\xd8\x6a\x2b\x14\x15\x26\x38\xa8\xdb\xa1\xd7\x53\x3f\xf3\x9f\xac\x1a\x26\x44\x0a\xb9\xb7\x8b\x3a\x4a\x30\x5a\x7d\xc5\x69\x96\xd8\x30\xe2\x06\x10\xb0\x55\x1b\x7a\xeb\xf3\xbe\xa1\x71\x08\x5b\x83\x90\x7d\xe6\x24\x13\x9b\x93\xdc\xb8\x9f\x00\x8d\xb4\x0b\xd4\xb4\x1a\xca\xf6\x16\x7c\xce\x98\xca\x0a\x16\xe1\x40\xda\x2b\xd8\xec\x02\x6b\xee\xb1\x21\xd0\x9c\xa9\xb6\x71\x80\x04\x86\xc8\x2f\x35\xc7\xcc\x28\x51\x53\x1c\x51\x36\x3b\x08\x30\xc6\x20\x55\x3a\xe4\x59\x4d\x2b\x79\x87\xe5\xc3\x6e\xa3\x99\xb6\xae\x3e\x46\xe3\xa2\x02\x8e\x45\x05\x30\xd6\x53\x5a\x03\x58\x52\x58\x3e\xb4\xc1\x62\xd4\x30\x79\x96\x8c\xce\x2f\x85\x43\xf2\x59\x36\x3e\x97\x7a\x49\x42\xa1\x0d\x00\xb7\x5d\xdd\x49\x8b\xd0\xe5\xb2\x67\x30\xdc\x34\x34\x21\x71\x15\x9a\xae\x3a\xfe\x55\x84\x60\xd4\xe2\x20\x6e\x06\x90\xcb\x52\xad\xf8\xc5\xc6\x3c\xcb\x16\xe6\x28\xe9\x9b\x0b\xcb\x07\xe9\x4b\xe0\x21\x99\xe2\x24\x39\x40\x82\xe4\xd2\x94\x60\x94\x24\x99\x1e\x3a\x10\xf1\x18\x25\x7c\x46\x23\x9c\xa0\x49\xc2\xa3\x07\x39\x62\xfa\x2a\x61\x33\x73\x03\x66\x82\x47\x44\xca\xe0\xee\x2d\xd2\x32\x6d\xb2\x0c\xd4\xbf\x53\x44\xa4\x94\x51\xa9\x68\xe4\x2e\xd5\x22\x13\xda\x54\x3b\xd5\xda\x50\xc4\x4d\xd5\x3e\x18\xae\x96\x05\x88\x81\x35\xcb\x99\x2d\x37\x01\x0c\xdd\xa2\x15\xb9\x30\xd0\x36\xea\xdd\x01\xf8\x92\xdb\x9e\xb1\x2a\x9f\x86\x15\xf4\x7c\x6a\x3f\x83\x33\xb4\x8c\x62\x6e\xca\xe4\xec\xa9\xc1\x93\xb9\xc7\xf4\x75\x44\x51\x04\xb9\x96\xee\x36\x1f\xfb\xb9\x67\x58\x30\x30\xe4\x16\x04\x98\x55\x34\xad\x57\x11\x2e\x45\xa8\x70\x52\xf5\x8b\x51\x16\x25\x79\xec\x6b\x5c\xe9\x4b\xe2\x51\x13\x89\x5b\x1e\xbd\xf6\xfa\x2a\x39\x40\x58\xa2\x27\x92\x24\xfa\xbf\x26\xc6\xf5\xd0\x43\x4e\x6b\x7e\x68\x60\xc1\xa1\x13\xc7\x22\x5b\x29\x0a\x26\xb1\x27\xa5\x19\xfd\x25\xbd\x2e\x5b\x5c\x29\x48\xe8\xe5\x59\x93\x3d\xea\x95\x6e\x85\xe7\x2b\x8d\xad\x4c\xb6\x80\x33\xd2\x3e\xa8\x8e\xf6\x0a\xd1\x94\xd0\x6b\x28\x0e\x9e\x3e\xd2\xa2\x0c\xa9\xed\x6d\xa9\x3d\x43\xcf\xa8\x93\x31\x23\x24\x8a\x8d\x0d\x74\x95\xa9\xd4\x12\xe3\xa9\xa9\x5f\x6d\x26\x04\x52\x6d\x1e\x45\x84\xc4\x8d\xe1\x90\x7a\x44\x7b\x07\x3f\x77\x8d\xd5\xdc\xe4\x58\xa7\x5c\x99\x2a\x78\x06\x7e\xce\x19\x5a\x0c\x5e\xd9\x24\xe1\x13\xb8\x90\x00\x99\xce\xe5\x68\x06\xf9\x5d\x66\xde\x24\x46\x5f\x05\xf7\x8b\xcf\xff\xff\xba\x19\x27\xad\xb4\x22\x7b\x80\x4a\x57\xb5\xf0\xb4\x62\xd3\x95\x0b\x39\x1d\xa1\xeb\x0a\x68\x45\x58\x08\x19\xeb\x6b\x63\x29\x00\xca\x2b\x21\xd9\x55\x26\xf1\x7c\x3b\xb4\x26\x92\x5d\xa9\xcf\x1d\x20\xd9\x55\xe6\xd9\x12\x44\xce\x67\xcf\x9a\xfc\xaa\x27\x75\xc1\xbb\x67\x24\x19\xf0\x24\x23\xe2\x95\x48\xd0\x1d\xc8\x45\x13\x21\xee\x17\x4a\x5f\xa5\xdc\xd9\xeb\xa2\xf4\x55\x06\xb3\xcf\x28\x7d\x95\xa1\xee\x2f\x4a\x5f\xc3\x40\x3b\xa0\xf4\x19\x2f\xf3\x58\x13\x75\x37\xa6\x00\x19\x16\x93\x7c\x7a\x0b\xf7\xee\xd2\x31\x9e\x1a\x0f\xb6\xb9\xc6\x9c\x28\x69\x41\x6b\x61\xb4\x36\x19\xaf\x2d\x2e\x07\xcb\xad\x68\xcf\xbb\x81\xa8\x34\x5a\x7c\x96\x60\x56\xbe\x3a\xa0\xa2\xb9\x20\x91\x26\x3f\xc3\xa8\x94\xc0\x4c\xc2\x54\x0f\xac\x75\x49\x8f\xc2\x18\x54\x23\x9c\xd9\xe4\xe6\xb6\x5a\x12\xfb\x93\xc6\xb9\x1e\x00\x22\xe0\xb2\x95\x58\x7d\x27\x54\xa5\x4f\x15\x38\xf6\x39\x7f\xb2\x92\x23\x90\x9f\x21\xc6\x56\xd2\x83\x4e\xc7\x56\xa1\x6f\x5b\x31\xca\x14\x99\x55\x45\xfa\xe2\xb0\x50\xa6\xfe\xf8\xdd\x4a\x0e\x64\x60\xe7\x9c\xe9\x20\x00\x45\xb7\x48\x17\xbe\xfc\x0a\x89\x6d\x4d\x76\xa9\xb5\x6b\x3d\x1d\x73\xa3\x4a\x94\x62\xea\xf4\xfc\x5c\x82\x2f\x69\x4e\xe5\x88\x99\x7c\x23\x5b\x0a\xec\x08\x7d\x80\x4a\x8f\x38\xcd\x12\x72\x80\xfc\xfc\xa8\xa6\xa0\x51\xfe\xcd\x37\x7f\x24\xe8\x1b\x94\x12\xcc\x4a\xf6\x0d\xd0\xea\xf5\x95\x07\xb8\x66\x6a\x4e\x46\xac\x71\x2b\xd0\xf0\xb3\x29\x1e\xe3\x02\xce\xce\xd9\x94\x3b\x7b\x09\x54\x30\xc3\xd1\x1c\xc9\x7c\x62\x4a\x70\x06\xf6\x2d\xa7\xe7\x5d\xf0\x19\x78\x4a\xe1\x26\x76\x83\xde\x18\xcf\xb1\xc2\x70\x3a\xe2\x39\x96\xa6\xd6\xe3\x39\x36\x9f\xbe\xbd\xc5\x73\xac\xec\x79\x37\x3c\xc7\xa6\x2d\xdf\x00\xcf\xb1\xd4\xcc\x17\x83\xe7\x58\x59\xd1\x2f\x06\xcf\xb1\x32\xaf\x1e\xcf\xf1\x0b\xc1\x73\x5c\xcd\x47\x1a\x11\x0b\x9b\x0f\xef\x7a\x88\x85\x8d\xfa\x55\x3b\x8b\xd8\x16\x1e\x06\xa4\xb9\x17\x46\x2c\x2c\x4d\xa0\x8f\xce\x5a\x3f\x3a\xab\x91\xf8\x6c\xdf\x7a\x78\x2e\x64\xab\x7a\x91\x75\xc4\x2c\x2c\xed\x4f\x67\xd3\xe7\x2e\x28\xf1\x79\xe3\x01\xc1\x03\xd3\xd5\x1c\x32\x28\xad\xa2\xb4\x48\xa7\x5a\x32\x72\x58\x53\x46\x73\x0a\xbd\xcf\x3d\xe5\x6e\x10\x57\x58\x59\x5e\xef\xb3\x31\xb4\xb8\x4b\xe3\x7c\x43\x19\xef\x2d\xe8\xd5\xa5\x5e\xad\xe9\x1c\x71\x83\x00\x27\x49\xb3\x61\x90\xa6\x74\x57\xcd\xae\xba\xc8\x3c\x92\x0e\x68\x53\xb5\xac\x32\x7d\x3d\x99\xe1\x18\xd9\xb8\x92\x4c\x07\x69\xfe\xe6\xcb\x19\x95\x4a\xb4\x46\xd6\xd4\x46\xb8\x8d\x1b\x36\xcb\x37\xc1\xec\x98\x6d\xf6\x59\x4a\x52\x2e\x56\x85\xf5\x34\x7e\x69\x0b\x10\x6c\xf2\x29\xc9\xe6\x24\xd5\x42\xd0\x78\xdd\x46\xba\xee\xb7\x4f\x39\xb4\x99\x2f\x26\xcc\xae\x44\x04\x81\x93\x55\xbf\x1b\x1b\x3c\xbb\xce\xdb\xbd\xed\x36\x5b\xc4\xbd\x35\xad\xf8\x0e\x71\x74\xb9\xb5\xc4\xbe\x54\x72\xa5\x03\x7d\x37\x06\x6b\xf8\x58\x99\x0d\xc3\x31\x5a\x50\x0c\xeb\x1d\x82\xb7\x56\x12\x71\x18\xca\xa8\x25\x0f\x69\x7d\x04\xa5\x75\x77\xba\xcd\x16\xcb\x9e\x8b\xd6\xa8\xc1\x2e\x76\xbd\x48\xe5\x38\x01\xc5\x29\xac\xd2\x55\xa5\xef\xc9\xa2\x21\x0d\xa9\x9b\xe1\x98\x32\xf5\xa7\x7f\x5f\x27\x8c\x02\x84\x7c\xbb\x6e\x50\x59\x04\x47\x11\x91\xc6\xd4\x68\xa3\x4a\x4d\xd5\xfb\x5c\x24\xdb\xec\xaa\x3e\x1c\x7a\xde\x9a\x65\x7a\x68\xd0\xb8\x20\x1e\x73\x01\xcf\x05\xcf\x67\x73\x67\xcd\xd0\x54\xa8\xa7\xd6\xb4\x97\x3f\xd5\x4c\x86\x6b\xef\xe5\xf7\x39\x4d\x36\xb3\x15\xdd\x96\xca\xad\x7c\x3c\xbf\x43\x72\xee\xe9\x7f\x02\xcd\x36\x6e\x6c\x7d\xd0\xdd\xfb\xb4\xdf\x7a\xb3\x35\x74\x73\xe0\xe0\xf0\xa6\x3c\x49\xc0\xf0\x2a\x49\xfa\xd8\x56\x35\x1f\x26\x7c\x47\x37\xac\x0d\x0e\x5f\x83\xfb\x46\x2a\x9c\x66\x9d\x24\x9a\x6b\x23\x6c\x49\xe4\x46\x5f\xf5\xdd\x9a\xa8\x2e\xce\x08\x6b\xb2\xf6\xfc\x5c\x2f\x12\xf0\xc6\x62\xeb\x5c\xac\xd7\xce\xe2\xeb\xdc\x92\xbc\x70\x8c\x5d\xd3\x3c\xd6\x60\x01\xa5\x90\xf3\x82\xc7\xbb\xe0\x05\x23\xc7\x0f\xf4\xfc\x46\x6c\x50\x0a\x4e\x77\xe5\x38\x27\x8b\x22\xba\xd5\x88\xc4\x21\x27\x01\x6c\x75\x6b\x27\x00\x93\xbe\xfe\x0b\x04\x77\x83\xe4\x68\xa2\xef\x5c\x84\x1d\x84\xe6\x92\xf8\x10\x47\x8b\x28\xa1\x51\xa0\x02\xce\x04\xce\xe6\x4d\xec\xc6\x2d\x7b\x0f\x41\xf1\x5a\x10\x14\x6d\x05\x43\xd6\x09\x2d\x76\x74\xc5\x70\x4a\x7a\x68\x8c\x26\x68\x8c\x03\x9f\xfc\xcd\x8a\xd2\x27\xaf\x98\x53\x5c\x3f\x77\x3d\x3e\xc6\x2b\xe0\x63\x6c\x72\xf8\x0a\xf0\x8b\xd2\xb1\xeb\x31\x3b\xde\x75\xc2\xec\xf0\x97\xe0\x5e\xc1\x30\xb4\x9f\xc7\x57\x4e\xef\xaf\x0f\xec\x35\x31\x3a\x1a\xc4\x85\x75\xe4\xa6\x65\x20\x1d\xcb\xe8\xa2\xd3\xba\xbc\x2e\x64\xc6\x7a\x2b\xb3\x16\x1a\x46\xe3\xdd\xb5\x27\xd8\x18\xed\xdb\xb0\x27\xe7\x66\x97\x09\x20\xeb\xd5\x76\x0b\x93\x40\xd6\xd1\x6e\xd6\xcb\x07\xf1\xf4\xf0\xb6\x72\x42\x8a\xc2\x3a\x9b\xe5\x85\x0c\x9c\x4b\x95\x08\x34\xe7\x49\x6c\xa2\x96\x82\xd5\xf2\x1d\xf8\x68\x64\xbf\x40\x6e\x33\x6e\x33\x12\x19\x6d\xab\xa8\x8e\xb3\x2c\xfb\xc3\x6f\xe2\x5b\xcf\x00\x09\xe4\xdf\xdd\x66\x81\x84\x2b\xbb\x69\x26\xc8\x8a\xc1\x2d\x13\x3d\x36\xcc\x06\x09\x7a\x5c\xea\x74\x72\xb3\xeb\xe4\x78\xaa\x12\xcb\x06\x31\x41\xb5\x32\x46\xdb\x23\x65\xa4\xf8\xf3\x38\xc3\x02\x27\x09\x49\xa8\x4c\x9f\x2d\x30\xf1\xb4\xec\x7d\xd4\x67\x55\x70\x63\x9f\x61\x79\x3a\x31\xa4\xe8\x06\x62\x8b\xa7\x29\x8e\x44\xce\x42\x9c\x1f\xbf\x31\xc8\x15\xd7\xca\xe1\x5e\x00\x93\x4e\x34\x87\x4a\x7d\x53\x4c\x05\x23\xb2\xb5\x2e\x1a\x89\x72\x41\xd5\x62\x6c\xcb\xcc\x75\x3f\x70\xb7\xf6\xcb\x53\xfb\xe1\x72\x87\xad\x4b\x91\x76\xfd\xf9\xb2\x76\x19\x11\x50\x33\xc3\x55\x7f\x08\x4a\xe9\xd9\x14\x78\xe2\x0b\x6f\x40\x28\x66\xed\xda\x6e\x0b\x21\xc6\x4f\xe3\x20\xab\x63\x1c\x55\x89\x63\xd5\x61\x6d\x02\x61\x59\x36\xc9\x67\x86\x21\x69\x71\x8a\x3e\x03\xe4\xbe\x0d\xdd\x36\x4d\xeb\x01\x07\x9e\x4d\x30\x16\x16\x1b\x13\xe4\x65\x5b\xa5\xaa\x65\x9c\x98\x31\xae\x9a\x8b\x2d\x2d\x19\xec\x20\xf8\xaa\xc3\x88\x83\x4e\x76\x34\x6c\x7d\xd0\x85\xc8\x33\x45\x27\x75\x9c\x90\x1d\x96\xe0\x1b\x24\x90\x91\xec\x6c\xfc\xa5\x6e\x4d\x5d\xbe\x12\x27\xb6\xb3\xd3\xf2\xbf\x05\xd5\x71\x70\x2b\x94\xcd\x12\x52\xca\x25\xba\x4a\x29\x50\xa1\x39\x3f\x60\xfd\xd5\xd4\x59\xb6\xcd\xbe\x77\xd1\x0b\x18\xaa\xfb\x19\x13\xd1\xd1\x88\x0d\x24\x7a\x22\x88\x11\xb3\x84\x4d\x75\xfb\xbc\x49\x19\x0a\xa1\x4c\x88\xee\xc9\x87\x5a\x68\xe1\x81\x2a\xe9\x6b\xf1\x98\x3e\xa6\x38\x91\xe4\x40\x37\x0c\x25\xfc\x14\x87\x18\x40\x8c\x9e\x04\xce\x32\x22\x46\xcc\x46\x94\x83\xb7\x83\xf3\xc4\xb4\xdf\x16\xe9\x68\xd7\x80\x8c\x23\x1c\xcd\x5f\x68\x8f\x30\x24\x04\x44\x73\x12\xbb\xd4\xda\xf2\xf6\xb8\x79\x1b\x83\xf5\x1a\x9b\x75\x3e\x75\xb5\x64\x0e\x6c\x27\x49\xa4\x39\x8a\x2f\x2d\x9a\x11\xa1\x47\xad\x69\xf8\x91\x30\x44\xa7\x6e\x1c\x36\x14\x05\x3d\x81\x5b\x48\x93\xfe\x23\xa6\x89\xc9\x55\x77\x5d\x3b\x21\xd0\x98\xdf\x47\xcc\x78\x6f\x59\x54\xca\x92\xa3\x8c\xca\xb9\xe6\xd4\x39\x38\x04\x41\xcd\x58\x4b\xf2\x8c\x63\x59\x36\x32\x1a\xf5\x8d\xfe\xa3\x64\xde\x38\x2c\x65\x00\x45\x01\x16\x0a\xc4\xfe\xb9\x72\x36\xcb\xe4\xcc\x3e\x92\xbc\x1e\x49\xde\xbc\x36\xfb\x18\x4d\xee\x0f\xcb\xba\x11\xe5\x6d\xdb\xbf\x0b\x09\x72\x87\x91\xe5\xaf\x1c\x82\xfd\x3c\xd1\xd7\xaf\x1b\x2e\xff\x1c\x91\xf2\x7d\x3c\xf9\xdb\x8b\x27\x6f\x3f\xb6\x6b\xc5\x94\xaf\x00\xf7\x71\xbd\x6c\x1b\xc0\xeb\x01\x67\x9e\x35\x88\xd7\x87\x4c\x04\x5f\x74\x0c\xe4\x2d\x10\x71\xfa\x60\xde\x67\x0a\xe6\x6d\x58\xe2\xf5\x02\x7a\x37\xb2\xad\xbc\x7c\xac\x61\xb5\xc2\xf9\x73\xc6\x1b\xae\x08\xb1\x91\xf9\x64\xfc\xec\x47\xaf\x71\xce\x5d\x4f\xe0\xcf\x9e\x28\x8c\x48\x24\x34\x9d\x4d\x48\x1c\x83\xfd\x5e\x71\x5b\x9f\xb2\xa0\x1d\xa7\x87\x69\xe6\x8b\xa5\x26\x76\x9c\x70\x36\x93\x34\x36\x99\xf5\xa6\x12\x7a\x49\x4b\x84\x8c\x52\xd8\xdf\x24\x21\xc2\x99\x7f\x05\xfa\x4a\x52\x2d\xf7\x07\x26\x61\x81\x62\x4e\x24\x7b\xaf\x8c\x56\x86\xd9\x02\x3d\x30\xfe\x94\x90\x78\x06\x3b\x54\x1d\xcc\x21\xa2\xe4\x00\x51\xe5\x3f\x13\x90\x82\xca\x73\x35\xd2\x63\x87\xa0\x1e\x23\x02\x12\xfb\x6d\x50\x89\xd5\x37\xf3\xf5\x11\x42\xe7\x0c\x4d\x71\xa4\x0e\xca\x35\xe0\x63\x6e\x4a\x6b\x6a\x35\x27\x98\x78\xd1\xc8\xb3\xc5\x9a\x36\xc6\x96\x56\xa8\xcd\x9d\x37\x4d\x00\x83\x84\xe2\xad\xc2\x82\x1e\xf1\x36\xc0\x79\x9f\x72\x69\xfd\xc7\x88\x33\x7f\x98\x2c\x3a\x85\xc7\x0a\x85\x0a\x83\x06\x77\x93\xf1\xb8\xd5\x4c\x53\x99\xca\xba\x63\x29\x62\xb8\x6c\x61\x43\x6b\x63\x87\x76\xcd\x72\xc7\xfc\x89\x49\x25\x08\x4e\xad\x5d\x53\x33\x6f\xf0\xff\x9b\x08\x2e\x3d\x7a\x2a\xcc\xa5\xbd\xce\x16\x5f\x50\xf6\xa0\x77\xb7\x40\x47\x85\x3a\xb1\xd0\x73\xd3\xa6\x65\xfa\x0e\x21\xa7\x9c\x19\xdf\xc6\x36\xfb\x27\xe9\x8c\xe1\x64\x4d\xb5\xb1\xb6\x72\x75\x77\x84\x33\x07\xd9\x0b\x58\xdf\xcb\xc6\x4e\x81\x4c\x8f\x6b\xa9\xe5\x95\xf9\x86\xce\x10\x8c\x62\x92\x11\x16\x13\x16\x2d\x80\x44\x18\x00\x0f\x08\x86\x13\x84\xe1\x3b\x9c\x1c\xa1\x33\x13\xe9\xee\x65\x26\x7b\x51\xc2\x15\x99\x62\x46\xa7\x5a\xf4\x02\xfb\x91\x1d\xe5\x88\x99\x61\x3a\xf3\x6d\x50\x7c\xd7\xaf\x58\xc3\xce\x7c\x4f\x19\x2e\xa5\x16\x6c\x70\x9e\x92\x7c\xad\x58\xd7\xc0\x10\xb4\x68\x83\x0c\x56\x78\x15\x8a\xef\x1a\x9b\x81\x24\x94\x2d\x46\x13\xa8\xaa\xaf\x2f\x21\xb3\x48\x18\x29\x0c\x36\xe2\x39\x49\xb2\xa0\xf4\x67\x86\x85\x92\xee\x68\x1b\x14\x4b\xcd\xb7\xd3\x9c\x19\x08\x03\xa3\xbb\x3f\x59\xb0\x42\xeb\x1e\x28\x1a\x3f\x1a\xb1\x73\xf5\x5e\x6a\xce\xc7\xd9\x2c\x59\x20\x1c\x3f\x52\x59\x60\x08\x47\x9c\xc9\x3c\x25\xa2\x52\x51\xdb\xc4\x8e\x21\xec\x48\x53\x8f\x4d\x4b\xd1\x8f\x38\xa1\xb1\xee\xd6\xdc\xda\x33\x34\x21\x53\x2d\x91\x64\x58\x48\x67\x63\x6a\x70\x12\xda\xcd\x8d\xf5\x5a\xbd\x1a\xb7\xfc\x29\x64\x88\x28\x2d\x78\x27\xb6\x5a\xe5\x71\x95\x73\xda\x55\x5f\xc2\x35\x27\xb5\x49\xa1\xe5\x22\x83\x5d\x85\xb3\x55\x18\x1b\x0e\xe7\x29\x37\x41\x21\xba\x1f\x27\x9d\x9a\xc1\xad\xc5\x01\x2a\x13\xb4\xa3\x36\xa6\xcb\x90\x6b\x12\x0a\xd7\xb5\x54\x58\xd1\xc8\x0a\xc2\x5c\xd8\x8b\xc3\x5e\x2c\xed\x5b\x7b\xb6\x25\xa6\xac\x8c\x70\x52\xdf\xe1\x25\x7e\x28\xf3\xfe\x72\xde\x6a\x8f\x9b\x69\x7b\x69\x0e\x46\xc4\x93\x64\x1d\x84\xe0\xca\xcc\x4f\x8b\xcf\x97\x8f\xa8\xe8\x47\x6f\x80\xdb\x0b\x38\x35\xc6\x9b\x87\x13\x2b\xf3\x49\x65\x77\x29\x7c\xc9\xdc\x6e\x0b\xeb\x2d\x1c\x31\x3e\x35\x05\x1e\xdb\xfc\x7c\x99\xe0\x29\x5d\x07\xfb\xcb\xb8\xbe\x6e\x5c\x5c\xde\x8a\x88\x0c\x17\xbd\x07\x95\xd9\x0d\x79\xd9\x1e\x21\x82\x1b\x33\x23\x01\x2e\x39\x43\x29\xce\x36\x5a\xf0\x55\xf6\x8b\x01\x4a\x8d\xf1\xc8\xae\x9e\x34\xe5\xff\x1f\xc8\x02\xa0\x81\x92\x27\xbc\x28\x32\x55\xda\x50\x9d\xd8\x5a\xe4\x70\xaf\x5f\x3f\x67\x53\xbe\xc6\xe1\x2c\x32\x4b\xec\xe9\xc3\x8e\x66\x83\xf3\xe7\xa3\x24\xcd\xee\x9b\x35\xed\x72\x1e\x4f\x9b\x88\x7a\xed\x93\xe9\x56\xf0\x39\x95\xa9\x90\x89\x84\x7a\xd4\x3a\x77\x6b\xf9\x68\x05\x2d\x22\x18\xce\xf2\xa5\xfa\x54\xa2\xc3\x9d\xaf\x51\xa5\x1d\x64\x74\x76\x17\x5e\x73\xdd\xdc\xea\x0b\xac\x99\x3d\x24\x9d\x16\x6b\xcb\x54\xba\xf5\xd0\xa9\x5c\x8f\x1e\x93\xaa\xf9\x84\xae\x84\xde\x5c\x47\x57\x9c\x6a\x49\xc8\xa8\x0f\x85\xaf\xde\x06\x2d\x4f\x69\x42\xe4\x11\x3a\x6f\xd0\x1b\x5d\xc8\xb0\x77\xb1\x99\xe0\x29\x27\x3d\xe5\x82\x06\x75\x53\x9c\x8c\x84\x28\xa0\x3b\x87\xd6\x28\x41\xf4\x98\x23\xe3\x0d\xe3\x06\x8a\x0a\xe2\x95\x04\xd5\x3c\xcb\x08\xab\x0a\xa4\x68\xcd\x0b\xa8\xcd\x3f\x36\x32\xbc\xff\x80\x1b\x2f\x32\xb6\xa5\xa1\x8a\x51\xb5\x6c\xe9\x2e\xf0\xe0\xbb\x47\x64\xbb\x5e\xef\xf4\x17\xf5\xbd\x69\x1c\xe1\x5d\xb9\xf5\xb5\x47\xe7\xa5\xfc\xf5\x5d\x7b\x1f\xe0\x53\x67\x67\xc4\x68\x2a\x08\x98\xa2\x53\x9f\xe2\xc8\x62\x22\xa4\xe2\x1c\xee\xbb\xdb\xb3\x1f\x8f\xef\xcf\x11\x51\x11\xd4\xea\x1f\xb1\x48\x3e\x1e\x68\xf1\xf8\xef\x39\x51\xfa\xe7\x96\x14\x00\x9a\x12\x26\x81\x13\x50\x55\x4b\xae\x6e\x5e\x48\xb7\x30\xfa\xbf\x67\xe5\xef\x97\x90\x7c\x2d\xa1\x04\x68\xd7\x81\x85\x03\x99\x02\xd0\xac\x59\x5a\xd9\x40\x31\x46\xc5\x1b\x36\x15\x9b\xd9\x20\x80\x94\xfd\x2d\x67\x6b\x0a\x5d\xa7\xc5\x47\xc1\x28\x5a\x64\xba\x34\xc3\x80\xc4\xb6\x5e\x64\xaa\xf9\xa6\xb1\xf5\x55\x4c\xa4\x48\xd4\x71\x2a\x7b\x51\x97\x07\x29\x41\x08\xb0\x10\x4f\x4f\xf6\xae\xb7\x89\x91\x7e\x62\xc1\x47\x47\x23\xf6\xc9\x99\xc6\x8b\x5f\xa5\x6b\xc2\x44\x3b\x7b\x80\xba\x72\x2b\xd0\x6c\x4c\xa5\xff\x01\x60\x86\x65\x9e\x28\x53\x30\x62\x4a\xb5\x96\xee\x06\x6a\x9e\x34\x71\x09\x81\x59\x34\xbf\xe4\xf1\x76\x88\x5b\xd3\x31\x49\xd6\x91\x44\xcf\xa7\xc3\x44\x6a\xfa\x8e\x1e\x5a\x4e\xe7\x26\x25\x51\x8a\xc9\x80\x1c\xe8\x40\xf3\x8d\x8e\x63\xec\xb1\x89\x29\x3f\x41\x10\x18\x53\xab\xf1\xc4\x26\x65\x50\xef\xa2\x95\xd4\x8d\x2d\xd5\x04\xf2\xf9\x20\x1d\xe8\x05\x61\x35\x62\x22\x67\x00\x81\xea\x5d\x2b\x18\x49\x22\xa8\xf1\x71\x44\xce\x2c\x63\x8d\x64\x33\xcd\x26\xb4\xe4\x07\xfe\x35\xce\x40\x3f\xe3\xb9\x84\x98\xc0\x94\x28\x7d\x41\x7d\x05\x65\x96\x8c\x73\xeb\x00\x65\x82\xa6\x54\xd1\x47\x22\xbf\x6e\xd8\xba\x53\xac\x70\xc2\x67\x03\xa1\xe8\x14\x47\xea\x0e\x6f\xa5\x81\x63\xdb\xcc\xa6\x81\x12\x6e\x18\xe8\xfc\x4c\x2f\xfe\x8c\x30\x22\x60\xa2\x5a\x27\x6f\x3e\xc2\xf0\x64\x23\xce\x0d\x45\x1f\x22\x03\x93\x2f\xbd\xc5\x02\xe7\x8a\xa7\x5a\xbf\xc5\x49\xb2\x00\xf8\x7b\xfd\x64\x8e\xe5\xdc\x6d\xb4\x09\xec\xe9\x72\x37\xd9\xc5\x3d\xc5\xd1\x9c\xdc\x2a\xac\xf2\x46\x63\x70\x65\x94\xef\x08\xcb\xd3\x77\x27\xe8\x7f\x8a\x39\x9e\x0e\x4e\x7f\x18\x8e\xcf\xce\x6f\x07\xdf\x5f\x0c\xcf\x82\xf9\xd8\x27\x9f\xce\x6f\x6f\xeb\xbf\xfe\x70\x7e\x57\xff\xf1\xfa\xea\xfa\xfe\x62\x70\xd7\xd4\xca\xc5\xd5\xd5\x8f\xf7\xd7\xe3\x0f\x83\xf3\x8b\xfb\x9b\x61\xc3\xa7\xf7\x77\xed\x0f\x6f\x7f\x3c\xbf\xbe\x1e\x9e\xb9\x55\xf9\x6b\x70\xba\x20\xe0\x07\x82\xf1\x9a\xa7\x51\x3d\x80\x87\xa8\xfc\xe2\x09\xba\xaf\x02\x73\xda\xa8\x19\x93\xd9\xf8\x84\xa5\xe6\x61\x10\x1c\x35\x62\xc8\x7d\xae\x17\xa5\xed\x53\xe3\x57\x8c\xe6\x04\x25\x9c\x3f\xe4\x99\x65\x6d\x26\x3d\x82\x71\x63\xf8\x21\x32\x68\xed\x87\xf3\xbb\x93\x3a\x40\xa8\x6f\x2c\x00\x30\x70\x67\x00\xc6\x85\x1d\x3b\x05\x5b\x4a\x26\xc8\x23\x1c\x56\x6f\x2a\x0d\x7a\xf0\x3b\xb3\xac\x1f\xd3\x1a\x66\xaa\xd2\x4d\x1c\xdb\x9a\x5a\x6e\x62\x41\xc3\xe5\x7d\x5d\xb6\x9a\x7e\x39\x0c\x22\x3a\x9a\x90\x08\xe7\xc6\xfb\xaa\xef\x29\x21\xb8\x08\x07\x5c\xd0\xc3\xee\x1a\xb5\x74\xd4\xd8\x60\x65\xcf\xf4\xc4\xe5\x03\xcd\x32\x12\xbf\xab\xcb\x2f\xe5\xe2\x4b\x12\x4e\x9f\xee\x33\x38\x93\x5a\xaf\x07\x9d\xdf\xc1\xf9\xce\x2d\xec\x3a\x95\xc6\xc3\x54\xf8\xdc\x00\xa9\x4e\xdf\x09\x1e\x76\x95\x82\x3f\x18\x2b\xf4\x44\x20\xc9\x26\xb7\x78\xe6\x46\xf7\xd6\x67\x1b\xba\x33\x9e\x0c\x57\x44\xa3\x94\x7c\xd3\xca\x8c\x77\x21\x70\xeb\xef\x25\x69\x62\xc4\x5b\x64\x4a\x9c\x99\x46\x81\x3b\x3b\xe7\x3c\x8c\xb8\xc5\x67\xe4\x6e\x83\x06\x0b\xf9\x12\xf9\xaa\x7e\x23\xad\xb8\x2c\x34\xdb\xee\x32\x1e\x97\x1d\x5a\x42\xf0\xeb\x3e\xb0\x12\xca\xdb\xca\xb5\xba\xe3\x31\x5e\x68\xe2\x80\xa8\x18\x99\x67\x19\x17\x0a\xb5\xb4\x61\xbc\x23\x66\x7c\x70\xe7\xd8\x79\x78\x1e\x07\x8d\x68\x09\x43\x36\x80\xec\x76\x4b\x98\xb3\xeb\x5a\x30\x8e\x10\x79\x03\x14\x41\x8f\xc6\x9d\x96\x54\xea\x12\x85\x36\x09\xbf\xdb\xc4\xc2\x65\xfa\x82\xef\x5a\x1c\xa2\xa9\xf7\x2b\xd7\x42\xe3\x96\x27\x64\xaa\xc6\x8d\x5e\x9f\x25\x06\x4e\xdd\x22\x6b\xcb\x31\xa6\xb3\xf9\x0e\x5a\xec\xae\x25\x7c\x67\xfd\xa5\x5a\x35\x08\x2c\x04\x82\x73\x65\xe4\xd3\x42\x87\x41\x6e\x35\xc1\xbc\x60\x3b\xb5\xd1\xc1\x5e\x08\xd4\x32\xff\x03\xe3\x4f\xcc\x5b\xf6\xe5\xd1\x88\x0d\x31\x94\x58\xf3\x8a\x88\x0b\x1a\x06\x2d\x60\xa5\xfc\x5f\xaa\xd8\xf4\xa2\x61\x25\xed\x10\x56\x05\xdd\xdb\x72\x94\xc9\x02\x15\x55\xb9\x4a\xdf\x75\x39\x3d\xc6\xea\xed\x44\x40\x33\x61\x5b\x4f\x46\x91\xcc\x5a\xe6\xcd\x3c\x0b\x07\x2a\xb8\xdd\x75\x57\x47\xe8\x67\x67\xf9\x81\x08\x9d\xa2\x9a\x9c\x32\x37\x4e\x82\x17\x0e\xa3\xa7\x69\x61\x77\x01\x7b\xb3\xeb\x98\x9d\xe5\x0b\xec\x53\xfc\x1b\x56\xb9\xa4\x80\x33\x66\x2c\xb2\x6b\x04\x28\x9e\xfa\x8f\x6e\xc9\xf2\x08\xe6\x0f\x50\x1c\xc6\x3a\xac\x41\xe8\x60\xc9\xe2\x7f\x99\xcd\x32\xb9\x09\x0e\xf6\xdd\x16\xeb\xb0\x1e\x54\x7d\x7e\xc0\x03\x68\x52\x17\xd0\x94\x26\x09\xc8\x01\x47\x68\x00\xb5\xd5\x20\xb4\x5f\x5f\x85\x2e\x0e\x8c\xce\x18\x5f\x15\x7a\xd2\x42\x4c\x51\x40\x4c\xb7\xed\xc4\x24\x81\x9a\x8a\xcc\xae\xdd\x50\xd4\x0e\xb2\x7c\x35\x6f\xc1\x75\xc8\xbf\xee\xb9\xbd\x6b\x28\xef\xaf\x11\xc6\x55\x1b\x6e\xf0\xe1\xbf\x9a\x87\xfe\x31\xc7\x02\x33\x05\xc1\x49\x56\x74\x17\x24\x08\x92\x25\x9f\x21\xfc\x8f\x19\x43\x30\xfc\x14\x6e\xae\x73\xf9\xcf\x28\xa4\x72\xc4\x07\x88\x1e\x91\xa3\x03\x5b\x20\x59\xe6\x93\xe2\xcd\xb9\x96\x1c\x46\xac\x16\x22\x72\x84\x06\x89\xe4\xf6\x0b\xc2\xa2\x04\x6a\x19\x06\x71\x54\x9e\xf2\xad\x5b\x69\xb2\x00\x05\x05\xb6\xb2\x68\x9e\xdb\x07\xc1\x87\x23\x86\xa5\xf1\x89\x27\x70\xd2\x8b\xdf\x9b\xea\x95\x96\xe2\x24\x9e\x11\xaf\xb6\x76\x0d\x3d\xdb\x26\x99\x42\x16\xcb\x36\x08\xde\x80\x8d\x29\x42\x77\x82\x9c\x5c\xf4\x15\x56\x28\x21\x58\x2a\xf4\xed\xd7\x6b\xc5\x86\xb8\x09\x16\xdc\xd5\x1e\xdf\x22\xa4\xd9\xc5\x44\xb6\x15\x5d\x86\x42\x43\x08\x23\x46\x9e\xc2\x80\x1d\x0e\x31\x56\x8f\x54\xe6\x50\x1e\x32\xc8\xc2\x30\x05\xfe\x4c\xae\x16\x84\x95\x1a\x95\xa9\x85\x8f\x38\xf4\x39\xeb\x3e\xb5\xc3\x6a\xa0\x2c\xab\x3c\x51\xa3\x9e\x01\x48\x43\x11\x9d\x38\xc7\x6a\xc4\x2c\x67\x75\x61\x23\x41\x29\xaf\x41\x92\x94\x23\x02\x31\x04\xbd\x32\x3d\x61\x28\x6e\x79\xe4\x17\xe8\x12\xd4\x2f\x1f\x44\x56\x2e\x74\xed\x0f\x8b\xd6\xd4\x46\xcc\x67\xc0\x87\x6d\x37\x4a\x3b\x4d\xf6\xe5\x17\x14\x82\x1b\xba\xbf\x30\x55\x46\x3b\x08\xc3\xed\x55\xe0\x97\xf8\x63\x6a\x36\xfd\x25\xb2\xf1\xae\x3b\xe8\x2e\x2a\x37\xdb\xc7\xe1\x9a\x7d\xe2\x0d\xe6\xf6\x96\xcd\x0d\x64\x8b\x6d\x14\x70\x1f\xcd\xf8\x52\x1e\xdf\xd2\xd0\xcf\x63\xc8\x4e\x58\xcd\x05\x8b\x68\x7f\xc7\x3a\xc0\xd0\x4d\xe3\x20\xf8\x38\x88\xcc\x84\xe0\x74\xc7\xf8\xec\x9b\x2d\x9e\xd7\xec\x6d\x4f\xff\xa0\x98\xbf\x9b\x8a\x0f\x82\xab\x4f\xbc\x5d\xd8\x1b\xc4\x7f\xc3\x11\x04\x50\x42\x4f\x2e\x74\xb3\x9e\xa2\xef\x80\x0d\x31\x18\xf3\x1b\xc5\x43\x5b\x30\xf8\x08\x0d\xe1\xa2\x71\xf5\x83\xf1\xd4\x39\x24\x82\x97\x47\x4c\x6b\x26\x2e\xa3\x37\x68\xbf\x4c\xe2\x4d\x27\xc0\xc0\x83\x6c\xe5\xcb\x49\x57\x83\x30\xb7\x69\x13\x0e\x9d\x04\xda\x00\x94\x59\x34\x9c\x9d\xa0\x98\x47\x0f\x44\x1c\x0b\x12\x53\x79\x02\xbe\x75\xd5\xea\xd4\x4b\xb5\xb6\xbd\xb5\xa4\xd1\xb5\x96\x7f\xbd\xf2\x6e\x0a\x45\x71\x21\x2c\xdd\x95\xbb\x3a\x40\x74\x0a\xea\x84\x0b\x75\x35\x69\x2b\x2e\x01\x9a\x30\x25\x16\x19\xa7\x4c\x79\x53\x56\x65\x21\x9c\xa6\xa1\x85\xb6\xb6\x20\x6d\xb1\x8b\x18\x9c\x0d\xa7\x7d\x37\x27\x92\xb8\x80\x03\x33\x29\xc5\x91\xf1\xb2\x18\x76\x91\x61\x35\x97\x90\x63\x53\x5e\x03\xab\x74\xc1\xa7\x7a\x85\x70\x06\xf1\x0a\xc6\x4a\x51\x7c\xe4\x33\x41\xa4\xa2\x49\x32\x62\x8c\x90\x58\x22\x48\x87\x79\xdf\x98\xcb\xa5\x3f\x3d\x40\x38\x8e\xd1\xff\xfe\xea\xc3\xc5\x2f\x77\xc3\xf1\xf9\x25\x18\xad\xcf\x2f\x86\x5f\x1f\xf8\x1f\xaf\xee\xef\xfc\xaf\xc6\xc2\xf2\x48\x04\x4a\xf1\x03\xa8\x78\x4c\x1a\xf9\x0f\xf2\x25\xc2\x91\xba\x2c\x37\xfd\x44\x12\x17\xe9\x6a\xc5\x14\x0f\xaa\x63\xf7\xb0\xb5\x9a\x9d\xb1\xf9\xad\xa1\xfc\xde\xf8\x4f\x96\xd3\xa0\x23\x1e\xdf\x85\x13\x03\x53\xc2\x20\x1a\xdb\x5a\xfb\x0a\xdd\xb7\x20\x38\xc2\x66\x94\xb5\xc5\xe3\x11\xf6\xf8\x9c\x42\xfc\x8f\x64\xf1\x93\x56\xaf\xaf\x31\x15\x9d\x69\x6f\xc8\x1e\xa9\xe0\x0c\xa6\xe6\xcd\x5a\xfe\xc4\x68\x3d\x1d\xcb\xea\xa1\x92\x46\x16\x86\x18\x8d\xac\x35\xe6\xb3\x09\x1a\xe4\xd5\xa7\x6b\x01\x07\xc8\x67\x25\x5c\x3e\xa5\xc7\xb5\x70\xc9\xfd\xfe\xa2\x29\x68\x70\xc4\xee\xae\xce\xae\x4e\x10\x49\xf0\x84\x0b\xc8\xaf\x32\x21\x41\xae\x09\xbb\x60\x50\x47\xde\x37\x54\xca\xa5\x3d\x40\x59\x91\x4b\x1b\x1a\xd1\x8e\x4c\x1b\xab\xca\xcc\x72\x51\xcf\x44\xdd\xad\x0a\x68\x27\x7b\xcd\x45\x97\xeb\x5f\xbf\x06\x4b\xc7\x33\xad\xc8\x55\x38\xaf\xbd\x9b\xa7\x04\x9b\x0a\x8f\xc6\x2d\x64\x6d\xf9\x36\x80\x35\x49\x4a\x05\x63\xf4\xc1\x91\x47\xd6\x05\x5f\xbc\xc9\x19\xfa\xf1\xcf\x12\x4d\x72\x35\x62\xe5\x36\x38\x43\x83\x9f\x6f\xd1\xf7\x58\x45\xf3\xaf\x47\xec\x4a\xab\x99\x3f\xfe\xb9\x25\xe9\x7f\x6d\xbc\x1a\xbd\x26\x67\x58\xe1\x0b\x8e\x63\xca\x66\x4d\x60\x35\x05\x9c\xf7\xf0\x6e\x70\x82\xae\xac\x0e\xef\xf3\x74\x0b\x80\xa9\xa0\x21\x60\xc8\x30\x11\xc7\x45\x80\x95\xb3\x32\xa0\x87\xd1\xcc\xe0\xc2\x1a\xb1\x3b\x83\xd2\xa3\xb9\x2a\x55\x28\xe3\x16\x52\x5e\x6b\x65\x06\xbf\xc8\x98\xb2\xad\x25\x51\xaf\x0e\x90\xb1\xdf\x0c\x2b\x8f\x81\x3c\x53\x67\xf6\x23\x06\x0a\xba\xcf\x9d\x4c\x78\x84\x13\x88\xc9\x3b\x0c\x6c\x7a\x5a\x6d\xe7\x39\x24\xb2\x41\x30\x0c\x5b\x94\x43\x67\x7d\x6e\xa5\x17\xca\xc2\x8d\x02\x03\x00\xec\xa3\xf5\xc6\xa6\x5c\x73\x1c\x83\xce\x01\xc6\xb7\xc4\xac\x8e\xfe\xd0\xa3\x75\x98\x65\xd1\x4f\x1d\x3f\x82\xca\xb7\xc6\xad\x88\x23\x30\xdf\xb3\x05\x84\x6f\x03\x0c\x35\x87\xd0\x8f\x82\x3b\x5b\xa2\xac\xed\xa2\xbf\x13\x83\xcf\x46\xcc\x44\x0a\x96\xf6\x25\xcc\x33\x0f\x7a\xe7\x0c\x02\x19\x8b\xeb\xd2\x0b\x18\x99\x0d\x6c\xb4\xb2\x7e\x26\xc8\x61\x4c\x14\x11\x29\xd8\x7b\xc2\x35\xd5\x37\xec\x11\xba\x09\xd5\xeb\x98\x47\x79\xea\xb0\xf6\x20\xe1\xcf\x46\xc0\xd9\x4b\xd4\x53\x88\xb9\xd8\x57\x51\x3c\x16\xd1\x9c\x2a\x02\x59\x79\x9d\xf5\x63\x43\x30\x83\xf0\xd3\xba\xa4\xde\x2e\xf8\x02\xef\xd8\x2e\x6a\xcd\x34\x34\xce\xca\x2d\x95\x5a\x5b\x0d\x15\xb6\xa2\x6e\xc3\x65\x81\x07\xc6\x05\x08\x5b\xe4\x73\xc6\xc1\xc8\x6d\x72\xaa\x78\xfc\x5e\xa2\xf3\x6b\x2d\x01\x69\x8d\xd7\x9f\xc1\x5c\x2a\x13\x5c\x06\xe9\x3a\xe6\x6b\x93\x2e\x70\x80\xbe\x31\x25\x49\x23\xf4\xd9\xfd\xf1\xa7\xff\xf8\x8f\x3f\xfe\x69\x9d\x74\x12\xa7\x90\x43\xbb\xc5\x1a\x79\x74\xff\xb2\x48\x14\xee\x40\x9d\x53\x6d\xb1\x0b\xf6\x00\xb6\x2d\xff\x26\xb8\x3f\x41\xec\x10\x9e\xd9\x13\x2e\xc3\x93\x89\x4a\x47\xb3\x88\x24\x90\x44\x1d\x94\x39\x84\x17\x76\xad\x44\xff\xbf\x96\xc0\x6a\x8c\xf5\x51\xd9\x2c\xc6\x89\x26\x5e\xbc\xd6\x8d\xa0\xaf\xac\xfd\x4f\x81\x03\xf1\x6b\x77\xc1\xf1\x24\x26\xc2\x96\x33\x76\x26\x3b\x6f\x48\x04\xe6\x40\x3e\x67\x09\x8f\x1d\x60\x96\x24\x19\x06\x01\x42\x33\x83\xa3\x11\x1b\xba\xea\xb6\xb6\xb6\x3e\x7c\x64\x3c\x2f\x53\x1c\x19\x9c\x28\x89\xbe\xfa\x7c\xa2\x7f\x3b\x40\x8b\x13\x08\x22\x3d\x40\xff\x38\xb1\x69\xfd\x58\xa8\xb1\xfe\xe9\x6b\x27\x6b\xdb\x26\x60\xd0\x54\xa2\xf7\xc7\x8f\x58\x98\xa2\x78\xc7\x66\x44\xef\x2d\x67\xf5\x65\x4a\x42\xd9\x3c\xe1\xfc\xc1\x06\xd8\xd6\x3e\x3c\x76\x10\x21\x40\xde\xde\x6f\x62\xb6\xde\xe7\x3b\x2a\x74\x68\x6b\xf3\x1e\x65\x13\x74\xf4\x37\xc9\x19\x3a\x5a\xe0\x34\xb1\xbf\xba\xa7\x36\xfe\x17\x4b\xe4\xaa\x33\xbb\x20\x9f\x64\x61\x2c\xa5\xdf\x27\x7c\x02\xb3\xfa\xe4\x66\x6a\x22\x68\x61\xa0\xc5\xed\x53\x5c\x58\x76\x22\x56\x92\x32\x40\x07\x29\x57\xe6\x15\xe0\x71\x4d\xb3\xfa\xec\x87\xf4\xdf\xc6\x2f\x0c\x8b\xe2\x92\xf8\x8c\x71\xd8\x47\xaf\xe9\x46\x3f\xa3\xaf\x2c\x0b\xfa\x5a\xdf\x31\x36\x5c\xd9\x2c\x43\x53\x07\x0b\xdf\xc1\x2f\x41\x07\x94\x21\x93\x96\xb9\xe4\xcb\x7f\x1c\x1f\x1d\x1d\xf9\xaf\x2f\xf5\x54\xfe\x5f\x44\x95\x24\xc9\xd4\xb4\xe4\x6e\xb0\xc5\x88\x7d\x72\x50\xbc\xce\x78\x5d\x80\x0f\x41\x55\xe5\x88\x27\xe8\xb0\x30\xe8\xc6\x3c\x92\xe8\x77\x5a\xac\x0d\x96\x12\x7e\xd4\x7a\x5c\x0b\x30\x98\xc1\xfe\x7b\xa1\x43\x65\x0d\xe2\xd5\x63\x15\xe2\x8d\x78\xc5\x16\xcb\x10\xd7\x19\x68\x41\x53\xce\xb1\xc5\x24\x11\x42\xbf\x4c\x3e\x2b\x78\xd4\x02\xf9\xd2\x18\xca\xde\x7c\x53\xd6\xd8\x6d\x81\xfc\x62\xc8\xba\x65\x01\x2c\x30\x87\xe5\x0c\x66\x9e\x07\xa1\xfb\x44\x5f\x2e\x2c\x04\x87\x95\x79\x9a\x62\xb1\x38\x2e\x4e\x5b\x9d\x38\x0b\xa4\x77\xe0\x31\x89\x5b\x00\x70\xe1\x26\xf6\x68\xd9\x28\x06\x2b\x5e\xba\x1b\xcd\x9f\xdd\x08\x4a\xcb\x40\x40\x9e\x29\xac\x44\x58\xc4\x63\x4b\xd7\x45\xf6\x69\x59\x62\xf1\xef\xd4\x65\x15\x17\x11\x23\x0b\x63\x1c\x53\x26\x33\xda\xbe\xe1\x3e\x6e\x61\xdf\x7c\x0c\x65\xbf\xc8\x6c\x0d\xf7\xe8\xf9\xd5\xad\xfb\xa6\xfb\xa5\x0b\xeb\x50\x16\xd9\xb1\xd3\x12\x9d\x45\x42\xe0\xa7\xe2\xfa\x85\xd8\x0e\x63\x9d\xc9\x7d\x6e\xae\xf9\xf7\x29\xbf\xa6\x89\xbe\xb5\x80\xc6\x8f\x46\xac\xf4\xf3\x01\x22\x09\x4d\x29\xf3\xb1\x75\x86\xb9\xf3\xa9\x91\x9e\x1f\xa8\xd2\x5b\x26\xe3\x07\xcd\xc1\x1c\x00\x45\xa0\x52\x0d\xd8\xc2\x91\x8e\x77\x4c\x59\x0b\x44\x2e\xf5\xb8\x0a\x1d\x5d\x0b\xb3\xba\x89\x43\x2b\x90\xd2\x80\xf0\xe0\xfc\x8e\x98\x6e\xcd\x9d\xa5\x22\x5c\x38\x68\x2f\x68\xee\xd0\x41\xa4\x06\x1c\x00\xfa\x28\xc5\xfc\x7a\xf9\xb7\x41\x40\x19\xb2\x3c\xdd\x36\xd9\xc4\x86\x0f\xbf\x96\x99\xee\x5a\x10\x77\x53\xd9\xc4\x25\xc2\xf2\xd4\x1d\xa8\x35\x28\x6e\x68\xc5\x9f\x98\x44\x09\x36\x00\x00\xba\x21\x88\x7c\x3c\x30\x0e\xd2\x2c\xe8\xcb\x5c\x2f\xa6\x1b\x83\xba\x9e\x10\xf6\x95\xf9\xf7\xd7\xbe\x0e\xfe\x81\xbd\xcf\x85\x74\x98\x90\x76\xcf\xa1\x6a\x0f\x89\x8d\x0d\x1d\xf0\xf3\x66\x58\xc4\xc6\x5a\x1e\x6a\x15\x26\x83\x57\xcb\x5f\x0b\x9e\xa3\x27\x2a\xe7\x23\x76\xc7\x9d\xc1\x11\x31\xee\x11\x08\x0f\x40\x19\xad\xf5\x87\x25\x30\x01\x18\x75\x13\x05\x68\x26\xbc\x55\xae\x11\x44\xc1\x8e\x19\x8f\xc9\x76\xb8\x10\x77\x85\xaf\xc2\xf9\xaf\x05\x31\xf9\x60\x70\x53\xb4\xa5\xd3\x9a\x02\xff\x5b\x74\x0c\x4b\x80\x6c\x3b\x50\xa1\xed\x89\x6d\x0a\xb9\xe2\x6f\x35\x68\xc5\x69\x9c\x41\x36\x70\x69\xed\x3d\xae\xdf\xb6\x9b\x10\x95\x53\x55\x56\xae\x80\xbf\xfa\xcc\xdc\x23\x58\x76\x1f\x60\x8c\xd1\x4c\xf0\x3c\xf3\x29\xf3\x2e\xdd\xcf\x6c\x83\x95\x69\xce\xd9\x94\x9f\x58\x9d\xea\x82\xb2\x07\x43\xf1\xcf\xb5\x47\x06\xba\x91\xc4\x28\xf8\xdd\xdd\x61\x66\xc5\x0f\x11\x65\x51\x92\xc3\xc5\x27\x15\x8e\x1e\x0c\xfc\x64\x9b\xd1\x57\x7f\x33\x5e\x9d\x4c\xd9\x22\x31\xe5\x49\x62\xbb\x2d\x2e\xd0\xa2\xaa\xe0\x23\xc5\x08\xa3\xfb\x9b\xf3\xe6\xbe\x1f\x68\xdd\x99\xd3\x7c\x7b\x96\x09\x04\xfe\xe7\x47\xba\x56\xdc\x65\x05\x64\x9d\x94\x48\xdd\x1b\x97\xda\xd0\xe1\x34\x91\x7e\xc4\x8a\x6c\x9b\x09\x65\xa0\x55\xd6\x88\xd4\xab\x61\xd6\x2c\xb5\x1e\x6f\x09\xf8\x52\x80\xb5\x40\x68\x50\x3b\xf2\x4c\x18\xac\x05\x0f\xd7\xc0\x6e\x80\xf7\xbb\xcd\xa7\xf2\xee\x8a\xe9\x2c\x1f\x66\x42\xc8\x1a\x68\x03\xb7\xfa\xf5\x8e\x83\x2c\xbd\xba\x6c\x8c\x4f\xd8\xe0\xf1\x3a\x89\xb5\xb0\x04\xc6\x79\xa9\x82\x6c\x27\x82\x76\xe4\x68\xc4\x6b\xe9\x73\x44\xfc\x48\x5c\x18\x8e\x97\xc5\x5c\xbf\x33\xf0\x6d\xf1\x12\xdc\xaf\xb7\xd0\x36\x10\x7e\x20\xb6\x6e\x19\x36\xa1\xc5\xaf\x71\xda\xc0\xa2\x9b\x77\xa2\xe8\xf8\xcc\x7e\xfc\x49\x7f\xdb\xcc\x8a\x3e\x41\x16\x9f\x07\x4e\x49\x31\xd3\x27\xdb\xf5\xda\x62\x84\x34\x12\xe1\x46\x43\xba\xcf\x36\x1a\x90\xe9\xb1\x63\x25\x1c\xdb\x95\x6b\xe5\xc9\xd8\xe1\x71\x62\xec\x4c\x6a\x0e\x26\x88\x02\x41\x5e\x73\xb4\xb2\x29\xc2\xa0\xcd\x27\x58\xcc\x8c\x82\x24\x89\x92\x5f\x37\xec\x70\x91\xf3\xb0\xc5\x0e\x6f\x50\xa5\x2b\xf4\x7b\x82\xf8\xbd\xec\xa4\xf9\x51\x96\x31\xdb\xfc\xad\xec\xeb\xdd\x59\xa1\x89\xca\x10\x59\x2b\xe2\x42\x00\xb6\x68\xac\xcf\x4a\x3b\x66\xca\x96\xd5\x1a\x2f\x71\xea\x11\x01\x5c\xcd\x38\x9b\xdf\x65\x06\x37\x21\x00\xe0\xd7\x3e\x86\xad\xcb\x32\x86\x43\xb0\x65\x92\xda\x46\x30\x62\x03\xf7\x8a\xcf\x2a\x06\xdd\x4e\x18\x01\x1c\xe2\x43\x4d\x34\x34\xe8\x57\xb8\x58\x75\x3b\xb9\x96\x49\xac\x9b\xbc\x59\xad\x2c\xa9\xf5\x3b\x7f\x1b\x59\x0c\x79\x0f\x8d\xb6\x14\xbf\xff\x71\xfd\xc2\xbb\xcd\xc0\x2c\x51\xb5\x30\x6a\x53\xc7\xab\x75\x29\x87\x18\x61\x1b\x0a\x6b\xb1\x9a\x18\xd2\x64\x51\x90\xa9\x5e\x71\xa3\x93\x57\x3a\xab\x9f\x56\xb5\x15\x37\xa6\x38\x1d\x0b\xde\x5e\xe0\xa0\xc3\x32\xb9\x26\x4a\xf6\x9d\xb9\x01\x62\x5e\xa0\xbf\xe7\x38\x31\x97\x1b\xb3\xe4\xe8\x86\x0d\xa2\xf2\x77\x7f\x42\x03\xb8\x7d\xd0\x27\xe0\x8b\xe0\xe0\x87\xd6\x14\x47\x34\xcd\x88\x90\x9c\xe1\xd6\x4a\x1f\x0f\x7f\x96\x63\x8b\xa2\x3e\xc6\x51\xc4\xf3\x3a\x62\xfa\x1a\x33\x69\x68\x2d\x9c\x14\x46\x0f\xf9\x84\x08\x46\x4c\x35\x13\x78\x0f\xb9\xf7\x3a\x0d\x97\xe3\x5c\xcd\xbf\x1b\x47\x09\xed\x0c\xed\x0e\xd9\x45\x03\xfd\xd9\xa9\xf9\x6a\xd9\x04\x4a\xed\x97\x86\xce\x90\x79\x86\xcc\xb3\x23\xf4\x3d\x8e\x1e\x08\x8b\x51\x96\xe4\x33\x6a\xc1\x04\xe0\x86\x02\x76\x19\x98\x67\xcb\x13\x33\xb2\x85\x69\x5f\x5f\x43\x23\x96\xe2\x07\x83\x0d\x68\x85\xc8\x08\x27\xc9\x5a\x66\x06\x4f\x0f\x35\x54\x15\x97\xf9\xee\x2b\xc7\x98\xf3\xa1\xcc\xf9\x00\x83\x2a\x20\x48\xe6\x0c\x61\x00\x66\x79\x2f\x51\x9e\x39\x09\x08\x2c\x7d\x09\xf8\x5d\xcd\x24\xa1\x24\x30\xd5\x7a\xd0\x9c\x8c\x18\xc4\xb2\xba\x16\x17\x9e\xab\x84\xae\x7e\x1f\x72\xd2\x74\xf8\xa6\x06\x96\x60\x3b\x2f\x62\x0d\x80\x72\x05\x25\x74\x8c\xd3\x55\x73\xc2\xc0\x00\xd1\xbd\x65\xd0\x68\xba\x6f\x5a\x29\x26\xd7\x0a\x9a\xde\x62\xea\x97\x30\x67\xd4\x16\x13\xb0\x46\xf2\x20\x5c\xce\x79\x92\x8a\xef\xa9\x44\x12\x2b\x2a\xa7\xb4\xd1\x30\x13\x82\x41\x6c\xb3\xea\x78\x3d\x04\x8a\x06\xf4\x89\xca\x5a\xf8\xb8\xff\x23\xf4\x01\xec\x4c\x81\xec\xcd\x3d\x96\x43\x1b\x4b\x50\x73\xd2\x0a\x6a\xb8\x8b\x80\x19\x37\x83\xe0\xfd\xa5\xe6\x43\x9f\xe3\x71\x84\x06\x85\x7d\xdf\xa0\x59\x18\xcb\xfd\x8a\x19\x91\x44\x92\x4d\x88\xaf\x93\x29\x0c\x7c\xe0\x40\x40\x08\x64\x15\xa9\x7f\x2f\xa0\x6f\xfd\x30\x9f\x20\x8d\x12\x3f\x10\xb6\xcc\xde\xd1\x7d\x84\xc6\x20\xb5\x54\xe9\xf6\x96\x2e\x6e\x8c\x5d\x9b\x0c\xb0\xfb\xb1\x2b\x00\x44\xe8\xf4\x58\x2f\xb9\x16\xf4\xa3\x07\x9b\xbc\x61\xec\x9d\x16\x82\xe4\x69\xce\x65\x78\xce\xdc\xfe\x19\x5d\x51\xe4\xc4\x25\x69\x40\xf2\x8b\x5f\x60\x13\xf5\xc2\x78\x88\x50\x02\xa3\xf6\x87\xd4\xd8\x72\xfd\x7e\x23\xc7\x42\x61\x19\xc0\x4f\xe4\x9a\xaa\x9f\xe6\x1f\xff\x2c\xaf\xe0\xc4\xee\x22\x17\xbe\xb9\x14\xd6\xf6\x71\xe8\x1b\x5a\xe0\x7d\x84\x55\x51\x47\x0b\xc7\x1e\xbd\x21\xe3\x31\x2a\xc8\x6b\xfd\xa2\x59\xaf\x3f\xad\x4a\xb1\xad\x4e\x73\x5b\x45\xd9\x9f\x02\x37\x3d\x9a\xe4\xd4\xd4\xad\x2c\x89\x5c\x36\x5f\x12\xb4\x5f\x7b\xfd\x53\xe9\xef\x93\x66\x1a\xbb\xe6\xf1\x36\x84\xb5\x3e\x60\x5d\x9d\xae\x3b\x44\xf1\xca\xa6\x3a\x9b\x4b\x56\x22\xe3\xed\xf1\x97\xf1\xb8\x7b\x65\x4a\x70\xb8\x4f\xf2\xe9\x2d\xc0\xa2\xb7\x61\x42\x38\x9c\xb0\x39\xf1\x49\x5e\x7a\x9f\x75\x37\x3e\xe5\xa0\x6d\x53\xac\xff\xb6\xb8\xfe\x31\xfa\xbf\xb7\x57\x97\x87\x29\x16\x72\x8e\x21\xe7\xd6\xb5\x75\xe0\x8a\x77\x18\x05\xd4\xf9\x95\x28\x43\x23\x76\x88\x66\xfc\xc0\xb8\x31\x4f\xd0\x5c\xa9\x4c\x9e\x1c\x1f\xcf\xa8\x9a\xe7\x93\xa3\x88\xa7\xc7\xc5\xda\x1c\xe3\x8c\x1e\x4f\x12\x3e\x39\x16\x04\x02\x59\x0f\xbf\x3d\xfa\xee\x5b\xd8\x9a\xe3\xc7\x6f\x8f\xc1\x79\x75\x34\xe3\xbf\xbb\xf8\xee\x3f\xff\xf8\x27\xdd\x70\xb6\x50\x73\xce\x4e\xac\x8f\x74\x69\xdb\x87\x46\xf0\x3d\x36\x9f\x54\x7a\xf9\xcf\xa3\x6f\xc2\x61\xd8\x57\x53\x1e\x93\x44\x1e\x3f\x7e\x3b\x76\x3b\x73\x94\xad\xe3\xf5\x2d\x18\xbe\x5f\xf2\x4a\x59\x56\xfd\xbb\x27\x19\x67\xeb\x5b\xb5\x2d\x0d\x67\x25\x0c\x53\xde\xe2\xc4\x3c\x90\x9a\x23\x7c\x0d\x0d\xcc\x4b\x52\x2d\x3a\xfd\xba\xe8\xde\xad\xb2\xcd\x5a\x59\x99\xe0\x76\xa6\x11\x20\xc7\x1a\x1b\x44\x86\x69\x53\x78\x9b\x0d\xaf\xd8\x66\xfd\x9e\x13\x03\x79\xd7\xe0\xc7\x76\xba\x1b\x02\x1f\x27\xe6\x6b\x17\x0c\xc2\x9f\x1c\xe0\xf1\x2e\x60\x82\x3b\x96\x38\xf2\xe8\xa7\x86\x78\x60\x2c\x6e\x5c\x2d\xc3\x98\x63\xb9\x59\x54\xd1\xc0\x60\x8c\x79\xc7\x80\x2f\xcc\x68\x3b\x74\xbc\xd2\xa5\x6d\x43\xfd\x3c\x8b\x0e\x93\x99\xc2\xdf\xf2\x08\x7d\xa8\xd4\x80\x29\x22\xa5\x6e\x3e\x9c\xa2\x6f\xff\xfc\x9f\x7f\x1c\xb1\xaf\x1a\xb8\x18\x84\x6e\x70\x31\xb3\x81\x5b\xc0\xbb\x52\x2c\x15\x11\xc7\x62\x1a\x1d\x9b\x48\x90\x63\xfd\xfd\xa1\xed\xf4\x90\x4f\x0f\x3d\x06\xea\xa1\x85\x83\x3c\x4a\xe3\xf5\x32\x9a\x4b\xa4\x67\xe2\xa6\x6c\xc4\xb5\x84\xe8\x6c\x83\x7d\xc2\xa7\x1e\xed\xda\x04\xd6\x1b\x60\x7c\x3e\x6d\xf8\x03\xca\xa5\x7e\xed\x11\x97\xb0\x74\x7d\x14\x10\x28\xed\x47\x73\x37\x70\xc8\x8e\x44\x9e\x53\x6f\x73\xbc\x24\x94\xce\xd6\x59\xf8\xe6\xc3\x56\xc4\xbd\x9b\x04\x70\x5b\x6f\xd3\xc0\xc9\x72\x46\xf8\x14\xc2\x86\x40\x30\x70\x6e\x51\x30\x0e\x31\xae\x82\x64\x6f\x41\x32\x73\xc1\x84\xf5\x39\x1b\x96\x7b\x4b\x48\xe5\x55\xeb\xfc\x1c\x90\xca\xdb\xae\xbb\x65\x28\xaf\xb4\xe0\xdb\xc6\x2e\x99\xa3\xb4\x8e\x1b\x57\xbf\xbf\xd2\x65\xe3\xf9\x00\xf8\x68\xc2\x92\x98\x06\xdc\x08\xb2\x15\xc8\xa1\xe2\x87\x80\x92\x01\xd8\x0b\x06\xe4\xbc\xcd\x8f\x0b\xae\xae\x75\xae\x49\xfd\x7e\x87\x71\x1a\xff\xe7\xe7\x60\xa0\x56\x26\xb1\x05\xa8\x6d\x0c\x08\x65\x8c\x08\x6b\xc4\x5f\x79\xa3\xfe\x7f\xec\xbd\x5b\x73\x1b\x3b\x92\x2d\xfc\x3e\xbf\x02\x11\xdf\x83\xed\x2f\x28\xb9\x2f\x31\x11\x13\x8e\x98\x07\x6e\x49\xee\xcd\x6e\x59\x52\x4b\xd4\x76\xcf\x19\x4e\xd0\x60\x15\x48\x62\x54\x04\xe8\xba\x48\x66\x4f\xf7\x7f\x3f\x81\xcc\xc4\xa5\xae\xac\x22\x29\x6f\x4f\x9f\x7e\x98\xe9\x6d\x91\x44\xa1\x70\x49\x24\x32\x57\xae\x35\x30\x11\x16\x4e\x65\x37\x04\xc4\x3b\xe6\x21\x01\xb5\x03\x00\xf3\xc0\x08\x9c\x33\x28\xc3\x58\xeb\x8d\x36\xee\x8c\x2e\xb2\xe0\x43\x2c\xe3\x81\x43\xb8\xd5\xf7\xda\xf0\x2d\xb2\x62\xfd\x7a\x6f\x63\xb6\x96\xf9\x08\x63\x1c\xe1\x97\x06\x71\xfa\x2f\xca\x2c\xe6\x7b\xfa\xef\xe8\xa7\xbb\xd7\x0d\xa4\x59\x37\x10\x53\x06\x11\x2d\x22\x95\x95\x7f\x35\x57\x18\xb3\xa4\x5c\xc9\x8c\x3b\xb9\x11\x15\x80\xe4\x6f\x21\xbf\xa4\xf5\xe6\x5b\xcb\x33\x8b\xcd\xc0\x39\x70\xa8\xc6\x3e\x13\xc0\x15\xe2\xfc\x2c\xc0\xef\xac\x11\xe1\xd7\xb6\x2f\xad\xc0\x56\x3c\xb7\x04\x85\xc3\xba\xfa\xe0\x1a\x20\x2e\xc2\x7a\xbf\x3d\xbf\x0b\xc0\x41\x71\x8c\xd1\x20\x58\xdf\xa2\x25\xcb\xaf\x86\x6f\x46\x50\x74\x18\x32\x76\xf0\x10\x5c\x9c\xb5\x11\x0c\xf6\x42\xdb\x00\x0e\x8b\x38\x74\x5d\xe0\x9b\xf0\xc3\x48\x89\xe5\xcb\x05\x4c\x2f\x6b\x97\x47\xf7\xc3\x67\xaf\xcf\xb7\xdb\x8a\x11\x5b\x14\xf0\xf9\xcd\xed\x34\x4c\x0f\x4b\x7c\xdb\xb3\x68\x2d\xa2\x27\xa8\x1c\xc4\x23\x0f\x37\x83\xd5\x66\x5c\xec\x66\xca\x6b\x0d\xe5\xda\xe6\x3a\x77\x8e\x7e\xd9\x51\x90\xeb\x94\xc5\x32\xdb\x26\x7c\x07\x59\x25\x85\xc0\x60\x9f\x91\x72\x88\x7a\x63\x0a\xf6\x85\xcf\xfa\xcf\xb4\x99\x15\xaf\x3a\x3f\x78\x2c\x79\xba\x90\x79\xca\x49\xba\x1f\x07\xb3\x6e\x0f\x58\x26\x36\x5c\xe5\x32\x9a\xa9\x8d\xe0\x2a\x84\x01\x51\x56\xcd\x0c\x72\xac\x05\x11\x94\x2e\x97\x22\xca\x3d\xc3\x19\x38\xef\x6e\xa4\xf6\xed\xc1\x61\xef\xee\x76\x5e\xe7\xab\xff\x2c\x15\xd6\xd3\xca\x0d\x80\xcc\x68\x0d\xd1\xd1\x78\x60\x2c\x1b\xb4\xa9\xe8\xc8\xb5\x97\x41\xf8\x97\x5d\x53\x4e\x32\xdb\x55\x1c\x35\xf9\xf8\x47\xf3\x93\x1f\xa7\xe2\xd6\xac\x7f\x17\x40\x4f\x70\x83\x85\xe8\x15\xc7\x34\xa2\x2a\x94\x21\x6f\xa8\x06\x0a\xa2\x3d\x6f\x08\xff\xfe\x06\x8e\x69\x73\x7b\x4c\x9f\x45\x3c\x53\x65\x1e\x17\xf2\x19\xfd\x86\x63\x5e\x79\xe7\x34\xd6\xc6\x8e\x71\xaf\xd0\xe6\x15\xd4\xae\x7b\xd6\x3a\x57\xe5\xd3\xa1\x04\xd4\x2c\xc6\xfc\x0a\x22\x33\xbd\x63\xde\x5e\x9c\x87\x94\x35\x48\x88\xab\x94\x5e\x76\x8b\xd2\xb1\x54\x20\x85\x95\x43\xdc\x51\x35\x44\xad\xe4\xb7\xa9\x8d\x99\xb2\xe5\x9b\xcb\x22\x41\x5a\xc2\x36\x6d\x22\x22\xad\xb1\x50\xf3\x5f\xaf\xe4\xc0\xc5\xd5\x58\x20\x66\xe4\xb2\xc0\x01\xfa\xd1\xa9\xe3\xc3\xd2\x15\x2a\x43\x61\x41\xab\x63\x02\x15\xd8\x2b\x91\xc3\x69\x1e\x17\x09\x56\x23\x42\x7e\x1f\x08\x70\x78\x92\x30\x99\x67\x33\xe5\xf8\x7a\x90\x7d\x19\x2c\xac\x45\x2e\xc6\x74\xe5\x82\x47\x40\xb3\xa4\x6a\x0a\x7e\x98\x8c\x64\x5e\xc3\x8c\xee\x42\xee\xff\xed\x56\x70\x2c\x9e\xc1\x69\x9b\xa9\xf0\xce\x55\x9d\x04\xaa\x34\x01\xad\xc9\x53\x14\x7d\x74\x40\x80\x41\xa0\x73\xf0\x94\x9c\xb3\x31\xbe\x9d\xb9\x70\x59\x59\x3f\xec\x2d\x15\xec\x12\xb4\xcb\xdc\x6a\xf2\xcc\x69\xc6\xbb\x7b\xeb\x96\xa7\xb9\x8c\x8a\x84\xa7\x09\x90\x60\x2f\x8b\x84\xc9\x65\xa0\x50\x08\x73\x80\x6c\x2d\x66\xba\x22\x0d\x67\xb5\x4d\x09\x65\x7c\x23\x82\x42\x51\x0a\xef\x24\x41\x4a\x19\x29\x68\x31\x57\x69\xda\x7a\x77\xce\x2e\xab\x4a\xa1\xb0\x27\x02\x96\x37\x99\xa1\xf9\x73\xfd\x0d\x6a\x9c\x50\x71\x54\x2e\xcd\x95\xf2\x4d\xb0\xeb\xda\x54\xac\x79\xf6\x34\x30\x5f\x6d\xb9\xc2\xbb\x61\x8a\x8d\x35\x8e\x53\x50\x3a\x2e\x65\xb1\xdd\x86\x68\xe9\xa0\x3d\x15\x06\x76\x32\x64\xc8\x3b\xa0\xa3\x9f\x03\x29\xe1\x6a\x67\x37\x1d\x82\x88\x30\x8f\x03\xbb\x1a\xc8\x8b\x0c\xef\x68\xb0\x72\x42\x74\x42\x9f\x91\x5d\xf1\x7c\x28\x54\xc1\xa1\xff\x87\x77\xb4\x11\x16\xd2\xda\xcd\xfd\x91\xa6\xcf\x25\x3d\x12\x66\x7a\x65\x6e\xf9\x02\x61\x37\x7a\x19\x98\x60\x3a\x6f\x48\xb8\x04\xb8\xa0\x9d\x4d\x58\x08\x96\x48\xf5\x64\x2b\xbf\xcd\x02\x1d\x31\xee\x5b\x07\x1b\x81\x83\x8c\x7b\xae\xc5\xf3\x6a\x62\x4e\x3f\xc2\x19\xeb\x57\x3f\xd5\x7c\x43\xb6\x3d\x19\x44\x8e\x6f\x5f\xb8\xe9\x3d\xfa\x4f\x4b\x27\xd0\xd3\xdd\x79\x2c\xba\x13\x8f\xc1\x00\x72\x96\x4b\x27\x36\xdf\x3a\xbe\x77\xeb\x32\x84\x69\x80\xce\xc8\xe3\xcd\xe5\xd5\xc7\xc9\x4d\x59\x1c\xe4\xcf\x8f\x57\x8f\xe5\xbf\xdc\x3f\xde\xdc\x4c\x6e\xfe\x10\xfe\xe9\xe1\xf1\xe2\xe2\xea\xea\xb2\xfc\xbd\x8f\xe3\xc9\x75\xe5\x7b\xe6\x4f\xe5\x2f\x8d\x7f\xba\xbd\xaf\xc8\x91\x58\x2d\x91\xe0\x4f\xd3\xc9\xa7\xab\xcb\xf9\xed\x63\x49\xd1\xe4\xf2\x3f\x6e\xc6\x9f\x26\x17\xf3\x86\xfe\xdc\x5f\x5d\xdc\xfe\x72\x75\xbf\x47\x90\xc4\xbf\x6f\xe3\x90\x9e\x02\x7b\x72\xb0\x3c\xcd\x98\x2d\x53\x29\x54\x9c\xec\x10\x1a\x6b\xef\x81\x15\x24\x5e\x78\x52\xc9\x8d\xd0\xc5\x31\x08\xd7\xe9\x5a\x30\xfd\x2c\x52\x28\x52\xc7\xd6\xa8\xa2\x8d\x67\x4f\xad\x14\x66\x79\x5a\x8f\xa1\x77\x02\xf9\xf3\x74\xe7\x4a\x45\xba\xba\xe3\x09\x4e\xe8\x21\x6c\x2b\xd2\xae\xbe\x80\x1f\x91\x16\xdb\x5c\x2e\xda\x31\xcb\x3d\x89\x3f\x86\xdf\x54\x91\x8e\xab\x99\xbb\xe0\xa6\xd9\x30\x96\xa0\xbb\xc7\xa0\x16\xa1\x85\x43\x55\x97\xdc\xaf\x2d\xd2\x6b\x5b\x2c\x12\x19\x31\x19\x57\xa3\x0f\x58\x61\x82\x01\xd6\x2a\x6b\xdf\x56\xa4\xe0\xd8\x19\x7f\x79\x9b\x8a\x33\x5e\xe4\x6b\x2b\x08\xed\x0a\x8d\x90\x45\x4f\x44\xa9\xc8\x03\xf1\x72\x92\xdb\x09\x9e\x04\x9d\xa1\x02\xcb\x18\xb8\x1c\xce\x03\x06\xe5\x96\x88\x3a\xfe\x12\x5b\x1f\x10\x52\xc4\xef\x77\x0e\x0d\xf5\x58\x66\x55\xad\x55\x70\x61\xf1\x43\x2b\xda\x63\xde\xdb\x58\x6a\x27\x5a\x83\x93\x6c\xa1\xd5\xcd\xaf\xb1\x6f\x8d\x85\x0b\xa5\x8c\x84\xa6\xd6\xe9\xa3\x8b\x54\xc0\x21\x42\x89\x73\x7b\xdb\x07\xa0\x07\x41\xb1\x01\x81\x6d\x2e\x36\x0b\xb1\xe6\xc9\x12\x63\x78\x66\x6a\xfc\xbe\xaa\x2f\xd1\xa9\x7e\x12\xea\x1e\x27\xec\x57\x31\x87\x0a\xef\x09\xbe\xe4\xd6\xc5\x4f\x7c\xc0\xcf\xf4\xd1\xae\x2a\x5b\x8a\x82\x9a\xe5\xe8\x55\x07\x1f\x23\x1e\xdc\x13\x6a\xda\x2a\x96\xe5\x52\x7e\x33\x0d\xce\x94\x68\xa4\x14\x04\x74\x8d\x25\x3f\x71\x76\x19\x28\xb5\x90\x41\xe2\x49\x28\x90\xfb\x41\x35\xd0\xbd\x6b\x76\x58\xb4\xb9\x3e\x17\x1d\xe1\x6f\x88\x90\xc9\x92\x0a\x52\x98\x13\xb1\xe3\x04\x35\x67\x4f\xe2\x9c\x5d\x52\x5d\xbc\xf9\xcb\xc5\xf5\xe4\xea\x66\x3a\xbf\xb8\xbf\xba\xbc\xba\x99\x4e\xc6\xd7\x0f\x7d\xb7\xdf\x29\xca\x16\x2a\xbb\xaf\x5a\x39\xe2\x2c\xc4\x7b\xda\x79\xbe\x7a\xce\xbd\x94\xdf\x76\x30\x25\xfb\x7b\x2f\xe3\xed\x3c\x96\x59\x64\x8e\xbf\xdd\x5c\xa8\x18\xb8\x58\x0f\x5a\xaa\xcd\x4d\x55\xdf\xc2\x7d\x83\xb9\x6f\x58\x0b\x82\xa7\xdd\xb3\x5d\xd1\xee\x73\x20\x6b\x83\xa0\x5d\x2a\xcc\xe6\x8f\x67\x2a\x38\x6d\xce\xf7\x13\xf0\x9b\xe6\x8e\x7b\xb7\x72\x13\xd5\x77\xc2\xfe\xca\x2c\x2b\xb8\xb1\x8f\xf6\x6b\x40\xc7\xd0\x32\x2a\x44\x90\x15\x12\xc2\xca\x40\xcc\x90\x99\x9b\xfc\x86\xab\x98\xe7\x3a\xdd\xb5\xbc\x62\x3f\xe3\x19\x6e\x9b\xb2\x09\x0d\x8f\x6c\x25\x44\x6c\x67\x01\xbf\xca\x55\x75\x29\x21\x6d\xec\xf4\xf6\x4f\x57\x37\x0f\xf3\xab\x9b\x5f\xe6\x77\xf7\x57\x1f\x27\x7f\x71\xdc\x37\x5b\x9e\x35\x89\x97\x6d\x53\x61\xac\x8b\xad\xc2\x6f\xb4\x2f\xa8\x28\x66\xdb\x21\x15\x19\xb9\x9c\x29\x6b\x59\x52\xdf\xfc\x3a\xd5\xc5\x6a\xdd\xdc\x50\xb5\x97\x77\xe3\xe9\xcf\x07\x75\x13\x38\x52\x50\x76\x08\x77\x5b\x9d\x48\x50\x2e\xc9\xee\x21\xfb\x60\xa5\x7b\xc0\xf4\x03\x5f\x6d\x8a\xc9\xb7\x58\xb4\x83\x6e\x2f\x75\xa3\xd5\xe9\xfc\x37\x7c\xbd\x6d\x01\x4d\x03\xbb\x59\x3a\x46\x00\xc2\x8a\xea\x75\xb5\xd6\x3e\x34\xfc\xad\x74\x82\xfd\xee\x2c\x11\xab\x95\x88\x71\x79\x55\x1b\xa6\x88\x15\x99\xc0\xc8\x9f\xeb\x4d\xa3\x48\xfa\x52\x47\x1c\xcc\x0e\x1d\xd5\xdf\x80\xdf\xb9\x9f\x34\xdb\x8a\x0b\xab\x61\x1b\x69\x95\xe5\x5c\xb5\xa4\x5d\x9f\xeb\x78\xc6\x5e\xa6\xe8\x36\x65\xae\x72\x82\x02\x24\x36\xc0\xee\xf7\xc1\x21\x09\x27\xd2\xd1\x52\x14\xf1\x08\xf4\xb5\x02\xd1\xdd\x86\x49\x80\x48\xe3\xbd\xb5\x88\xaf\x1f\xdc\xe8\xbc\x3a\x11\x31\x0c\x04\x46\x51\xc8\x84\x38\x4b\x31\x1a\x04\xea\x40\xad\x30\xda\x41\x13\x52\x79\xf2\x2f\x34\xf4\x78\x6b\x2d\x07\x66\xb9\xa5\x5e\x72\x13\xe4\x9c\xb7\xe1\xf1\xad\x92\x1f\xee\x5b\xde\xa6\x3a\x2e\x22\x4b\x4e\x01\xcd\x7a\x3c\x08\x05\xb4\xec\x01\x1b\xb3\x33\x33\xcd\x74\x49\x11\xf1\x19\x50\x7c\xcc\x54\x5b\xf2\xc5\xda\x80\x96\x30\xd7\x9d\x3d\xb5\x8e\x99\xfb\x86\xd1\x6f\xdf\x82\x76\xb0\xfb\x15\xa0\x31\xfb\x75\x70\xf6\x5a\xe0\x34\x34\x2f\x0b\x8e\x99\xd5\xf2\x71\xdc\x56\x8b\xee\xac\xea\x30\xd4\x4f\x3f\xd0\x44\x99\xdb\x09\x8f\xc8\x35\xcf\xd0\x73\xcd\xa3\x75\xb9\xe3\xf0\x36\x65\xfe\xa6\x6a\x77\x9d\x27\x78\x5c\x84\xa0\x57\x7e\x65\x84\x77\x6a\x99\x51\xef\x43\x2d\x1e\x27\x2c\x36\x6c\xe1\x87\xce\x91\xbb\xbc\xa0\xdd\x03\x83\x95\xf0\x42\x45\x6b\xb6\x4d\x38\x16\x5d\xae\x79\x86\x4b\xda\x82\x0c\xf8\x42\x26\x32\x07\xbe\x08\xcc\x7d\x55\x46\xd8\xdc\x68\x78\xfa\x64\x29\x1a\xb9\x27\x07\xe9\x5a\xf4\x47\x82\x39\xbd\x7e\xf5\xf7\x84\x73\xfa\x2d\x1b\xfc\xa2\x33\x73\xe6\x97\x25\x41\x39\xfd\x74\x18\x8b\x07\xcb\xd2\xbf\xcb\xb0\x99\xa5\x16\xef\xaa\x3f\x2f\x8d\x77\xc3\x41\x3d\x1c\xca\x40\xdc\xc3\x03\xcc\x7c\x95\x99\xb8\x71\x67\x2d\x13\xcd\x5b\xd4\x31\x6d\xdb\x48\x34\xdc\xd6\x76\xac\x8b\x45\x1b\xb5\x25\xf6\xaa\xbb\xf5\xae\xb8\xbf\xdd\xb7\xa7\x8a\x0b\x86\x06\x90\xe7\x22\x97\xc3\x42\x1b\xc1\x4b\xf3\x5c\x9c\xc1\xcf\x9b\x1b\x27\xda\x9f\xde\xef\x5c\x5b\x68\x9e\xee\xde\x11\x68\x02\xc8\xac\xbe\xba\xfe\x5c\x70\x63\x1a\x6e\x97\x0f\x48\x60\x70\xcc\x22\xcb\x65\x7d\x85\x35\xef\xc4\xea\x53\xa7\xe5\xa4\x4a\xb8\x06\x7a\x17\xaf\x35\xbd\xcd\x83\xf9\x75\xff\x0d\x59\x96\x90\xde\xa6\x52\x03\xcd\x00\x09\x57\x77\x70\x80\x35\x3e\xf7\x88\x91\xfc\x5a\x88\x42\x98\xb5\xbf\x28\xe2\x55\x3d\xb6\x39\xc0\x3b\xf3\xaf\xb4\xd6\x2f\x6c\x53\x44\x6b\x66\x1b\x67\xb1\x48\xf8\xae\xf4\x6a\xe0\x2f\xe5\x3a\x01\x56\xcd\x03\x29\xfe\xa2\x22\xcb\xf5\x06\x40\x98\xbe\xdd\xb4\x50\xb0\xe0\x19\xcf\xf3\x54\x2e\x8a\xbc\x11\xb0\x55\xa2\xfc\x39\x30\xa1\xf5\x70\x77\x75\x31\xf9\x38\xa9\x64\x93\xc6\x0f\x7f\x0a\xff\xfd\xf9\xf6\xfe\x4f\x1f\xaf\x6f\x3f\x87\x7f\xbb\x1e\x3f\xde\x5c\xfc\x3c\xbf\xbb\x1e\xdf\x94\x72\x4e\xe3\xe9\xf8\xe1\x6a\xba\x27\xad\x54\x7f\x6a\xfb\x44\xf0\x80\x91\xc8\xc2\x42\x2d\x35\xab\xbd\x5d\xd2\x53\x3f\xb0\xb1\xe5\x67\x2a\x31\x88\xd9\xd4\x20\x64\xde\x51\xa8\x94\x32\x88\x97\x3c\xe7\x24\xfc\x7c\xce\xc6\xcc\x0a\x78\x03\x18\x3a\x33\xce\x02\x91\xd7\x98\xd9\xc1\x26\x8c\xc7\x10\xf9\x9b\x9b\xd7\x9e\xd2\x4b\xa2\x8d\x4a\x44\xc8\x52\x6c\x2b\x7f\x66\xea\xea\x59\xa8\xbc\x00\x0a\x55\x9e\x24\x56\x68\xdd\x7e\x21\x28\xf2\xb4\xbd\xcc\xe4\x46\x26\x3c\xf5\x32\x41\xb7\xd4\x16\x38\xec\xb6\xaf\x8e\xd3\xa3\xae\x1d\x61\x2f\x0f\x8f\x13\x06\xfd\xbe\xb8\x9e\x80\x0b\x14\xe5\x96\x03\xdf\x3e\x7c\xa6\x90\x96\x88\x9e\xb8\xe1\x00\xd0\xcf\x35\xc5\xd3\xf0\xf1\xf4\xe5\xf6\x85\x98\x1d\xb3\x89\x6d\xe4\xf9\xb5\x40\x40\xae\x93\xf6\x3f\xae\x54\x9e\xee\x7a\xfb\x35\x53\x20\x51\xcd\xc0\x37\x25\xbc\x4f\x59\x3a\x08\xc3\x1d\xcc\xb6\x7e\x03\xce\x8e\x05\xa3\x51\x34\xde\x05\xdd\x05\x10\xb5\xb6\xf8\xdf\x89\x39\x84\x7e\xd4\x71\x08\x39\x14\x60\x14\x16\xba\x50\x71\x46\xc8\xa4\x8d\x54\xef\x37\xfc\xdb\x3b\xfb\xa6\x58\x93\xec\x08\xbc\x81\x6f\x46\x24\xe6\x26\xb2\x33\x46\xae\x7b\xb8\x66\xaa\x63\xbc\xf6\x7b\x8b\xd6\xb2\xc2\xb5\xc7\xdf\x51\x11\x63\xf5\x2c\x76\x4d\xf3\x57\x13\x61\x40\x1c\x17\x6d\x78\x68\x64\x9b\x0a\xf3\x45\x07\xe0\x4a\x10\x97\xe7\xfe\x0d\x40\xed\x92\x50\x54\xb3\xed\x0e\xb3\xbc\x47\x6d\x9b\xc6\xfc\xf2\x2b\xa8\x68\xd0\x93\xcc\x9c\x61\xb6\xd9\x06\x3a\x09\x98\x4e\x69\x34\x33\x59\xff\xad\x17\x6c\x09\x55\x1a\x24\x04\x9b\x0a\x08\x6c\xc3\x54\x58\xda\x57\x60\x25\xa9\xa5\xb0\xed\x12\x48\x44\x06\xe1\x5e\x65\xae\x5b\xe2\x6b\x41\x19\xbb\xdf\xfe\x66\xd8\x39\x9b\xa7\x3b\x66\x29\xc6\xc3\x2a\x11\x2a\x92\xa2\x33\x17\xfa\x55\x28\xd9\x44\x55\x74\x5f\x28\x73\x14\x9f\x02\xec\xd0\x3f\x9b\x55\x79\x28\xfd\x73\x6f\x21\x85\x0d\xc4\xa6\xf8\xfd\x57\xe3\x76\xfb\xa5\x42\xe9\x46\x8f\x03\xd8\x2e\xb5\x1e\x1e\x68\x0b\x1e\x3d\xbd\xf0\x34\xc6\x58\x21\xa0\x0f\xce\xd9\xcf\xfa\x45\x3c\x8b\x74\xc4\x22\x91\xe6\x9c\xd8\x5e\x32\x48\xbf\xc2\x86\xa2\x76\x66\x0a\x50\xec\x48\x9d\xa3\x40\x43\x37\x97\xab\xb5\xb9\x4f\x06\xc9\x73\x9d\x1a\x73\x94\x23\x95\xd6\x56\x44\xc4\xaf\xd1\x32\x00\xcb\x84\x3f\xd7\xe9\x6b\x0e\xa9\x84\x67\x13\x57\x8a\x67\xb3\x53\x96\x4a\xbb\x0b\xee\x40\x03\x46\x46\x13\x09\x11\x46\x6c\xa5\x13\xae\x56\xe7\xe7\xe7\x4c\xe4\xd1\xf9\xbb\x41\x0b\x9d\x1a\x0c\xf3\x5d\x0e\x82\x9a\x68\x9d\x89\x64\xe7\x38\x21\x5c\x91\x80\x19\x66\xa8\x11\xc9\x24\x86\x3c\x1a\x96\xff\x43\xb5\xa2\xfe\xfb\x86\xce\x9b\x6f\xaa\x83\x4b\xd0\x5a\xda\x01\x65\x8e\x01\x2d\xe1\xf7\x9b\x6f\x5e\x03\x4a\x2a\xad\x8c\x96\x2f\xad\x6c\xa1\x7f\xd4\x6a\x68\xbd\xe0\x2f\xba\x4d\x6f\xf6\x20\xca\xa6\xc6\x96\x88\xd0\xe1\xa0\x1a\xab\xb6\xc8\x45\xa5\xec\xed\x88\x8a\xb7\x8e\xe2\xb5\x81\x75\x6b\x0d\xfb\xaf\x61\x7b\xb8\xca\xd8\x63\xf0\x49\x3a\x29\x36\xed\x5c\x45\xc7\xba\x7c\xbe\x93\xf8\x5f\x17\xf0\xb8\xde\x2e\x9f\xd7\x00\xb6\x2a\x03\xd4\x5f\x0c\xdc\x52\xed\xa0\xb1\xed\xa9\xcc\x80\x55\xeb\x90\x42\x26\xd7\x0c\x36\x0d\xf9\xa5\xdd\x16\x03\x86\x58\xe2\x94\xec\xb0\x54\xce\xe6\x23\xe8\x27\x19\xfa\x65\x90\x94\x6a\x37\x63\x55\xd4\xd3\xe0\x39\x02\x0e\xfb\x83\x32\x71\xe0\xe8\x04\x6c\xb2\x04\xcb\x80\x06\x29\x77\x9c\x6b\xb6\xb4\xa5\x31\x4f\x22\x50\xdd\x8b\x81\x67\xf6\x05\x99\x2b\xfe\xf4\x6f\x99\xcd\x32\x13\x10\xc0\x9f\xb1\xb9\x7f\x08\x46\xb3\x9f\x7f\x6b\xf1\x1f\xf8\x86\xd8\x04\x08\xd9\xc4\x5c\xe5\x8d\x0d\x78\x78\x14\xb4\x85\x3f\xf9\xc5\xdc\xdb\x1b\xbf\x4e\xed\xc3\x57\x51\xb3\x62\xfc\xf9\x81\xe1\x50\x13\x23\x69\xda\xd5\xd1\xa0\x91\xfd\x08\x14\x18\xae\xf9\x01\xbe\x4b\x69\x1e\x70\xd0\x2d\x25\xad\x19\x76\x91\x47\x6b\x7f\x56\x96\xc5\x27\x49\x90\x88\xde\x73\xe3\x39\x56\x11\xdc\x17\xa2\xa4\xe4\x4a\xe9\x90\x1e\x5c\x2b\x01\x69\x05\x9e\xb3\x58\x87\xcd\x32\x99\xef\x87\xa2\x0c\xe4\x01\xda\xb7\xd4\x72\x8d\x10\x03\x7a\xcf\x52\x76\x08\x9c\x60\x89\xec\x21\x16\xc7\x87\x5e\x3c\xe9\xdb\x54\x99\x41\xcb\xf5\xd8\x33\x55\x7e\x54\x6d\x90\x2c\x56\x44\xa6\x02\x09\xfd\x32\xe3\x6f\xe4\xf2\xd9\x6c\xd4\xfa\xb2\x76\x0b\x14\x2c\x40\x7d\xed\xcd\x14\x76\x3b\x60\x05\x7c\x12\xbb\x2c\x14\xd3\xa1\x15\xc5\xda\x16\xa4\x34\xef\x43\xf3\xb5\x7f\x2a\x60\xe0\xe6\x81\x38\x70\xbf\x53\x04\x1f\xfa\xc9\xfc\xb8\x03\x84\x56\x6b\xdc\xac\x41\x5f\x7b\xe4\xa3\x60\x64\x26\xfc\x38\xd3\x1c\x7a\x9c\x49\x83\x70\xb4\x0f\x28\xc2\x55\xcd\xdc\xc8\x66\x8a\x88\x43\x83\xfc\xad\x31\x38\xf5\x69\xa3\x82\x48\xa4\x2b\xdc\x95\xc8\x1c\x80\xd4\xd5\x2a\x9c\x36\xeb\x75\x5b\x2d\x36\x73\x87\x07\xc5\x6b\x90\xac\xa6\xa8\x53\xe3\x03\x0f\x04\x2f\xd1\xe4\xb6\x02\x96\xbc\xd3\x4d\x03\x47\x7c\x5e\xa8\xca\x84\xfe\x7a\x24\xcc\xf0\x8d\x55\x23\x56\xc8\x22\x85\x1e\xae\x2e\xee\xaf\xa6\xdf\x0d\xd0\x64\xd1\x44\x83\x11\x4d\xb6\x9f\x97\x57\x1f\xc7\x8f\xd7\xd3\xf9\xe5\xe4\xfe\x35\x20\x4d\xf4\xd1\x01\x98\xa6\x07\xe2\x23\xbe\xd0\x2a\x17\xdf\x8e\x3a\x93\xd3\x42\xcd\xf9\x00\x6c\xbd\xe3\xfc\xee\x72\x77\xb0\xd1\x3a\x9f\xb2\x23\x3b\x26\x36\x39\x3c\xd1\x1c\x7d\x72\x20\xc0\xbe\x94\x49\x02\x85\x79\x2e\x20\x4c\x65\x2c\x66\x50\xc1\xfe\x58\x25\x59\xb2\xa9\x33\xb5\x28\x11\x4a\x43\x90\x6a\x6d\xae\x6d\x58\x92\xb7\x35\x03\x90\x4a\x28\x78\xea\xa2\x5c\x5e\x49\x25\x7c\x37\x50\x41\xb1\x50\xac\x95\x27\x93\x26\xf1\x35\xeb\x2e\xc9\xf1\xea\xeb\x6b\xda\x15\x57\x5a\x9f\xd6\xfd\xb4\x1f\xba\x37\xc4\x4d\x2c\x15\x3a\xa6\xa5\xdd\xfc\xd0\xbc\x74\xdf\xfb\x2d\x00\xe3\x6e\x66\x92\x43\xd4\x1c\x44\x0a\xfd\x44\xd2\x44\xa0\xd8\x81\x0f\xa7\x3f\x49\xc4\x7d\xe8\x65\x65\x9c\x8d\x29\x34\x63\x2d\x21\xb6\xce\x89\x6b\x20\x4a\x8a\x2c\x17\x29\x5d\xf4\xc7\x9f\x1f\x66\x0a\x95\xac\xe9\x14\x22\x42\x7c\x7c\x04\xa2\x0e\x74\xe9\xf9\xd6\x43\x09\x2d\xd8\x5b\x8c\xaa\x6e\x04\x57\x19\x0a\xc8\x26\x89\x48\xfd\xca\xc0\xfe\x08\x11\x93\x88\x10\xa8\x0c\xfb\xdf\x93\x86\xa8\x86\x5d\x6b\xfa\x4b\x9f\x92\x8a\x66\x75\x3d\xb5\xd5\x7d\x02\xa4\xf1\x35\x57\x4e\x03\xb2\xbe\xef\x2a\x22\x34\x68\xe3\x22\x2a\xe3\xdc\x7b\xad\xa5\x29\x36\xf7\xcf\xa5\x74\xc2\xa5\xd4\xe3\x5c\x0f\x4f\x09\xb6\xd6\xc6\x80\x3a\x2e\x7b\x9f\x18\x75\x75\xe7\x09\x20\x76\xcc\x30\x36\x9e\x3a\x15\xc5\xa4\xa3\x58\xbe\x4c\x53\xc7\x01\x10\xc7\x0d\x04\x17\x5e\x9a\xc3\x66\x23\x3a\xc5\x98\x5e\x87\x48\x6a\x6c\x11\x62\x4a\xe7\xb6\x24\xdc\x81\xb2\x08\x61\x66\xbe\xe0\xb8\x08\x3a\xfb\x48\xf5\xfd\xd6\x4b\x99\x1f\x29\x68\x32\x0d\x91\x6c\xa5\xb2\x3f\xec\x45\xa8\x89\x48\x98\x57\x5f\x92\x3f\x64\xf1\x1d\x2e\x99\x55\x5e\x73\x8e\xde\xed\xa0\xf4\xfc\xcd\xed\xcd\x55\x98\x5c\x9f\xdc\x4c\xaf\xfe\x70\x75\x5f\x2a\x18\xbd\xbe\x1d\x97\x8a\x3e\x1f\xa6\xf7\x95\x5a\xcf\x9f\x6e\x6f\xaf\xaf\x6a\x59\xfa\xab\xe9\xe4\x53\xa9\xf1\xcb\xc7\xfb\xf1\x74\x72\x5b\xfa\xde\x4f\x93\x9b\xf1\xfd\x7f\x84\x7f\xb9\xba\xbf\xbf\xbd\xaf\x3c\xef\xf1\xa2\x3b\xdf\x5f\x7a\x8d\xe6\xf0\x8f\x4f\x27\x06\x4c\x77\x8d\xdb\xb8\x2c\x29\x76\xc4\x2e\xee\x09\x1b\xda\xb7\x1c\x6d\x3d\xa8\x6d\x2e\xd8\x18\xa6\xab\x83\x56\xdd\xe9\x35\xd0\x4a\x43\xf7\xf5\x38\x6a\xdd\x9c\xe7\x8d\xf7\xdf\xde\x81\x09\xd2\x1c\xfe\x5a\x88\x74\x47\xcc\x24\x78\x69\xc4\xbf\x44\x5c\x21\xde\x32\x17\x9b\x2d\xd4\xef\x84\x40\xc1\x99\xfa\x0c\x39\x16\xc4\x22\xbc\xc9\xd8\x1f\x20\x5b\x62\xbf\xec\xb5\xb9\x61\x50\xfe\x8c\xcf\x70\x9f\x9d\xcf\x54\x49\xd3\x38\xf8\x55\xac\xa3\xc2\x45\x33\xce\x67\xca\xb2\xbf\xc6\x3a\xca\xce\xe1\xe8\x3d\xd7\xe9\xea\x3d\x09\x35\x19\x63\xaa\x9f\x16\x5a\x3f\xbd\x17\xea\x3d\x5c\x0e\xf2\xf7\xbc\xc8\xf5\x7b\xc8\xb4\xe2\xe0\x67\xef\xad\x9e\x8b\x15\xc4\xc9\xde\xaf\xe5\xb3\x80\xff\x77\xbe\xce\x37\xc9\xff\x97\x6d\xd7\xdf\xce\x56\x49\x7a\x66\x7e\x7b\x16\xfe\xf6\xcc\xfe\xf6\xcc\xfe\xf6\xcc\xfc\x0c\xff\xdf\x76\x87\x71\x36\x41\x82\xf2\x33\x25\x55\x26\xd2\x1c\x96\xe1\x4b\x2a\x73\xe1\xc5\xc2\xd9\x9b\xff\xf9\x1f\x76\x9e\xf2\x17\x44\xde\x5f\xf2\x9c\xdf\xe1\x45\xef\xef\x7f\x7f\xc3\xb2\x5c\x93\x3a\xd5\x96\xa7\x5f\x0b\x91\x9b\x2b\x67\x22\xa2\x9c\xfd\xff\x33\x05\x4a\x8e\x9b\xdd\x3c\xc7\x0b\x30\x5e\x06\xe3\x8c\xfd\x3b\xb6\x39\x41\x96\x9e\x38\x33\x2d\xb5\x80\xf2\x24\x4f\x1a\x24\xc0\x5a\x62\x25\x5f\x93\x4b\xfa\xfe\x80\xdd\xf2\x35\x29\x6f\x11\xcb\x33\x9d\x7d\x4d\x80\x0a\x2a\xd1\xdc\xe6\x79\x99\x5b\xbc\xe0\xb0\x50\xe7\x9a\xf6\x48\x2d\x9b\x70\xc4\x8e\x39\x54\x0e\xf4\x01\x99\x02\x6d\x08\xa5\x26\x70\x05\x41\x1b\x1f\x10\x02\x82\x28\x69\x76\xc8\x03\x5e\x49\x51\x6e\x1d\xde\x1c\x8c\x43\xae\x53\xbe\xf2\xf2\xf8\xe4\x41\x66\xbf\xff\xf0\xfe\xfd\x88\xad\x32\xf8\x9f\xc5\x57\xf8\x1f\x48\x3c\x9e\x8a\xec\xaa\x36\x98\x2e\x87\x5e\x9f\xe5\xfd\x33\x71\x8a\x04\xfc\xf7\xe0\x57\xac\x2c\xd3\x9f\x0a\x15\x27\xc2\x17\x12\x94\x62\x53\x89\xb6\x12\x84\x78\x43\xa9\x32\x59\xc3\x1c\x2f\x44\xc4\x8d\xe1\xab\x3d\x1b\x71\x29\x7a\x99\x0b\x85\xd7\x92\xd4\xf3\xfe\x73\xbc\x42\x40\x52\x18\x50\x14\x20\x25\xbf\xd9\x82\xae\xbc\x84\x78\xfd\x14\x09\x0b\x47\xd5\x8f\x40\x19\x1a\xb9\xf7\x80\x51\x0a\x05\xac\x85\x0d\x9c\x61\x01\x66\x91\x9a\x9b\xc9\x96\xab\x98\x67\xb0\x02\x97\x29\x84\x9d\x53\xc6\xeb\x1d\x1d\x21\x92\x47\x17\x39\x54\xbf\x63\x8a\x27\x1c\x09\x24\x47\x0c\xfa\x3c\x0a\x3a\x81\x67\x02\x6a\xe1\x57\x7f\x78\x3e\x53\x4e\x55\x1d\xd3\xe8\x78\x65\x89\xf4\x76\x47\xb5\xcd\xd5\x41\x97\xf6\x0a\x43\xc3\x3d\xf2\xba\xb5\xd5\xef\x8e\x98\x2c\xc7\x38\x81\x87\x31\xd4\xd6\xb2\xfa\x5f\x6f\x41\xe7\x5e\xa4\xd9\x3b\xb3\x0d\x81\x9d\x38\xf7\x2c\x87\x32\xf3\x93\xe1\x44\xd8\xe9\xda\x66\x9a\x77\x84\xe5\x66\x74\x4a\xcc\x7d\x4d\xee\xc3\xfe\xad\xf2\xa3\xa7\x23\x9b\xfa\x4b\xff\xf9\x5d\x53\x93\x21\x24\xc4\x42\xa2\x0e\xf7\x05\x71\xcb\x86\x16\x17\x1b\x25\xcd\x76\x74\x4e\xac\x90\x91\x34\x47\x56\x6e\x2e\xec\xf9\x4c\xd1\x09\x3c\x62\x4b\xc1\xf3\x35\x60\x62\xb2\x67\x34\xc6\x78\xdc\xe7\x2f\xda\x27\x43\x2d\xed\x33\xe0\x68\x4a\x8d\xfb\xdb\x3a\x7e\x0d\x52\x3b\x3c\xca\x31\xd3\xd3\x46\x88\xeb\x5c\x15\x18\xac\x46\x83\x78\xc0\x38\x58\x16\xe1\x2a\x63\x7f\x48\x62\x0d\x23\xb1\xc3\x88\x3d\xab\xf6\x03\x3f\x30\x86\x07\xdf\x0e\xf3\x71\x81\x71\x84\x42\x44\x82\xe1\xe0\x3e\xf3\xc1\xf4\x90\xca\x11\x9c\xe4\xb6\x4d\xd5\x31\x10\xd0\x81\xc3\x2a\x16\xcc\x4f\xf7\xde\x1c\x32\x91\x5a\x8a\x63\x7c\x57\xa4\x92\x59\xcb\x34\x3e\xdb\xf2\x34\xdf\xd9\xe5\x9b\xc8\x05\x30\xa3\x26\xf2\x49\xb0\x71\x9a\xea\x97\x53\x8f\x42\xab\x69\x99\xf2\xec\xe9\xc4\xcc\x54\x40\x18\x37\x84\x59\xaa\x91\x48\xaa\x84\x92\x89\xc5\xfc\x30\xd2\xaa\x36\xe2\xad\xc6\xe7\xa4\x22\x4f\x77\x73\xb3\x10\x37\xdb\x56\x4b\xd1\x0b\x6f\xd9\xdf\xc9\x1d\xc6\x87\x05\xe7\x73\x0f\x3e\xac\xd2\xac\xfe\x38\x7c\x58\x0d\x54\x57\x75\x3e\xac\xc9\xcd\x64\x3a\x19\x5f\x4f\xfe\x4f\xa5\xc5\xcf\xe3\xc9\x74\x72\xf3\x87\xf9\xc7\xdb\xfb\xf9\xfd\xd5\xc3\xed\xe3\xfd\xc5\x55\x77\x81\x7b\xbd\xf7\xde\x05\x3f\x63\xe1\x73\x3e\xb0\x69\x90\x31\x43\x9c\x22\xf9\xdf\x24\x0d\x04\xab\xca\x6c\x66\xa9\x56\x23\xd8\xa8\x1f\xd8\x55\x9a\x4e\x36\x7c\x25\xee\x8a\x24\x81\xbc\x36\x82\x82\x2f\x52\x01\x17\xcf\x11\xbb\xd3\xf1\x24\xf8\x1d\x54\x32\x34\xbe\x06\x3c\x9f\xc7\x71\x2a\xb2\x0c\x1f\x3f\xa2\xe7\x07\x59\x5c\x57\x25\x41\x28\x06\xfe\xcc\x65\x62\xee\x6f\x1f\x40\xad\x54\x2f\x97\x88\xbc\x1d\x39\xcc\x35\xfb\x5a\xe8\x9c\x33\xf1\x2d\x02\x52\x87\xe6\x75\x72\xad\x57\xaf\x7b\x07\x6a\xde\xd3\xfb\xe3\x84\x2d\x97\x14\x90\x80\x98\x37\x1f\xe7\xcd\x86\x80\xde\xf2\x13\xfe\xf4\x23\xfe\xb2\xb1\xf5\x3c\xaf\x49\xf4\x1f\x50\x64\x76\xad\x57\xcd\x84\xdc\xe0\x5d\x13\x8b\xb8\x97\xe5\x86\x92\x55\xbd\x62\x99\x54\x4f\x33\xf5\x79\x2d\x14\xd3\x45\x8a\x7f\x82\x6b\xbe\x71\x33\x93\x22\x5b\x8b\x98\xe9\x22\x1f\xb1\x17\xc1\x36\x7c\x87\x6e\x33\xdc\x09\x1c\x8b\x30\x2c\x19\x38\x45\xcc\xaf\x13\xa9\x8c\xb5\xd8\x4a\x0b\x69\xac\x4e\xfd\x29\x6e\x5c\x96\xd2\x84\x1f\xcf\x38\xd6\x75\x9e\x96\x80\x12\x50\xb2\xe2\x01\x2c\x36\x53\x4b\x96\x1b\x44\x8a\xb4\x7e\x2a\xb6\x9e\xfc\xe8\x8d\x8d\x12\xc3\x70\x3f\x6b\x19\xb3\xb8\xd8\x26\x32\x72\x76\xf7\x45\xa7\xad\x0c\x6f\x88\xbd\xed\x7f\xea\x54\x11\xe5\x5d\x2f\xd6\x00\xec\x0d\x20\x0d\x1d\x5c\x6f\xaf\xcc\x76\xc7\xa4\x8a\x92\x02\xe4\x17\x8a\x4c\xa4\x67\x79\x2a\x57\x2b\x70\xc0\x6d\x99\xc0\x8f\x4f\x87\xe7\xe9\x76\x8e\x47\xc4\x87\xf5\x6a\x89\x5e\xc9\x88\x27\x21\xca\xcc\xa7\xa7\x1c\xdf\x96\xdd\xf6\x24\x4e\x65\xfa\xed\x3a\xd4\xca\x23\xb0\x4d\x05\x50\xbe\xcd\xc1\x94\xcf\xc9\xdc\x1d\xd3\xef\x25\x33\x17\x74\x2b\x5c\xed\x0b\x3a\xad\xf6\xbf\x3d\xe1\xfc\xb3\xad\x42\x01\x4a\x94\x2a\xc8\xc5\xe8\x17\x25\x52\xf0\x60\x21\xff\x66\xde\x54\x69\xf0\x4d\x9c\x6a\x81\x03\x8a\x59\xd5\x8e\xa5\x43\xc4\x61\xd1\xcd\x4a\x3e\x0b\xf5\xfd\xe9\x0b\x83\x07\x44\x3c\x5a\x8b\xb9\xf5\xcb\x4f\x6d\xb2\xdc\x01\x30\xd0\x58\x59\xfa\xe0\xd0\x94\x32\x09\x94\x31\x11\x5e\x9d\xb0\xc7\x75\xdb\x85\x94\xf8\xbd\x0e\x25\x20\x56\x2e\xc7\xe7\xaa\xc7\xc1\xb1\xfa\x00\x0e\xd3\x7a\xa8\xf7\xdf\x1d\x08\x58\x25\x7a\x01\xc5\x95\xed\x89\xd5\x8e\xb5\x65\x06\x36\x95\xf1\x10\xcb\x64\xc7\xe4\xd6\xfd\xb4\xab\x83\x4e\xfe\xd5\x3d\x09\x8c\x82\xc4\x58\x5d\xc5\x73\xaf\x16\xef\xec\xbb\x26\x40\x6e\x23\x73\xc9\x0d\xe7\x48\x58\x6a\x4d\x08\x4c\xe8\x0e\x3d\xe1\xfa\xbb\x1c\x35\xd1\xf5\x72\xd0\x3d\x63\xe9\x2b\x48\xbb\x27\xf9\x88\x9a\x3e\x2c\x40\x74\x85\x7d\x43\xf8\xd1\xec\xd4\x21\x4e\x04\xb4\x9a\xdd\x24\x96\x00\x7c\xbd\x66\xb4\x3a\xee\x53\x4a\x77\x1d\x45\x58\xf1\x0a\x3b\xaa\xc8\xb5\x8f\x56\xc2\xfb\x4c\x80\x35\x28\x84\x06\x83\xd9\x98\xc4\xb5\x14\x85\xd3\xe7\x80\x61\xb0\x5b\x73\x00\x90\x61\x10\x94\x62\x9b\x0a\x1b\xf7\xde\x89\xdc\x95\x34\x25\x96\x2f\x1e\xc2\xba\xee\xad\xcb\x35\x9d\xb6\x6c\xcb\xd5\xe1\x43\x10\x56\x5b\x75\xfd\xcd\x56\x2b\xa1\x08\xcc\xa3\xf4\x4c\x51\xe3\x56\xf5\xcb\x45\x86\x4b\x98\xe9\x11\x5d\xc8\x11\x81\x27\x32\x9d\x3c\x53\x0a\x20\xa0\xdb\x04\xbd\x00\xd3\xc1\x0b\xe3\xdb\x18\x4f\x1e\x72\x53\x04\xa0\x05\x48\x51\x45\xfa\x2a\x15\x2b\x99\xe5\x22\x84\x99\x87\xbf\x3f\x99\x4a\x49\xc9\xf9\xef\x1a\xfa\x56\x95\x92\x7d\xa7\xb8\xd9\xb5\x03\xfa\xb3\xdb\x8a\x78\xe2\x7e\xd7\xbd\x18\x4a\xb5\x22\x71\x60\x24\x4a\xa7\x00\xae\x01\xf4\x5e\x32\xac\x72\xcf\x1c\x51\xa6\x9b\x24\xaa\x3f\xe6\x4e\x5a\x06\xa6\x68\x55\xf0\x94\xab\x5c\x88\x6c\xa6\x28\x71\x82\x6c\x0d\x61\x41\x22\x2e\xa0\x97\x40\x06\x00\xcf\xe6\x48\x67\x39\x16\x3f\xc3\x4f\x96\x5c\x26\x45\xda\xea\x2e\xe3\xaa\x3c\xa8\xd2\xaa\x6b\x94\x2e\xa0\x59\xd6\x34\x69\xae\x12\x22\xd8\x45\xae\x60\xb0\x9a\xf6\x28\x17\x0a\xb4\xbc\x82\x35\xb9\xfd\xe7\xdb\xc5\x4a\x5a\x8a\x23\xfe\x2d\x9b\x6f\xf5\x00\x8b\x47\x4a\xe6\x8d\x8d\x65\x5f\x6b\x77\xfa\x8e\xf4\xdf\xd7\x36\xea\x50\x9e\x3d\x41\xe4\x7c\xdf\x55\x62\x7f\x7c\xf0\xf7\xbf\xdb\x1f\x5f\x6f\xb5\x5d\xb0\x6a\xd7\x5c\xc5\x09\xa8\x9e\xe7\x95\x13\xc8\x03\x46\xf8\xc6\xfa\x09\xed\x32\x60\x16\x6c\x37\x8f\x6a\x48\xed\x7d\xe3\x54\x81\x78\xef\x41\xfc\x96\x9e\x52\x06\x5e\x37\x01\xfe\xfc\xc9\x4e\xf2\x36\x6e\xc3\xb6\x2f\xc1\xa5\x5c\x9d\x9e\x37\xab\xaf\xde\x8f\xf3\xb2\x3f\xd5\x2d\x65\x44\x5b\x91\xce\x2f\x87\x1e\x3a\x72\x33\x02\x50\xd3\x18\xb3\x90\x9d\x6c\xa6\x48\xfd\x0a\x93\x46\x90\x2d\xc0\x0a\xfc\x8c\xfd\xd6\xa1\xf7\x7f\xfb\xaf\xb6\xfe\x7a\xc7\x96\x30\xd6\x40\x72\xa0\xa3\xa8\x48\x21\xa3\x43\xb7\x4e\x26\xf0\x6c\x1a\x42\x22\x39\xc6\x13\xd9\xe5\xe1\xd1\x7d\x6a\xf2\x1e\x5c\x98\xa1\xf4\x52\x53\xb8\x5d\xa2\x8e\x97\x3b\x0b\x89\x70\x3a\xcd\x72\x96\xe5\x62\xdb\x68\x95\x4a\x4e\x57\x59\xaa\xee\x08\xb7\xcb\x0b\xe5\xf5\xf4\x75\x07\xd8\xe8\x71\xa0\x89\xf7\xc7\x87\xdb\x1b\xb6\xe5\x3b\x80\xb4\xe4\x9a\x34\x06\x81\x82\xa6\xba\x7f\xf7\xcd\x40\xf9\xe5\xcb\x9b\x0d\xc7\x94\x70\x6c\x2d\x61\x27\xee\x34\x44\x2b\x76\x08\xd6\x0c\x2d\x49\xb3\x95\x53\x9d\x9c\x6d\x13\xae\x04\xd2\x85\xc2\xfb\x9f\xb3\xca\xe3\xc3\x34\x95\x0b\x58\x13\x10\x00\x3a\x10\x4a\xf0\xa7\x85\x6a\x82\x04\x96\xd5\xf7\x8e\xca\x4c\xb5\xda\x88\x4e\xbc\xce\x27\x24\x11\xe5\x91\xd9\x26\x58\x9d\x66\xb3\x6d\x2e\x61\xcb\x33\xc0\x52\x0d\x98\xa8\x6e\xa9\xc0\x99\xb2\x4a\x50\xfa\x25\x63\x31\xd6\xef\x15\x32\x43\x85\x5d\x8c\x65\x02\xae\x81\xec\x0b\x26\x5d\x53\xae\x32\x33\xa1\x10\x8e\x11\xcf\x42\xb1\x7a\x35\xd8\xe4\xf2\xda\xa5\x26\x71\x92\x48\x7e\xa0\x65\xe8\x03\xc7\xec\x98\x0b\x4c\xa3\x76\xdd\x7e\x66\xcf\x4f\x7c\xdb\x85\x3c\x3e\xba\xc5\x7d\xb3\xe4\xaa\x97\xab\x5e\x27\xa8\x6a\x01\x23\x79\x09\x7e\x1c\x8e\xde\xa3\x3a\xd2\xfc\x34\x52\xfd\x0d\xd0\xe6\x3e\x0d\x9a\x7c\x80\xed\x09\xa8\x2f\x1c\x2c\xc0\xf9\xcb\x66\x97\x03\xdf\x33\x6a\xc0\x92\xe6\xfd\x83\x10\xec\x8b\x93\x91\xfd\x42\x7a\x02\x5e\xc1\xbf\x6d\x5c\x27\x6a\xa9\x8f\x33\x06\xe9\xaa\x86\xa4\x39\x6a\x54\x9a\xfb\x79\x2c\x56\x07\xe0\xf0\xea\x75\x6b\xb8\x1a\xdf\x6b\x0f\x32\xe7\xce\xdf\xc9\x09\xd9\x6d\x7b\x6a\xce\x67\x98\xe2\xc3\xe4\x4e\x4b\x8b\x24\x07\x65\x5d\xe0\x6a\x7b\x52\xfa\x45\xa1\x2f\x40\x4f\x62\x6f\xcd\xfe\x83\x03\x0c\x48\xd7\x08\x9c\x53\xa0\x35\x7c\x07\xe4\x71\x63\xf7\x6f\xf6\x80\x61\x6e\xec\x33\xb0\x23\x67\xe0\xfc\x10\xaf\x31\x58\xf3\xb7\xe3\x11\xfb\x69\xc4\x2e\x46\xec\xfc\xfc\xfc\xdd\x88\x09\x1e\xad\x6d\x8f\xf0\x27\x08\x7a\xc9\xf9\xca\xb4\xed\xd4\xb7\xfd\x03\x80\xec\xdb\x1c\x56\xe6\xc8\x34\x06\x9a\x07\x1a\xdd\x3e\xf2\x60\x5f\x01\x71\xf0\x28\x28\x63\x53\x82\xd1\x5a\x4b\xdf\x29\x40\x97\x89\x48\xa7\x16\x9f\x96\xe5\x3a\xb5\x58\x9b\x67\x9e\x72\xa9\xa0\x3c\x88\xd7\x91\x86\xf4\xe4\x80\xd2\x4e\x7c\xe3\x1b\x78\x7f\xa9\x1c\xab\x8f\x19\xa6\xa9\xeb\x7f\xbe\xdb\xca\x08\xc6\xf3\x25\x95\x79\x6e\x4e\xe7\x6c\xa6\x1e\xd8\x87\x7f\x67\xe3\xed\x36\x11\x6c\xcc\xfe\xc6\x7e\xe2\x8a\x2b\xce\x7e\x62\x7f\x63\x17\x5c\xe5\x3c\xd1\xc5\x56\xb0\x0b\xf6\x37\x33\x6c\xa6\xbd\x1b\x6d\x8e\xc3\xdd\x88\x71\xa6\x8a\x04\x4f\xfd\xb7\x16\xc7\xf2\xce\xbd\x17\xf7\xb3\x63\x25\x6c\x33\xbd\xa1\xa3\xf0\x2f\x58\x7c\x04\xc5\x1f\x6a\x95\x88\xdc\x0a\x47\x97\x10\x47\xf8\x80\x33\x78\xd3\x0f\x33\xe5\x62\x79\x7f\x31\x3d\xfe\x0b\xfb\x1b\xbb\x29\x92\xc4\x74\xc9\x18\x1a\xb3\x90\x3e\x30\x8b\x00\x17\xea\xfc\x45\x3e\xc9\xad\x88\x25\x07\x0c\xb8\xf9\xd7\xfb\x29\xcc\xf6\xbc\xf0\x0c\x21\xe1\x9e\x76\x8c\xd3\xdf\x85\x26\x6a\x48\x61\x8f\x23\x1e\xb7\x93\xdf\x71\xf3\x2b\xff\x74\xb8\x47\xe4\xf9\x91\x68\x3f\x90\xc3\x8a\x6c\xe1\x21\xc1\xf9\x41\x26\xa0\x72\xd8\xda\xb6\x1a\x8e\x82\xf0\x50\x3f\xd6\xc8\x02\x5f\xfe\xc9\xef\x90\x3d\xc8\xcb\xfb\x9a\xdc\x1a\xf5\x72\xa9\x54\x0a\x7c\x49\x5f\x2e\xde\x2b\x2b\xe4\x28\x97\x7f\x29\x0b\x06\x94\x86\x58\xcb\x5e\xca\x0a\x95\xce\x3e\x52\xec\x02\x0a\xcd\xcc\x45\x46\xc9\xe4\xbd\xd9\xaa\xef\x6f\xb4\x32\xd7\xd6\x4c\xae\xb0\xc4\x1d\x10\x10\x19\xd0\x50\x59\xa7\x60\x5a\x76\x59\x83\x2d\x00\xfe\x81\xe9\x12\xa2\x72\x72\x63\x05\xcc\x14\x24\xbb\x99\x32\xbf\xa0\x13\x09\x10\xba\xd2\x71\x77\xe1\xd3\xac\x86\x23\x3d\x8b\x0c\x72\xd0\x78\xc3\x02\xeb\x92\x3d\x3c\x8a\x33\x0b\xaa\x4d\x8e\x88\x8a\xdf\x04\x2c\x20\xd4\x9a\x2d\x11\x45\xf0\xcf\x42\x24\x5a\xad\xcc\xaa\x68\x33\x02\x7a\xc3\xe5\x31\x39\xf1\xb0\x0b\xd8\x58\x6b\x0f\xcc\x61\x49\x5f\xa1\x29\x09\x24\xf2\x49\x7b\x0a\x64\x76\x5d\x44\xd6\x9d\x86\xf4\x72\x2d\x2f\x71\x64\xc1\xe1\x63\x26\x40\x51\x9f\x92\xb3\x2e\xda\x8f\x07\xa7\x2f\xd8\xc4\x37\xea\xb7\xa9\x3a\x31\x7d\xcd\xa1\x10\xca\x26\xd8\x60\xb2\x0b\xea\xf5\x58\x8f\xbf\x26\xbc\xef\x35\x45\x30\x1b\x15\x2f\xe1\x7b\xa6\x35\xfa\xd3\x50\x55\x4b\x3b\x7a\xa7\x40\x3e\x7d\x45\x92\xeb\xb9\x5e\xda\x22\xb0\xfe\x67\x7a\x8d\x66\xbc\x1f\xf4\x24\xa4\x16\x0c\xe9\xb8\xeb\x0b\xa7\x2d\xdf\xa0\xd5\x9c\x32\x12\xfd\x3a\x5b\x1d\xb0\x5b\xf5\x11\x7f\x7e\xa7\x13\x19\x75\xe3\x75\xec\x71\x05\xd2\xf0\x35\x00\xc4\x42\x00\x80\x8d\xe2\x3f\xd4\x29\xf4\xd0\x73\x11\xe5\x3e\xe3\x56\x7f\xb9\x41\xe1\x30\x0a\xb0\xba\x56\x40\xf9\xc5\xa5\xb4\xe0\xa8\x01\xce\x22\x20\x97\xc4\xd0\x23\x54\xc5\x40\xaa\x37\xe2\x14\x91\x2d\x75\x04\xec\xd5\xcb\x5a\x27\xe6\x6a\xa2\x62\xe2\x7f\x9a\xa9\xad\x48\x23\x9d\xf0\xdc\x58\xc3\x17\xe2\xf8\x90\x49\xec\x19\x9c\xdf\x02\x36\x0f\x10\x34\xef\x48\xa6\x42\xb8\x94\xab\x6d\xbe\xe3\x10\xb2\xb3\x60\xa5\xea\x8e\x0b\xc8\x9c\x0e\x6c\xd3\xb5\x0a\x3e\x13\x04\x06\x87\x82\x2a\xb6\x2b\xc9\x33\x33\xe8\xa5\xfe\x0c\x9b\x61\xe1\xc8\x79\x23\x7f\x8f\xc8\x2b\xf3\x4a\x57\x89\xea\x50\x02\x8f\x17\xd6\x75\x20\x9e\x22\x13\xd0\x9d\x8d\xe0\xe8\x9a\x78\x56\x1d\x9a\xd4\x99\xf2\xe9\xc2\x37\x59\xe8\xa6\x34\xce\x33\xd2\x54\x59\x38\xcf\x88\xbd\x29\xbd\xe8\x1b\xe0\x79\x52\x1a\x9e\x47\x29\x9d\xd2\xd0\xc0\x72\x1d\x31\x99\xcf\x94\xcc\x70\x65\xa6\x22\x11\xcf\xa6\x77\x61\xec\x94\xa0\x1f\xf6\x2a\x69\x5f\x1b\x10\xa1\xdc\x16\x12\x3a\x85\x43\x60\x54\x48\x43\xbe\x20\x0e\x71\x5a\x50\xaa\x2f\x14\x70\xf3\x8a\x6f\x66\x03\x48\x48\x0d\x20\x1a\x22\x16\xca\xf6\x0f\x40\x12\x28\xa2\x34\x53\x93\x25\x54\x73\x41\x0d\x59\x1c\xe3\xa5\xcc\xb2\xb5\x3a\xf2\x06\x49\xb1\x52\x4d\x57\x54\x27\xa0\x8d\x2a\x2b\xb8\x93\xc4\xb3\x48\x77\x39\xc4\x38\x61\x5c\x95\xe0\xf9\x9a\xc9\x7c\x04\xac\x1b\xd6\x70\xcc\x14\x8f\x49\xa4\x8e\x9a\x33\x43\x03\xeb\xbe\x63\x9e\xe9\xf3\x85\x7e\xee\xf2\xf3\x8e\x05\x41\xe1\xae\xde\x26\x5c\xcd\xd1\xa0\xfe\x0a\x30\xa8\x40\x00\xa7\x2d\xf3\x57\x2c\xe6\x4e\x37\xff\x24\xfd\x74\xde\xcf\x7d\x49\x96\xca\xb8\x75\xf6\x41\x23\x5c\x0c\x9e\x29\xd0\x7a\xeb\x2e\x6c\x41\xc9\xf6\x94\xd9\x84\x64\x7f\x2b\xe0\x11\x52\xbc\x92\x98\xb7\xab\x75\x1f\x44\xca\xae\x80\x1f\x15\xae\xd3\x67\xe6\x2b\x67\x48\x75\xda\x87\x23\x45\x6a\x0e\xd3\x41\x68\x91\x3d\xdd\x7a\x5d\xc4\x48\x6b\x58\xa1\x8e\x1c\xb1\x6f\x1b\x64\xbf\x10\x06\x2d\x30\x2c\xe5\xa2\x1e\xcd\x02\x47\xe1\xb5\x44\x37\x40\x0d\x4f\x19\xb2\x2d\xcb\xa0\xf7\xae\xa2\x84\x7e\x9d\xb3\x89\x62\x36\x7a\x31\x62\x6f\x70\x61\x65\x6f\x28\x22\x47\x2a\x59\x94\x4a\x8e\x69\xf7\x50\xdd\x59\x15\x99\x80\xe8\x5f\xbf\xdd\x30\x31\xd2\xc9\x16\xf3\xaa\xe3\xf2\x93\x04\xf4\xf1\x21\x05\xa6\x98\x54\x5b\x60\x03\x74\x48\xe2\x2d\x74\x87\x3e\xac\xf6\xc1\x5d\xff\xc2\x36\xfd\xc3\x7e\xb2\x3f\x34\x43\xb4\x2d\xe8\x3c\xb5\x9f\x33\x9d\xce\x94\x6d\x8d\x22\x74\x19\x12\xaa\x57\x9b\x0a\xd8\x3e\xc8\x05\x0e\x56\x2a\xe4\xf4\x2d\x87\x3e\x48\x33\x78\x4a\xab\xaa\x15\x00\x8c\xc0\x42\x78\x7d\xbf\x73\x36\xf6\x4f\x33\x8e\x87\x59\xe0\x1b\x3c\xe6\xab\xb4\x37\x49\x62\x06\x45\xe6\x96\x65\x27\x00\x2a\x67\x05\x70\x45\x2d\x0b\x63\x8c\x02\x42\xad\x99\x32\x83\xc7\x96\x12\x60\xb0\x34\x2e\x33\xf5\x49\x67\xb6\x2e\x36\xf3\xe3\x61\x21\x95\x34\x6c\x6f\x9c\x94\x00\xfd\xe1\x12\x0e\x6d\x0a\x81\x57\xb4\x25\x01\xa1\x4e\xc5\xed\x3b\x5d\xa4\xfe\xa5\x22\xae\x66\xea\xbf\xcd\xf0\xa0\xb2\x9b\x93\x45\xd4\x4b\xdc\xc2\x56\x8b\x93\xbd\xfd\x82\x8d\xbe\xfd\xd7\x77\x5f\xde\x61\x7d\x7a\x91\x81\x7a\xcb\xa8\x7c\x80\x38\x6e\xc5\x22\x49\x20\x31\x6b\xdf\xc0\x95\x95\xfb\x47\xf0\x2e\x94\x0a\xdd\x71\xe6\xaa\xec\x62\xf4\xd9\xe8\x5d\x2b\xd8\xc7\x62\xc7\x2c\xe2\x79\xb4\x3e\xb3\xbe\x1c\x99\x31\x7b\xfa\xd1\xf4\xa1\x8c\x83\xf1\xb4\x9a\xe9\x05\xcd\xfd\x2b\xdd\x38\x75\xc4\xd2\x7a\x31\xaf\x00\x38\x93\x69\x69\x55\x86\x1a\xa4\xb8\x38\xbd\x30\xa1\xf7\xf3\xdc\xd7\xad\x36\x83\x0f\xa0\x52\xd0\x58\xf1\x8d\x88\xd9\x1b\xa8\x7d\x78\x63\x27\x7f\xa6\xb6\x8b\xf3\x64\xb7\xcc\x89\xac\xc5\x0c\xca\x39\xb0\x97\xef\x39\xe5\xe6\x71\xfd\x9a\xb4\x67\xb0\x5b\x2f\x5a\xcd\xbe\x8e\x1b\x1b\xf7\xa4\xfe\x0e\x0b\x86\x7c\xdc\xe8\x3c\x94\x11\x33\x65\x72\x4a\x9e\x3d\x8d\xd8\x22\xe5\x0a\xe8\x7c\xe3\xd0\xa9\xf2\xbb\xd3\x5c\xcb\x88\x09\x85\x12\x38\x5c\xf1\x64\x07\x50\xea\xd1\x4c\x21\x6d\x0c\x10\xbd\xed\xa2\x44\x46\x28\x84\x5a\xf1\x83\xc4\xb3\x50\xf9\x15\xd5\x49\x5b\xcc\xf6\xb1\x99\x56\x57\x77\x7d\x14\xa1\xda\xa4\xec\xed\x70\x5f\x50\xee\x03\x8e\x51\x2a\x00\xcb\xbc\xd8\x05\x18\x4f\xb7\xc0\x47\xa4\x87\x00\xcc\x3a\xec\xcf\xc5\x42\x27\x96\x9a\x68\x72\xc9\x74\x0a\xf4\xac\xb9\xa6\x3f\xc9\xb8\xed\x14\x93\x2a\x16\xdf\x8e\xaa\x0f\xee\x3e\x90\xac\x7b\x67\x1e\x13\xb0\x80\x56\x5f\x16\x76\x51\x2a\xcc\x61\x91\xdb\x1b\x5c\xed\x5b\x59\x15\x70\x36\x4e\xf2\x35\xa0\xc0\x10\x7f\xec\x07\x75\xc3\x77\x2c\x5a\x73\xb5\x0a\xae\xd0\x00\xca\x11\x5b\x9d\xa2\xf0\xc6\x33\x10\xf1\xe8\xd4\xd6\x5f\x51\x55\x11\x81\xa0\x5d\xfc\x17\xb1\x87\xda\x96\x0e\xf1\xd5\x2a\x15\x2b\x28\x89\x2d\xe9\xb5\xa3\xfd\x74\x0c\xaa\xf8\x9c\xae\xb2\xb2\xd3\xd4\x66\xb7\xdd\x5a\xf2\x74\xe7\x8a\x72\x48\xb5\xc6\x0d\x5d\x6d\x58\x47\x4c\x8a\xf3\x11\xfb\x9d\xc7\x5b\x8a\x48\x2b\x57\xd5\xd3\xfc\x0e\xdb\x4a\xa4\x76\x8f\x2d\x6a\x28\xe2\x6e\xee\x3b\x7c\x56\xd3\xbe\x69\x5c\x34\x9d\x65\x51\x39\xcf\x8b\x01\xb6\x92\xf4\xcd\x2e\xcc\x8f\x1f\xf0\xb7\x9d\x90\x64\xbe\x35\xe6\xcd\x12\x68\x98\xef\x1b\x0b\x6f\x9e\xed\x99\xce\x9a\xc6\xba\x39\xee\x17\x74\x3f\xd1\xab\x57\x75\x29\x6d\x95\x74\xab\x4b\xe9\x66\x22\x69\xa9\xfc\xed\x78\xa7\xa1\xa1\x4c\x8b\xcd\x24\xd4\x75\x56\xbd\x6e\x35\x58\x00\xa7\x08\xad\x53\xf4\xdb\x11\xc8\xe0\x0a\x90\x4b\x46\xb2\xe9\x40\x28\xb1\x28\x80\xca\xdd\xf7\xba\x1b\xb7\xf1\x37\x34\x0f\xff\x63\xcb\xbd\xd8\x7a\x26\x4d\x83\x1e\xee\x4f\x1c\xa7\x74\xe0\x39\xe5\x1e\x8f\x1c\xd2\x36\xb8\xa9\x53\xb9\x92\x8a\xe7\x3a\x65\x6f\xef\x2c\xf1\xea\x3b\x47\x16\x0e\xa3\x78\x0a\x33\x51\x1a\x22\x34\x13\xcd\x77\x2f\x80\xf7\x8a\x78\x3e\x8c\x05\xa7\x49\xa5\x75\x2f\x7c\xdd\x7c\x2b\xcb\xf9\x66\x1b\x12\xb8\x39\xf1\x30\x1a\x99\x04\x07\x81\xd9\x8e\x41\x8c\x4f\x66\xbe\x24\x69\xa6\x28\x32\x8e\xf3\xa6\xd3\x06\xf9\xf1\xea\x5b\x82\x1f\x39\x3f\x90\x94\x80\xc8\x4c\x07\xd2\xba\x55\x33\x8a\xf7\xd7\x36\x61\xe0\xef\x05\x25\x47\x1b\x5e\x14\xf9\xa4\x32\x38\xb5\xf1\x8a\xe7\xcc\x86\x39\x25\x6d\xed\xf5\x45\xa2\x8b\x98\x91\xd1\xa0\xec\x64\x7a\x8e\xa7\x0f\x10\xbc\x9d\x9f\xb7\xb1\xdd\x0c\x94\x03\x72\xfb\x1b\x7e\xd7\xbc\xc2\xe1\xb3\x16\x0b\xd7\xb9\xb5\x68\x64\x87\xc5\x9e\x28\x31\xff\x89\x6f\xbb\x2b\xe8\xb9\xbd\x39\x63\xbd\x4b\x28\x80\xdf\xb0\xf7\x5b\x86\xcb\x45\x43\x81\x6d\x66\x58\xa0\xcc\xca\x3d\xc1\x7a\x0e\x03\xc9\x0d\x7c\x78\x21\x22\x93\x67\x4f\x47\x3f\xce\x16\x76\x76\x3f\x6a\xcb\x53\xa1\xf2\x39\x3c\x71\xd8\xc3\xe0\x21\x77\xf0\xf3\x92\x43\xd2\x2b\x20\xf8\x9f\x53\x8d\x71\x5e\x5b\x5a\xfe\x5f\xec\x81\x62\x1b\x99\x95\x8e\x34\xa7\xcf\x5b\x09\x50\x8c\x20\x27\xe6\x26\xae\x65\xba\xe8\x85\x0e\x18\xbd\xe0\x85\x4a\xa6\xb3\xd7\x0b\xf9\xde\xa3\x90\x82\x69\x85\xc2\x3c\x54\x50\x68\x4c\x99\xfd\x9b\x5f\x73\x58\xa4\xeb\xb3\xb3\x8c\xe7\xcc\xcc\x5f\xc2\xfe\x2a\x52\xed\x51\xf2\x24\x47\x1f\x34\xdc\xe9\x0f\x1f\x2e\x59\x84\xfe\x2e\x8a\xe5\x84\x6a\x11\xf0\x17\xaa\xde\xc7\x9b\xe5\x62\x67\xdd\xfd\x96\x54\xc2\x56\x44\x38\x0f\x07\x1e\x9b\xc1\xc5\x2e\xb0\xef\x36\xf4\xe5\x0e\x0b\xbb\x41\xdf\xc3\xbd\x95\xf8\xb1\x36\x7c\x4b\xb0\x27\x42\x58\x56\x83\xf8\xe7\xf0\x12\xff\xf9\x97\xff\x3a\x6f\x93\x4d\x83\xae\x0f\x45\x91\xb8\xce\x7f\x4c\xa5\x50\x31\x24\xe5\x78\x5c\x67\xad\x56\xa5\x28\x6d\xc9\x3c\x9b\x65\x78\x92\x62\xb2\xe6\x73\x30\x9b\xe3\x22\xfa\x0e\x99\x5d\x6f\x64\xdd\xf6\x2d\xe5\x7d\xda\x8e\xea\x6c\x1e\xef\x14\xdf\xd4\x85\xe6\x5e\xb5\x8f\x3b\x29\x92\x18\xba\x48\x4f\xdf\x97\x9d\x88\x45\xf4\x34\xd4\x27\x38\x98\xea\x55\x44\x4f\xec\xe7\xe9\xa7\x6b\x94\x58\x91\xd9\x4c\xdd\xf0\x5c\x3e\x8b\xc7\x34\x71\x61\x61\x34\x3e\x45\x9a\xd8\x3d\x52\xa6\x1e\xc4\x62\xb8\x02\x74\x8c\x89\xa7\xd0\x3a\x0e\x21\x33\xec\x66\x77\xb6\x28\xa2\x27\x91\xbf\x4f\xb9\x8a\xf5\x06\x5f\xe3\x7d\x56\x2c\x97\xf2\xdb\x79\xce\xd3\x77\xfb\x20\xee\x7b\x2d\xe9\x11\x97\x84\x63\x0c\x4a\xfd\x1a\xe0\x84\x6f\xbc\x6d\x96\x71\x28\xd6\xec\x2c\xb3\xe7\xdd\x73\x26\x05\xe2\x8d\x2d\x17\x91\x73\xea\x67\xc3\x13\x06\x8c\x5e\xf3\xc1\xfa\x9d\xae\x58\x6d\x0c\x80\x7d\xba\x6f\x23\x84\x77\x5a\x27\xc7\x46\x09\x79\x62\x37\xc9\x1c\x14\x3c\x8e\x71\xc1\x71\x01\xb8\xcb\xf6\xe4\xd2\xe5\xab\x1c\xa5\x1e\xc5\x1a\x9c\x7e\x16\x40\x29\xa8\x0b\x00\x60\x80\x4e\x74\x80\x0e\xb3\x6d\x43\xc2\x72\x20\x78\x12\xda\x40\xa4\x83\x53\xd2\xae\x85\x2d\x83\x72\x58\xee\xfb\x08\xb4\x43\x95\x1e\x0e\x0a\x20\xa0\xde\x46\xe5\x51\x2e\x98\x10\xd2\x93\xb9\x71\x0c\x9e\x6d\xc7\x13\x55\xbe\x8c\xcd\x21\xcf\x67\xa6\x02\x2f\x07\x89\x39\x2c\x3a\xd5\x8d\x5a\x53\x8c\xa1\xb4\x0c\x8f\x8e\x31\x1c\xc3\x41\xd9\x19\x84\xbe\x0c\xd5\x5c\x20\x8f\x1a\xe9\xcd\xc2\xdc\xf3\xb1\xda\x91\x02\x6f\xe0\x9e\x8d\x2d\xc5\x8f\x0b\x92\x5a\x37\x0b\x39\x86\x2b\x63\xef\x8e\x86\x90\x2d\x29\x34\x59\xfb\xae\x30\xa1\x4f\x7c\x5a\xba\xcc\x66\x3b\x3b\xae\xbe\x81\x34\xd7\xd9\x17\xbe\xcb\x40\xfa\x46\x18\xab\xb8\xc4\x60\x53\xb9\xff\x23\x1f\x02\x71\xf4\x51\xa4\x23\x57\x90\x22\x16\xbd\x8b\xc4\x12\x70\x91\x58\x91\x1f\x4f\xad\xf1\x26\x6b\x1e\x9c\x5f\x27\x7e\x9c\x76\xc6\x8f\x31\x81\xf3\xbf\x23\x64\xdc\x11\x98\x3a\x32\x3e\x16\x1c\x93\xa9\x8e\x48\xfe\x3d\x67\xa0\x88\x87\xe6\xd8\x3c\x7b\xc4\x36\x5c\x2a\xda\x06\x79\x6a\x0c\x64\x2c\x16\xc5\x6a\xd5\x1a\xb6\xf9\xf1\xe3\xbf\xe5\x7d\xf2\x0f\x1f\x9f\xeb\x24\x87\x39\x45\x84\x6d\x62\x9f\x84\x69\x63\xe3\x2b\x7f\x9f\xa0\xda\x89\x22\x84\x93\x3e\x11\x42\x8b\x3b\x80\x6a\x08\x72\xf1\x6d\x6e\xf8\x9f\xa1\xc3\xef\x13\x3a\x6c\xcc\x8d\x54\x7b\x88\x15\xf8\x73\x59\x76\x80\x3b\x7a\x78\x20\x91\x8f\x63\x7c\x83\x5e\x91\xe8\x5b\x26\x54\x9c\xb1\x05\x8f\x5e\x81\xd9\x07\x4e\x9f\xe3\x63\x14\x7b\x12\xde\x0f\x7a\x23\x18\x3c\x2a\x43\x66\x65\x46\x05\x27\x23\x40\x52\x99\x17\xf4\x59\x62\xca\x41\xc3\x71\x85\xd9\xea\xd8\x3b\xad\x6f\x95\x78\x61\xe6\x34\x18\x85\xd0\x92\x60\x7a\x80\x72\xff\x1d\xa9\x36\x7b\x1c\xaa\xab\xae\x4d\xc5\x8a\xa7\x31\xa0\x9f\x69\x4b\x26\x3c\x7a\x32\xff\x0d\xfd\xa3\x27\x12\xfc\xc5\xb2\x7f\x22\x24\xcb\xb7\x26\x55\x84\x0a\xba\x84\xb4\xf1\xfd\xc3\x9f\x67\x8c\x47\xa9\xce\xf0\x16\xef\x54\xa5\xa0\x18\x0d\x1c\xc4\x67\x19\x17\x3c\xc1\x27\xb6\x46\xff\x78\x76\x14\x9b\xe9\x38\x20\x95\x17\xdf\xb6\x09\x57\xe5\x3d\x89\xaf\x0b\x74\x12\xb2\x63\xe5\x3b\x56\xa4\xef\xca\xee\x16\x2a\xb1\xfa\x6d\x85\xde\x67\x2a\x78\xbc\x0b\xb9\x63\xa4\x22\x79\x45\x1e\x6f\xa4\x32\x53\x6f\x35\x43\x9c\x7d\x85\xa6\x23\x9e\x20\x08\x0c\xa8\xb5\x93\xa4\xb2\xf5\x33\xa6\x84\x71\x59\x78\x2a\x93\x1d\x78\xa9\xdb\x54\x9c\x05\xcf\x09\xf6\x37\x61\xd0\x65\x36\x53\xb6\xce\xb9\xc8\xc4\xb2\x48\xd0\x97\x85\xdb\x9e\x7b\x01\xda\x87\x8f\x93\x91\x39\xc6\x72\x22\xb4\x0d\x1e\x8c\x32\x11\xa7\xc0\xf3\xd6\xef\x59\xbd\x62\xde\x9e\xd3\x28\x05\xb8\xe1\x5a\xbf\xd8\xa2\x83\x17\xee\x51\x65\x6d\x67\xc9\xc9\xe2\x9c\xdd\x5e\x8d\xbd\x4f\xd8\x5d\x89\x83\x5e\x96\x42\xa6\xcf\x44\xec\x76\xa2\x54\xf0\x3a\xa4\xb0\x44\x18\x14\x11\xb3\x22\xc3\xda\x05\x33\x87\x60\xad\xed\xb5\x19\xab\x39\xac\x3a\x17\x73\x6f\x27\x33\xad\xd8\xac\xf8\xcd\x6f\x7e\x2f\xd8\x6f\x48\x6e\x13\xac\x0c\x46\xa8\x81\xd5\x08\x5b\x07\x03\xe5\x1e\x20\x90\xf2\xa8\x36\x23\xac\x09\x84\x65\x0b\x09\x01\xc6\xc4\xa3\x35\xcb\x8a\x05\x62\x74\x38\x05\x39\xb9\x72\xa4\x81\xd7\x1a\xe0\x36\x78\x8e\xd9\xde\x0f\x08\x16\xdc\xd1\xf9\x62\x03\x01\x01\x4e\x10\x06\x3a\x14\xe9\x81\x41\xc1\x97\x04\x03\x7e\x07\x4a\x3d\x23\xf6\xb3\x7c\x16\x23\xf6\xb0\xe5\xe9\xd3\x88\x5d\x62\xb8\xf5\x8f\x7a\xb1\xf7\xfe\x7f\x8a\x18\x98\x73\x53\x8f\xd5\xa4\xc4\x68\xd2\x28\xa0\xca\x0c\x42\xfc\xf5\x68\x8d\x45\x58\x80\xf6\x09\x8a\x3e\xef\xd3\x23\x69\xe5\x53\x3d\xd5\x2d\xa6\x1d\xd6\xd7\x7a\xa7\xa9\x5a\x69\x7f\x9e\x52\xd5\x54\x13\xd2\xc4\x9c\x63\xb0\x12\xcd\x8b\x9f\x81\x67\xa2\x53\xb6\x4d\x78\x6e\xd6\x4a\x46\xe1\x67\x5c\x15\x88\xbf\xc3\x13\xb9\x52\x0b\xd7\xd7\xf1\xb2\x0f\x9e\x6f\xb5\x4e\x1a\xfd\xaf\x93\x0e\x60\x2d\xda\xd9\x77\xf0\x26\x58\x43\x90\x85\x5e\x89\x1d\x45\x1f\x39\xf3\x71\xb6\x40\x3a\x1f\x56\x53\x5c\x40\x12\xc1\x0f\x47\x28\x0f\x63\xcc\x0a\xa2\x1e\xd1\x11\xb1\x6a\x62\xdc\x7a\x88\xc6\x89\xa2\x10\x62\x88\xb6\xab\xc5\xf4\xb2\xfa\x73\x5a\xdc\x42\x68\x77\x2e\x9b\x0a\xe1\x87\x6e\xae\xe9\xba\x31\x50\x8f\x3d\xb7\x06\xdc\xe2\xce\xf7\xd1\x00\xda\x22\xbb\x79\x94\xf0\xac\x27\x92\xad\xd1\xee\x4c\xa8\xa1\x0b\x68\xa7\xbf\xcd\xfc\x19\x62\xaa\x9b\x9e\x07\xe6\x4c\x8d\x1d\x0d\x9e\x77\xb5\x9c\x7b\x88\x66\x16\x1d\xe3\xda\xd4\x20\x98\xdd\x73\x26\x8e\x58\x56\x44\x6b\x80\xeb\x97\xed\x54\x68\xb7\xea\x3b\x76\x34\x53\xc6\x59\x41\x15\x09\x0e\x09\xe1\x17\x20\x1c\x97\x7f\x15\xce\x1b\x22\x54\x68\xe8\x00\x2d\xb8\x99\x1a\xad\x1a\x9d\x45\x5b\x39\xc1\xd3\x27\x11\x07\xa1\xbe\x62\x1b\xf3\xdc\x78\xcf\xee\x90\x83\xf5\xeb\xf8\x43\xad\xf7\x99\x85\x2f\x16\x3a\xcb\x15\x4b\x9b\xc8\xa5\x88\x76\x51\x8d\x17\xa4\x04\xc3\x38\x5d\x4c\xf9\xb0\x90\x6a\x17\x7f\x44\xf3\x4d\xf9\x73\xad\xde\x99\xb5\xe5\xae\xff\x77\x22\xd6\x5a\x28\x0c\xfe\xd1\xa3\x62\x7b\xd2\xcc\xff\x04\x9f\xfd\x43\x46\x90\xfa\xb1\x17\x94\xec\x97\xc5\x77\xc1\x8d\x95\xbc\xe6\x46\x54\xd9\x8f\x55\xa0\x2a\xe3\x70\xdf\x20\xe9\x64\x4b\x22\x7e\xcf\x56\xa0\x32\xe0\xd8\x95\x28\x0f\x00\xa5\xd3\x4f\xed\x78\x5d\x24\x3a\x2b\xd2\xee\xcd\x7f\x5f\xee\xb5\x7d\x7a\x03\x83\x21\x2c\xb6\xcd\x42\x40\xf5\x79\x17\x7c\x64\x9f\xa3\x60\xee\x4b\xd5\xdf\x13\xde\xea\x45\xb0\x08\xa1\xf2\x2d\x9a\x40\xb5\xdf\x05\x31\x10\x38\x79\x57\x22\xf4\x02\x2a\x87\x63\x69\x71\x95\xf2\x7d\x3f\x14\xa6\xbb\xf1\x0e\x56\x61\xcd\x29\x85\xcb\x7a\x65\x48\x4f\x91\x7d\xb8\xe3\xf9\x1a\x03\x39\x1b\x9d\x93\x38\x33\x68\x6d\x13\x8c\x07\x53\x12\x8b\x44\x2f\x40\xe6\x0b\x54\xb8\xdb\xd6\x39\x2d\xce\x5e\x43\x57\x9f\xb0\x3e\x6b\xdb\xec\x07\xa8\xf9\x4b\x45\x06\xd4\x0f\xf5\x9c\x5f\x5f\x84\xec\xb0\x60\x53\xbd\xbb\xc6\x6c\x5d\xd6\x82\x4d\x75\xea\x6c\x63\xd5\x01\x2e\x79\x75\x40\x8d\xc4\x55\x58\x37\x07\xb2\xfd\xc8\x22\x4a\x49\x75\x24\x12\xac\xbc\xaf\xd5\x51\x9c\xa9\x31\x7e\x52\x52\x1d\x77\x12\x11\x0e\x91\x48\x92\x59\x6e\xff\x61\x21\x1d\x1b\x87\x18\x38\xf2\xeb\x47\xfe\xc6\x05\xe1\x91\x11\xd4\xad\xa9\x5c\xa6\xc6\x9f\xce\xc0\x5d\xc8\x8a\xc5\x99\xa7\x48\xd0\x29\x38\x18\xc0\xa0\xb1\xe5\x29\xe8\x11\xae\x65\x12\x9f\x35\x1c\x24\x18\x87\xf6\x54\xef\x96\x59\x8b\x27\x64\xbe\xe0\x5e\x88\x35\xba\xee\xdd\x5d\x3b\xc6\xbd\x87\x28\x92\xad\x0f\x45\x73\xdd\x65\x2f\x4a\x97\xa5\x5f\x1b\xa0\xd4\x03\x01\xd4\x22\x11\xf4\x8f\x6f\x27\x4a\x63\xd6\xc7\x4e\x4c\xcb\x57\x2b\xbb\x6b\xcc\xe5\x90\x2c\x47\x3b\x8a\xf3\xfb\x02\x4d\x61\x02\xb3\x2d\x7f\x51\x44\x4d\xd0\x4d\x75\x78\x90\x7d\x68\xd6\x59\x35\xf6\xa1\x06\xcd\xf2\x96\x42\x11\xc9\x4f\x2e\x9d\x9e\xce\x28\x50\xd1\xe3\x49\x12\xb2\x46\xfb\x50\xd0\x4c\xf9\x80\x81\x39\xfe\x93\xc4\xfc\x6f\x54\x35\xdc\x44\x44\x01\xea\xff\xb9\x18\xd9\x3a\x7a\x62\xa0\xa2\x34\xd2\x19\x5e\xcc\xfd\xf5\x79\xdf\x6e\x3e\x95\x3f\xf9\x83\x95\x10\xee\x49\xd8\xe2\x63\xe7\x4f\x62\x37\xb8\xaf\xcd\x29\x13\x2f\xb3\x06\xaa\xe4\xae\x96\x3b\xe2\x69\x6a\x01\xbb\xf4\x54\xc6\xd3\x5c\x2e\x79\x54\x8a\xa0\xb7\xf4\x73\x2d\xa2\xa7\xad\x96\x6a\xb0\x2d\x0a\xfa\x63\x4e\xa4\x5c\x64\x39\xf3\xad\x39\x38\x72\x2f\x3a\xc3\xd2\xc1\x8c\x2f\x92\x01\x2a\xc1\x22\x16\x3d\xbf\x0e\x67\x4e\x47\xae\x7d\xd9\x9d\xfa\x2a\x23\xfc\xd9\xf0\x0a\x61\x99\xee\x78\x25\x5a\x8d\xfa\xd1\x5c\x0a\x68\xf3\x5a\x21\x47\xcf\xc1\xe6\xac\xc4\x4a\xd5\x38\xa4\xa0\xc6\x02\x32\xe2\xc7\x8c\xe1\x81\x05\x73\xc3\x88\x8c\xb1\x9b\x03\x29\xe5\x6b\x7a\x4f\xa4\x99\x0e\x37\x9d\x98\xa8\x7d\xf2\x2a\x1b\x05\x0c\x21\x96\xad\x3c\x5b\x1e\xee\x8a\x0c\x82\xc5\xc6\x6f\x44\x2c\x8b\xaa\x8a\x48\xa9\xc4\xea\x9f\x57\xf0\xff\xf7\xae\xe0\x80\x3a\x79\xcd\xfb\x77\x73\xf1\xde\x3f\x4f\xe0\x1f\xeb\x04\x46\x0e\x2c\xac\x4a\x18\x32\xb4\xd4\xd5\x7b\xff\xf3\xe3\x06\x57\xb0\xa0\x27\xd9\x80\x71\xfe\x8e\x1e\x44\xf0\x58\xda\x22\x03\x8d\x47\x6f\xa3\xdb\x9d\x6b\xf5\x3e\x8a\xbf\x2f\x04\x85\x69\xb5\xed\x1b\x06\xdc\xf2\x70\xe9\x98\x6b\x5a\xef\x60\x6d\x7b\xed\xef\x0f\x95\x72\xea\xe3\x83\x18\xcb\xe8\x92\x50\x37\xd6\x22\x2a\x81\xc9\xd8\x0e\xcb\x18\x70\x2e\xf2\xfc\x4d\xe6\x46\xbd\x6c\x01\x2d\xfa\xf1\x5a\x66\xf9\x2f\x15\x81\x9b\xc3\x14\x72\x5e\x0d\x37\x61\xbb\x8a\xdd\x0c\x7e\xd1\x99\xee\xbf\x2f\x27\xe4\x8d\x3b\x82\x6b\x0e\x48\x99\xac\xa4\x81\xe9\xf7\x90\xf3\xea\x8b\x1b\xaf\x2f\xe8\x6a\xbf\xa4\x7c\xbb\x15\xa9\xcd\x32\xd7\x80\x00\xa0\x0f\x00\x4f\x01\x81\x8f\xb5\x40\x95\xb1\xca\x91\x6a\x4c\x49\xa5\x69\xf8\x1a\x0c\xdd\x79\xf3\xcc\xdd\x14\x49\xd2\x3a\x73\xfb\x69\xc7\x6f\x1e\xaf\xaf\xe7\xbf\x8c\xaf\x1f\xaf\x3a\x69\xbc\x83\xaf\xb5\x8e\x89\xeb\x09\x8d\x89\x17\x0a\x31\x8f\x15\x56\xe9\x4c\xfb\xb7\xc6\xfb\x4a\x91\x24\x65\x8a\xf7\x99\xfa\x42\xed\x00\x64\x0f\xe5\x6b\xcc\xb8\xb1\xce\x81\x2b\x3f\x1f\xbe\xf6\xc5\x34\xfe\x05\x7f\x7b\xc6\xfc\x4b\x7c\x00\x21\x12\x12\x38\x68\x1e\x57\xc2\x03\x1f\xb1\x1d\x10\x20\xd6\xb6\x1d\x4e\x2d\x62\x71\xd8\xf6\x78\x54\xc0\x17\x28\x62\xab\x3d\x71\x92\xdd\x81\x63\xf7\xa5\x1c\xbb\x75\xb6\x3c\xc6\x1b\x01\xb4\x3b\x42\xe9\x01\x10\x54\xf3\xec\xfc\x33\x85\xd7\x59\xd3\xa7\x5c\xb7\xf7\x89\x4d\x08\x7b\x91\x70\xb5\x2a\xf8\x4a\x64\x23\x66\x1f\x3e\x53\x1b\xb9\x5a\x03\x33\x23\x29\xdf\xbb\x0b\x20\x14\xf1\x56\x96\x50\x05\x4b\x28\xd5\x4c\xd1\x3b\xa9\x95\x6f\x1e\x11\x75\x7f\x7c\x70\xaf\x43\x40\x45\x6c\x88\xd4\x13\xd4\x4c\xe1\xe4\x22\xfd\xb3\x0d\x6a\x81\xbf\xcc\xf3\xea\xd2\xe5\xa0\xae\x85\x0a\x83\xc6\xa6\xaf\x20\xbc\x36\x53\xae\x08\x08\x21\x8f\xa1\x7a\x3f\x62\xa1\xb1\x4b\xfb\xed\x89\x9d\x0c\xbb\x27\xa8\x6f\xcd\xab\xfe\xe8\x33\xc0\x6c\xb8\xf9\x00\xa9\xb4\xba\x19\xeb\x79\x35\xe1\x81\xe1\x68\xab\x0c\x85\xca\xaf\xe6\xde\xd8\xf7\xc2\xef\xb4\x02\x16\x74\xb1\x48\x06\x74\x09\xbf\xdf\xd9\x29\x34\xc9\xdd\x9d\xea\x11\xd1\xbe\xaf\x6c\x2d\xb3\x4c\xbb\x1e\xbb\xd0\xba\x65\x5e\x4e\x18\x1b\x2e\x75\x8a\x7e\xb0\x6f\x30\x8a\x28\x3f\x64\xbd\xf4\x28\xd7\xa8\x0e\x91\xb5\x3e\x5d\x1d\x4a\x64\x76\x50\x77\xbc\xff\xd4\xbb\x47\xce\x43\xa0\xc3\x6e\x90\x85\xa5\x73\xae\x64\x60\x5b\xcc\x24\x85\x06\xad\xe6\x98\x44\xf3\x62\x36\x0f\x0a\x82\x99\xf5\x3f\x72\x8b\x68\xe4\x67\x6e\x04\x9d\x8c\x8a\x34\x33\xe6\x92\xec\x1d\x59\x6d\x9d\x32\x3e\x53\x96\xad\xd7\x9a\xe3\xb1\x85\x5c\xa4\xee\xaf\x58\x02\xb3\x45\xb6\x4b\xf0\x58\x73\xa6\x95\xb0\xd6\x70\xa6\xac\x50\xdd\x88\xf1\x45\x66\xf5\xdf\xb8\xda\x39\x51\x36\xe9\x14\x37\xb8\x62\x80\x65\xd9\x6f\xf3\x2a\x6e\x40\xe9\x9c\xff\x17\xf3\x7f\x7f\xff\x97\xff\x1b\x00\x00\xff\xff\xcc\x9f\xa9\xa3\xc7\x5c\x04\x00") +var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x79\x73\x23\x37\xb6\x2f\xf8\xff\xfd\x14\x78\xd5\x2f\xa2\xec\x6e\x4a\x72\x2f\xb7\xa7\x9f\x6e\xbc\x98\xa1\x25\x56\x99\x63\x95\xa4\xd6\x62\x5f\xcf\x63\x07\x0d\x66\x82\x24\x5a\x99\x00\x1b\x40\x4a\x45\x77\xf8\xbb\x4f\xe0\x60\x49\xe4\x46\x26\x17\x49\x54\x39\xef\x8d\x68\xab\x98\x99\x58\x0f\x0e\xce\xfa\x3b\xff\xfe\x0f\x84\xde\xc9\x27\x3c\x9b\x11\xf1\xee\x14\xbd\xfb\xd3\xf1\x37\xef\x7a\xfa\x37\xca\xa6\xfc\xdd\x29\xd2\xcf\x11\x7a\xa7\xa8\x4a\x88\x7e\x3e\x4d\x96\x8a\xd0\x38\x39\x91\x44\x3c\xd2\x88\x9c\xe0\x38\xa5\xec\x78\x21\xb8\xe2\xf0\x21\x42\xef\x1e\x89\x90\x94\x33\xfd\xba\xfd\x13\x31\xae\x90\x24\xea\xdd\x7f\x20\xf4\x2b\x34\x2f\xa3\x39\x49\x89\x7c\x77\x8a\xfe\x8f\xf9\x68\xae\xd4\xc2\x35\xa0\xff\x96\xfa\xdd\x7f\xc0\xbb\x11\x67\x32\x2b\xbc\x8c\x17\x8b\x84\x46\x58\x51\xce\x4e\xfe\x29\x39\xcb\xdf\x5d\x08\x1e\x67\x51\xcb\x77\xb1\x9a\xcb\x7c\x8e\x27\x78\x41\x4f\x1e\xff\x78\x82\x23\x45\x1f\xc9\x38\xc1\x19\x8b\xe6\xe3\x45\x82\x99\x3c\xf9\x37\x8d\xf5\x1c\xff\x49\x22\xf5\x2b\xfc\x23\xe6\x29\xa6\xcc\xfc\xcd\x70\x4a\x7e\xf5\xed\x20\xf4\x6e\x46\x54\xf0\x4f\x3d\xdb\x2c\x4d\xb1\x58\xea\x15\xf9\x40\x54\x34\x47\x6a\x4e\x90\xe9\x07\xb9\x25\xe2\x53\x84\xd1\xa9\x20\xd3\xd3\x9f\x05\x99\x8e\xdd\x42\x1f\x9b\x05\xbe\x80\xd1\x5c\x27\x98\xfd\x7c\x6c\x97\x09\x5a\x8e\x89\x8c\x04\x5d\x28\xbb\xde\x37\x44\x09\x4a\x1e\x49\xd8\x81\x99\x08\xd2\x13\xf1\x9d\xc9\x05\x89\xe8\x94\x92\x18\x4d\x96\x88\xb2\x45\xa6\x90\x20\xff\xca\x88\x54\x68\x4a\x13\x45\x84\x2c\xf4\xc2\x17\x44\xc0\x0a\x0e\x63\xdd\xcb\x47\xa2\xfa\xd0\x76\x3e\xaa\xf0\x6d\x41\xe4\x82\x33\x49\x64\x61\x11\x10\x7a\xf7\xa7\x6f\xbe\x29\xfd\x54\x9d\x41\x1f\xc9\x2c\x8a\x88\x94\xd3\x2c\x41\xae\xa5\x70\x30\x66\x41\x35\xf9\xe0\x4a\x63\x08\xbd\xfb\x9f\x82\x4c\x75\x3b\xbf\x3b\x89\xc9\x94\x32\xaa\xdb\x95\x86\x4a\x83\xd1\x16\xbe\xfa\xf5\x3f\xea\xfe\xfe\x35\x98\xd1\x02\x0b\x9c\x12\xbd\x2c\x9e\xae\xcc\xff\x95\xe6\xa2\x29\x41\x77\x9e\x53\x4b\x79\xe0\xa5\xd9\x5e\xe2\x94\xe8\x9d\xd7\xdb\x65\xbf\x80\xbf\x05\x91\x3c\x13\x11\x41\x13\x92\x70\x36\x93\x48\xf1\xca\x1a\x50\x68\x41\x13\x71\xf9\x89\xde\x4a\x2a\x88\xde\x2b\x25\x32\x52\x7a\xaa\x96\x0b\x18\xa4\x54\x82\xb2\x59\xb8\x14\xbf\xf6\x5a\x4d\xcd\xd0\xfe\x06\x33\x33\x1f\x34\x4e\x6c\xc4\xfa\xee\x95\x08\x33\x34\x21\x48\x9f\x78\x1a\x13\x41\x62\x84\x25\xc2\x48\x66\x13\x49\x14\x7a\xa2\x6a\x4e\x99\xfe\xb7\x21\xdf\xc8\xad\xd9\xe1\xac\x0d\xfc\xb9\x7a\x65\xee\x25\x11\x7a\xe0\x8f\x34\x26\x31\x7a\xc4\x49\x46\xd0\x94\x8b\xc2\xf2\x1c\x8f\xd8\xdd\x5c\xaf\x43\x3a\xa1\x0c\x4e\x9e\x5e\x4b\x47\x21\x7f\x70\xcb\xf5\x07\xa4\xfb\x43\x19\xa3\xff\xca\x48\xb2\x44\x34\x26\x4c\xe9\x73\x2d\xcb\xad\xfd\x81\x43\xff\x38\x41\x47\x48\xaf\x33\x11\x0a\xd6\x9b\x33\x45\x3e\x2b\x89\x8e\x50\x42\x1f\x08\x7a\x7f\x41\xa5\x42\xfd\xeb\xe1\xfb\x1e\x7a\x7f\x91\x33\x0e\xf9\xfe\x05\x56\xd8\xff\xfd\x8f\xe0\xe8\x29\x3c\x2b\x1f\xba\x77\x7d\x7d\x9a\x6f\xcd\x05\x94\xb7\xf0\x8f\xff\x08\xdb\xb1\xfb\xb5\x9a\xab\xe7\x2c\xdd\xf2\xf3\xb6\x5c\x1c\x96\xa9\xc8\xc0\xa5\xde\xa1\x5d\xf9\x77\xe5\x76\xa8\x61\xde\x72\x47\xee\xad\xc7\x5e\x66\xdf\xf2\x6d\xf1\x6f\x3d\x85\xe7\xe6\xe1\xbb\x30\x70\xac\xe0\x64\x61\xca\xcc\x41\xf4\xe7\x52\x48\x7d\x16\xdd\x09\x39\x10\xb6\xb5\x0b\x3f\x0f\x66\x16\xb0\x74\xc7\xa9\x83\x55\x39\xc0\x79\x27\x34\xa5\xeb\xf6\x77\xc8\x62\x2d\x3c\x5a\x86\xca\xb2\x74\x42\x84\x5e\x06\xc7\x5a\x61\xb6\x13\xcd\x6a\x55\x26\x18\x89\x5b\x4c\xf3\x5f\x19\x11\xcb\x15\xf3\x9c\xe2\x44\x36\x4d\x94\x32\x45\xb4\xa4\x5e\x7a\x3c\xe5\x22\xc5\xca\xbe\xf0\xd7\xbf\x6c\xba\x10\x8a\x3f\x90\x75\xfb\x3f\x34\xbb\x19\x61\x09\x64\x90\x66\x89\xa2\x8b\x84\xa0\x05\x9e\x11\x69\x57\x24\x4b\x94\xec\xc1\x6b\x5a\x3b\x20\xe2\xc8\xdf\x72\xd0\x83\xbb\xdd\x33\x09\xbf\xa0\xa9\x67\x76\x8c\x7c\x56\xd0\xd2\x88\xc1\xfd\x0e\x4b\x14\xde\x5a\xcf\xb0\x94\xdb\xd1\x8c\xe4\x42\x8d\x27\xcb\xe3\x07\x52\xe9\xb7\x91\x72\x30\x43\x58\x29\x41\x27\x99\x22\x7a\xde\xba\x0d\x77\x3f\x03\x7b\x34\x42\x40\x1b\xd6\xf0\x7a\x13\x8e\xa9\x20\x11\xcc\x6d\x93\x03\xe3\xbf\xd2\xf3\xd6\x9a\xd8\xd2\xcc\xfe\x81\x2c\x41\xe6\xa9\x59\x01\xbf\xe5\x23\x36\x62\xe8\x08\x9d\x0f\x6e\xcf\x06\x97\xe7\xc3\xcb\x8f\xa7\xe8\xdb\x25\x8a\xc9\x14\x67\x89\xea\xa1\x29\x25\x49\x2c\x11\x16\x04\x9a\x24\xb1\x96\x6b\xf4\x60\x08\x8b\x29\x9b\x21\x2e\x62\x22\x9e\x6f\x19\x4b\x4f\x09\xcb\xd2\xd2\xbd\x02\xbf\xe7\xa3\x2f\x7d\xa1\xc5\x18\xff\xa8\xf0\xe4\x1f\x95\x05\x86\x19\xeb\xbe\x83\xd6\x5e\x4c\x70\x8a\xe6\x34\x89\x05\x61\x27\x0a\xcb\x87\x31\xf9\x4c\xa2\xcc\xdc\xc9\xff\x2e\xfe\x30\xd6\xd2\x2f\x8f\x49\xf1\x97\xc2\x3f\x72\x71\x6b\xe3\x4f\xbd\xbe\xbd\xf1\x97\xa0\x9d\xb7\xfb\x0e\x7e\xa1\x71\xed\xdb\xf0\xcb\x9a\x39\xb8\x77\x56\x0c\xd6\xbd\xd2\x38\x2a\xf7\x82\x15\xf6\x6a\xdf\x11\x44\x89\xe5\x18\x2b\x45\xd2\x85\xda\xd0\xf2\x80\x51\xa2\x65\xd7\x55\xb2\xea\x25\x8f\xc9\xc0\xf5\xf7\xb3\x15\x41\x8d\xb0\x69\xb8\xd6\x94\x08\xc2\x22\xd2\xdc\xc2\x1d\x96\x0f\x79\x0b\xeb\x05\x5e\xa0\x31\xa4\x97\x1f\xe5\x04\x56\xe9\x38\x17\x7b\xf5\x92\xe4\x6f\xae\x13\x76\x0b\xf3\x91\x1f\xb8\xd0\xc3\x7b\x0b\x02\x6f\x61\xe0\x2f\x21\xf3\x6e\x7b\xa2\xbf\x38\x2b\xc7\x96\xfc\xa9\xb3\x89\xec\xbe\x92\x6d\x2d\x28\x5c\x20\xb9\x94\x8a\xa4\x6b\x6d\x29\x6f\x67\x21\xec\x05\x74\xa8\x03\x2e\xdd\x81\xbf\x81\x53\x5f\xbc\xd1\xbb\xe3\xbd\xc1\x92\xed\xcb\x12\x7a\xe8\xf3\x74\xde\xae\xd5\x53\xbd\x75\xdb\x17\xb8\x7b\xde\xc4\x34\x0b\xb2\xe6\xbe\x07\xf9\x4c\xe6\x8c\xc6\xbd\x72\xab\x3d\x86\x01\xac\x51\x64\x8b\xb6\x74\x7f\xfe\xf4\xa7\xa1\x05\xc8\x98\xfb\xd4\x9c\xca\xc0\x18\x86\x22\x2e\x8c\x2c\x18\xdb\xf3\x6e\x74\xd9\xfe\x5d\xff\x76\x70\x77\x8a\xfa\x28\xc6\x0a\xeb\x03\x2e\xc8\x42\x10\x49\x98\x02\x3b\x81\xfe\x5e\x2d\x51\xca\x63\x92\x18\x8d\xf6\x83\x96\xac\xd1\x39\x56\xf8\x0c\x2b\x9c\xf0\xd9\x31\xea\xc3\x3f\xf5\xc7\x54\x22\x9c\x48\x8e\xb0\x23\x2b\x12\xbb\x26\x30\x8b\x1d\x6b\xc1\x28\xe2\xe9\x82\x26\xde\x8f\xe0\x8d\x37\x94\xc5\xf4\x91\xc6\x19\x4e\x10\x9f\x68\xae\xa2\x35\xf0\xc1\x23\x61\x2a\xc3\x49\xb2\x44\x38\x49\x90\xed\xd6\xbd\x80\xe4\x9c\x67\x49\xac\xdb\x75\xa3\x94\x34\xa5\x09\x16\x5a\xc5\x37\xa3\xbd\xb2\x6d\xa1\xbb\x39\xf1\x63\x85\x71\xe9\xd5\x4c\xf1\x03\x91\x88\x2a\xb4\xe0\x52\xd2\x49\x92\x9f\xf9\xfb\x21\x82\x71\x9f\x5d\x0c\xc1\x5e\x10\x29\xc4\x0d\x0f\x75\x9d\x5b\xfb\x90\xeb\x31\xc5\x8c\x11\xe8\x98\xab\x39\x11\xb6\x7b\xfb\xf2\x6b\xab\xfe\xf7\x97\xb7\xd7\x83\xb3\xe1\x87\xe1\xe0\xbc\xaa\xfb\xdf\xf5\x6f\xbf\xaf\xfe\xfa\xe3\xd5\xcd\xf7\x1f\x2e\xae\x7e\xac\x3e\xb9\xe8\xdf\x5f\x9e\x7d\x37\xbe\xbe\xe8\x5f\x56\x1f\x5a\xb2\x6a\x6d\x46\x08\x47\xb6\xe1\xd9\xea\x6c\xa6\xcf\x65\x33\xed\x7d\xb9\x46\x53\xeb\x94\x6a\x6f\x30\xf5\x36\x0a\xfb\x25\x5a\x60\x29\x8d\x64\x64\x46\x70\x3c\x62\x9f\xb8\xd0\x0c\x6c\xca\x35\x8f\xd0\xd2\x93\x12\x59\xa4\x28\x9b\xf9\x8f\x4e\xd1\x28\xfb\xe6\x9b\x3f\x47\x17\x94\x3d\xc0\x5f\xe4\x10\x17\xa7\xb3\x28\x77\x16\xe5\xdf\x96\x45\x59\x8b\x3e\x27\xa1\x21\x79\xbf\xc1\x55\x5a\xb8\x00\x9f\xb8\x16\x25\x78\xa6\xf4\x9f\xba\x4b\x20\x8f\x15\x21\x56\xed\x0c\x96\x3e\xc2\xaa\xa1\x0f\xc1\x53\x10\xe4\x3e\x53\x09\xcc\xe8\x89\x8b\x87\x69\xc2\x9f\xda\x99\x2b\x3f\x12\xe5\x87\xa1\x05\xa7\xb7\x60\xa5\xfc\xd1\xce\xd0\x0f\xfc\x23\x51\x7a\xec\x37\xb6\x97\x2e\xd8\xaa\x0b\xb6\x7a\xdd\x60\xab\x83\x32\x15\x3e\x3f\x6b\x2d\xda\x15\x0d\x7f\x6d\xf0\xc3\x35\xba\xd9\x1a\xbc\x68\x81\x93\xec\x45\x78\x72\xd1\x15\xb5\x4f\xbe\x5c\x74\x36\xad\xe1\xc9\x85\x61\xbc\x15\xbe\x5c\x18\xf4\xcb\xf3\xe4\xdf\x84\x9f\xa8\x73\x03\x6d\xb9\x50\x6f\x92\x75\xb7\xbc\x95\x5e\xcc\x89\xf3\xfc\x57\x49\x25\xe6\x63\x93\x20\x8f\x0d\xa2\x3a\x5a\x87\x71\xac\x89\xdb\xa8\x0d\xd4\xa8\x8b\xcc\xa8\x86\x62\xd4\xc6\x5e\xec\x16\x6c\xb1\xed\xad\xd7\x3e\x7c\x62\xd3\x5b\xaf\x7d\xe0\xc4\x47\xa2\x0a\xc3\x78\x2b\xb7\x5e\x61\xd0\x2f\x7f\xeb\xfd\x46\xe3\x25\xba\x00\x89\x67\x5c\xba\x2f\xfd\xae\x3c\xdc\x10\x88\xdf\x40\xcc\x43\x17\xe4\xb0\xd1\x1a\x7d\x59\x51\x0d\x5f\x6a\x18\xc3\xdb\x8c\x5b\xe8\x02\x15\xba\x40\x85\xd7\xf0\x28\xbd\xbd\x40\x85\xe7\x55\x7c\xf3\xe3\x35\x76\xb4\x60\x35\xc1\xe0\x50\xfe\xda\xc2\x6d\x05\x7f\x39\x65\x72\xd3\x30\xfd\x46\xed\xf0\x3c\x1f\xdf\x00\x8e\xd0\xcf\x96\x90\x5a\x29\x8a\xa1\x36\x18\xbc\xe3\x4e\x63\xf0\xd3\x1a\xed\xb0\x32\x8c\xb7\xa0\x1d\x56\x07\xfd\xfc\x2a\xe1\xab\xf1\xf2\x67\xba\x8b\xdf\x08\x57\xd9\xfc\xf2\xfd\x82\x45\xfc\x4e\xb4\x7f\x7e\xc8\x86\x83\x99\xd0\xdb\x11\xe5\x5f\xe1\x1e\x6f\x79\x89\xef\x3d\xa9\xae\xe6\xd6\x0e\x6e\xa7\xf5\x29\x72\xab\x2f\x6d\xdf\x10\x4a\xb1\x8a\xe6\xfa\x3d\x63\x11\x6e\x89\x07\x51\x1e\x1d\x25\xf2\x4f\x6f\xf2\x3e\x7f\x89\x2c\xb9\xee\x42\xef\x2e\x74\xdb\x54\x77\xa1\x7f\xc1\x17\xfa\xc1\x61\x30\x1d\x4c\x08\x6f\x97\x05\xd0\x21\xa7\x74\x49\x00\x7b\x5c\x9c\x2e\x09\x60\x23\x6e\xd2\x25\x01\xbc\xfd\x24\x80\x5d\xb4\xb3\x6d\x61\x57\xbf\x44\x3d\xad\x53\xd3\x3a\x35\x2d\xfc\xbd\x53\xd3\x3a\x35\xad\x53\xd3\xbe\x70\xa8\xdc\x4e\x47\x6b\xbf\x10\x9d\x8e\xd6\x7a\xa9\x3a\x1d\x6d\xc5\xe2\x74\x3a\x5a\xa7\xa3\xfd\xb6\x74\x34\xf2\x48\x98\x92\x90\x4f\x18\x6a\x14\xef\x16\x5c\x36\x6b\x5a\x21\x77\xa8\xd1\xb2\xa0\xcd\x62\x5e\x1f\xc4\x71\xfd\x8c\xe6\x58\x22\x1e\x45\x99\x28\x9d\x81\x32\x99\x9d\x09\x82\x15\x41\xb8\x94\xc2\x87\xa0\x65\x24\x48\xc4\x05\x50\x01\x46\x8b\xb9\xe6\xe7\x4a\x60\x26\xe9\xba\x88\x16\xd3\x2a\x8c\x4b\xb7\xf3\x16\xb4\xaa\xea\x22\xbe\x54\xa2\xc3\x84\xc7\x95\x33\x64\x8e\x57\xdd\x93\xd5\x52\xce\xde\xa6\x0e\x00\xf8\x6d\x66\xfe\x8c\x47\x45\x61\xf9\xb0\xe7\xa3\x52\x48\x68\xd9\xf6\xa8\x14\xf3\x7e\xf6\x72\x54\x60\x5c\x6f\xe5\xa8\x54\x17\xf1\x37\x73\x54\xea\xa6\x7e\x08\x47\xc5\x01\x63\xec\xf9\xb8\x54\xd0\x28\xb6\x3d\x32\x55\xe0\x8e\xbd\x1c\x1b\x3f\xbe\xb7\x72\x74\xea\x17\xf4\x37\x73\x7c\x9a\xa6\xff\xba\x47\xc8\x67\xe4\xb6\x3e\x3c\x77\x82\xce\x66\x5a\xd9\x02\x3d\x57\x93\xe2\xfa\xa2\x63\x79\x0e\xea\x76\x07\x66\xfd\x69\xf0\x3d\xbc\x85\x93\xe0\x07\x6b\xc6\xfe\x9b\x39\x02\x95\x79\x1f\x08\xed\x9f\x68\x4e\xfc\x08\x75\x0b\xdb\x9d\x81\x1b\x02\x84\x0f\x17\xc8\x42\x90\x47\xca\x33\x99\x2c\x8f\x44\xc6\xea\xb8\x3d\x98\xfa\x9f\x68\x92\x20\xce\xb4\xf2\xaa\xb0\x50\xee\x31\x9b\x99\xdc\x6a\x7d\x98\x12\x2c\x15\x7a\x60\xfc\x89\xa1\x29\xa6\x49\x26\x08\x5a\x70\xca\xd4\xf1\x88\x0d\x19\xba\x31\x63\x84\x1c\x94\x1e\xca\xa4\x3e\x82\x11\x66\x8c\x2b\x14\xcd\x31\x9b\x11\x84\x99\x2b\xe2\x94\x53\x06\xe2\x02\x65\x8b\x58\x1f\x2c\xdd\x45\x29\x44\x33\x3f\x60\x23\x76\x07\xbe\x08\x89\xc8\x67\x25\x48\x4a\x92\xa5\xee\x43\xd3\xbe\xe2\xc8\xae\x8f\x19\xaa\x4d\x0d\x25\x42\x70\x21\x21\x7b\x65\xb2\xfc\x05\x33\x45\x19\x41\xa0\x65\x4a\x63\xd7\x3c\x42\x17\x5c\x82\xcd\xeb\xfb\xbf\x49\x14\x25\x99\x54\x44\xf4\xd0\x24\x9b\x49\xad\x66\x2f\x12\xac\xa6\x5c\xa4\x7a\x84\x94\x49\x85\x27\x34\xa1\x6a\xd9\x43\x29\x8e\xe6\xa6\x2d\x58\x03\xd9\x1b\xb1\x98\x3f\x31\xa9\x04\xc1\xbe\x77\xf7\x10\x7d\x15\x3e\x33\x04\x20\xbf\xee\x41\x0a\x2b\x4d\x17\xc9\x32\x1c\x7e\x50\x12\x00\xf6\x44\x37\x42\x62\x34\x21\x11\xce\xa4\x75\xcf\x28\xb1\x44\xe4\xf3\x1c\x67\x12\xf6\x4e\x4f\xcf\xe6\xff\x44\x3c\x5d\x24\x44\x11\x44\xa7\x48\x09\x4a\x62\x84\x67\x98\xea\xa5\xbb\x25\x2b\x4a\x18\x78\xa2\xb7\x1b\x68\xa9\xfe\x67\xb0\x5d\xa4\x5c\x10\x14\x13\x85\x69\xb2\xd2\x25\xf8\xc2\x04\x87\x9e\x9d\xde\xd0\xe1\x92\x1b\x3a\x68\x6a\x5b\x71\x13\xda\x1d\xeb\xae\xc2\xb7\x74\x15\x16\xb9\xc2\x41\xdc\x85\xa6\x5c\xca\x1e\x04\x42\x66\x9d\x63\x11\x4e\x76\x94\x0d\x6f\xec\xa0\x36\x96\x0e\xdd\x87\xdd\xa1\x78\x5b\x87\xc2\xec\xda\xe1\x9c\x8a\x17\x4b\xef\xd8\xa4\xda\xd1\x0a\x6c\xd0\x6d\xe3\x82\xf2\xf2\x46\x6f\xea\xa0\xbc\x44\x18\x50\x17\x60\xd2\x05\x98\x34\xae\xcc\xdb\x0c\x30\x39\x18\x0f\x71\x17\x63\xf2\x4c\x31\x26\x54\x76\x41\x26\x5d\x90\x49\xdb\x05\xea\x82\x4c\xba\x20\x93\xb7\x1b\x64\xf2\x9c\x85\x00\xf6\x07\xf7\xbf\x1f\x4c\xff\x37\x25\x9d\x77\x92\x79\x27\x99\x77\xc0\xfd\x7e\x6a\xfb\xe2\x82\xee\xeb\x77\x31\x49\x88\x22\xcd\x06\x3a\x22\x52\xad\x70\x98\x1b\x9e\x32\x2d\x0a\xce\x04\x91\x72\x57\x9e\xe6\x1b\x86\x25\xc4\x91\xa2\x8f\xa4\xce\x1f\x91\xd7\x5b\xf6\x64\x09\x76\x9d\x55\xcc\xce\xb7\xfd\x36\x59\x9e\x1f\x7e\x57\xbc\xa4\xe3\x81\x1d\x0f\xdc\x66\x6a\x87\x63\x8e\x0e\x0e\xf3\x4b\xd9\xa3\x3d\x6f\x5f\x64\xcd\xc2\xe9\xbd\x71\xb4\xe6\x8c\xd6\x50\x38\xe0\xb3\x73\x7f\xb8\x2d\x9d\xef\xc8\xeb\x37\xe9\x6b\x15\x5f\x37\xed\xbc\x4d\xa6\x6e\xc6\xde\x71\xf4\x8e\xa3\x77\x1c\xfd\x6d\x73\x74\x77\x92\x5f\xd5\xbd\x68\x7c\x9c\xe3\x45\x82\xd9\x98\xc6\xf2\xe4\xdf\xb9\xc9\xe2\xb9\xbc\x8b\xfa\x40\xc5\x26\x73\xde\x67\xaa\x8b\x9f\xf5\x27\x49\xee\x17\xf0\xc8\xc8\xed\x1d\x90\xe1\xd7\xf9\xaa\x07\xa9\xed\xdb\xfa\x23\x8d\xbb\xe2\x3a\xc1\x6c\x18\xbf\x09\x97\x64\xed\x0a\xbf\x84\x7b\x72\x97\xbb\x02\x2b\x70\x1a\x61\xca\x8c\x35\x34\xd8\xb7\xd0\xd6\x7b\x18\x5c\x64\x97\x9b\x23\x24\xc8\xfc\xf2\x70\x77\x42\xb0\x28\x87\x37\xed\xce\x45\xd6\xa5\x61\x77\x4e\xa0\x96\x13\xee\x9c\x40\x87\xeb\x04\x6a\xb1\x8d\xcf\xe2\xd9\x7d\xe1\xe3\xf9\x52\xa2\x63\xfb\xcc\x1d\x97\x60\xc3\x62\x94\x2d\x12\x8e\xe3\x55\x5e\xad\x5c\xf0\x0a\x71\xab\x5a\xa4\xef\xb0\x18\x09\x32\xa3\x52\x11\xa1\xf7\xa5\x56\x30\x5c\x9f\xcf\x93\x77\xff\x16\x84\xbe\x7c\xb4\xad\x23\x36\xc3\x6e\xdf\xfd\xa5\xc5\xf0\x6f\xec\x9d\x0d\x9c\x68\x82\x63\x67\x44\x37\xe2\x5b\x8a\x97\x68\x8e\x1f\x89\x8b\x32\x7f\xc4\x09\x8d\x71\x79\xad\x4b\x33\x5c\x35\xa0\xff\xb5\xd9\x80\x70\x71\x38\x82\x4c\x89\x20\x2c\xb2\x2e\x07\x1f\x05\x6c\xf1\xcb\xe0\x9d\xb9\xd6\xca\x13\x41\x70\xbc\x44\x13\x42\x98\x27\x9b\x9a\xfb\xa4\x61\xcc\x7b\x11\x9c\x5f\x5d\x2b\xad\x52\xcf\xa1\xa8\xa5\x2f\x18\xf7\x5a\xcf\x6f\x76\xd7\x41\x77\x57\x3c\xdf\x06\x80\x79\x3e\xde\x2e\x16\xb6\xb3\x4d\xbe\xbe\x6d\xb2\x8b\x85\xed\x14\xfd\x03\x53\xf4\xbb\x58\xd8\x2e\x16\xb6\x33\x83\xac\x9e\x76\x67\x06\xf9\x22\x62\x61\x5b\xc9\xf0\xcf\x08\x7e\x7d\xc0\xd2\x7c\x27\xcc\xbb\xf7\x3a\x61\xbe\x13\xe6\xbf\x50\x61\xfe\x30\x56\xb8\x93\xe4\x3b\x49\xbe\x93\xe4\x3b\x49\xbe\x93\xe4\xf7\xbe\x8c\x9d\x24\xff\x92\x95\xc2\xeb\xc5\xf9\x8d\xd3\xdd\x36\x77\x06\x7e\x24\xea\xad\x7a\x02\x3b\xa9\xbd\x93\xda\x0f\x5b\x6a\x3f\x98\x09\xbd\x9d\x3a\xd3\xed\xe6\xf3\x6a\x05\xa3\xdc\x9d\x6d\xea\x29\x9d\xa2\x3e\x8a\xb1\xc2\x9a\xac\x05\x59\x08\x22\x09\x53\x20\x0f\x59\x37\x7c\xca\x63\x92\x98\x9b\xfb\x83\x66\xf8\xe8\x1c\x2b\x7c\x86\x15\x4e\xf8\xec\x18\xf5\xe1\x9f\xfa\x63\x2a\x11\x4e\x24\x47\xd8\x2d\x3d\x89\x5d\x13\x98\xc5\xee\x40\x61\xc0\xac\xa3\x89\x57\x00\xbd\x08\x4f\x59\x4c\x1f\x69\x9c\xe1\xc4\x87\x16\x8f\x0c\xfc\x6d\x86\x93\x64\x89\x70\x92\x20\xdb\xad\x7b\xc1\xc1\xe0\x4d\x88\x1f\xa5\xa4\x29\x4d\xb0\xd0\xa2\x8c\x19\xed\x95\x6d\x0b\x69\xe5\xd3\x8d\xd5\x95\x80\x43\x29\x7e\x20\x12\x51\x85\x16\x5c\x4a\x3a\x49\xf2\x03\x70\x3f\x44\x30\xee\xb3\x8b\x21\xc8\x45\x91\x42\xdc\x70\x0e\xd7\xb9\x55\x12\x5c\x8f\x29\x66\x8c\x40\xc7\x5c\xcd\x89\xb0\xdd\xdb\x97\x5f\x5b\xc4\x79\xed\x32\x5d\xcd\xe2\x52\x38\xb2\xe7\x90\x97\xdc\xd7\x2d\x72\xa4\xec\xe1\x52\x58\x65\xd2\x60\x15\xe7\xc1\x26\xad\xc4\x9e\x16\xa9\x51\xa5\x1e\xd6\xcb\x3d\xa8\xaf\x50\xca\xb5\xee\xc6\x48\xe1\x1d\xc7\xe0\x4c\x60\xcd\x8c\x3e\x12\x86\x5c\x72\x40\xcf\x5e\x63\x3d\x30\xa6\xfc\xea\x0f\x9f\x49\xbe\xc5\x0a\x61\xa4\x68\x4a\x8e\xd1\x70\x6a\xb8\x45\xa4\x4f\x97\x24\x4a\x96\xa2\xb1\x0c\xe5\xc3\x47\x2c\xce\xc7\xea\xfa\xa6\x79\x70\x8e\x79\xad\xe7\x98\x6d\x96\x28\xc3\x7a\x5d\xe3\x80\x34\x3a\xf1\x1c\x0a\x0e\x5a\x4a\x44\xe2\xbe\x2c\x74\xeb\x5e\x4e\x71\xac\x19\x43\x30\x84\x3c\x4b\x38\x7c\x1f\xee\x74\x2a\x7d\x78\x51\xe1\x7b\xf3\x35\xc0\x95\x02\xbc\x28\xc0\xaa\xb7\x1a\xc6\x1c\xa2\xdf\xb4\x88\x17\x67\x09\x41\x58\x4a\x1e\x51\x0c\x6a\x8c\x91\x01\x10\x55\xce\xd2\xe0\x5e\x72\x5d\xc7\x54\xe2\x49\x42\x62\xbb\xc6\x24\x8f\x76\x5a\x39\x72\x2a\xd1\x84\xe8\x25\xd6\x6c\xaa\xb8\xfa\x73\x23\x81\xd4\x8c\x26\x18\x0a\xa9\x8e\x84\x30\x33\x90\x15\x12\xb4\x21\xce\xb7\x2a\x44\x77\x19\x77\xfe\x69\x27\x52\x77\x22\xf5\x6f\x54\xa4\x3e\xa0\x08\xcd\x83\x48\x1c\x04\x1f\xa8\xe6\xfc\x63\x6f\xd8\x94\x6d\x6d\x3d\x17\x54\x2a\x89\xa2\x4c\x2a\x9e\x36\x4b\x3e\x9f\x5c\x0f\x7d\xdf\xc1\x19\x67\x53\x3a\xcb\xcc\xdd\xf2\xb3\x95\x4d\xfc\x89\xce\xd5\x94\xe5\x82\xb4\x33\x0c\x79\xbb\xf5\xba\xce\x6a\xf3\x11\x6b\x9c\xbc\x35\xed\xbc\x89\xdb\xae\x7e\xe8\x2f\x75\xe9\x6d\xa2\xac\xe6\xf6\x71\xab\x69\x6a\xfd\x62\x7c\x33\xb8\xbd\xba\xbf\x39\x1b\x9c\xa2\xfe\x62\x91\x50\xe3\xb2\x32\x14\x46\x7f\xd1\x93\x32\x55\xa3\x3c\x89\x58\x81\xc8\x80\xb9\x83\x8f\x4c\xeb\x83\xe8\x08\x9d\x5d\xdc\xdf\xde\x0d\x6e\x1a\x1a\xb4\x24\x01\x88\x03\x24\x5d\x24\x20\x1f\x3d\x64\x13\x22\x18\xd1\x12\xbe\x85\x7c\xcf\x3d\x67\xa6\xd1\xc1\x7f\x0f\xce\xee\xef\x86\x57\x97\xe3\xbf\xdf\x0f\xee\x07\xa7\xc8\xd1\x96\x6e\x56\x8f\x4b\x8f\x22\x5e\x32\x9c\x6a\xad\xbb\x58\xde\xea\x5f\x19\xc9\x40\x1c\xa3\x33\x96\x12\xa8\xc4\x50\x68\xd1\x0d\xf8\xa2\xff\xed\xe0\xa2\xd8\xf2\x9c\x84\x38\xf4\x28\xc1\x13\x92\x58\x57\x1e\x78\xa7\xf4\xf9\x09\x10\xfb\x8d\x8f\x2f\x33\xab\xfa\xf7\xfb\xfe\xc5\xf0\xee\xa7\xf1\xd5\x87\xf1\xed\xe0\xe6\x87\xe1\xd9\x60\x6c\x35\xa9\xb3\xbe\xee\xb7\xd0\x93\x55\xb8\xd0\xbf\x32\x9c\x68\x8d\x9c\x4f\x1d\x32\x3d\x7a\x9a\x13\x86\x32\x06\x14\x67\xd4\x7c\xd0\x4a\x42\x58\x1e\x33\xa3\xeb\x8b\xfb\x8f\xc3\xcb\xf1\xd5\x0f\x83\x9b\x9b\xe1\xf9\xe0\x14\xdd\x92\x04\x14\x61\xb7\xe8\xb0\x8b\x8b\x24\x9b\x51\x86\x68\xba\x48\x88\x5e\x0d\x6c\x71\x20\xe6\xf8\x91\x72\x51\xd0\x56\x60\x1d\x81\x15\x40\xfb\x4e\xe1\x1c\x07\x4b\x77\x75\xf9\x61\xf8\xf1\x14\xf5\xe3\xd8\xcf\x41\x42\x1b\x05\xca\x71\x68\x42\x47\x15\x34\xa1\x08\x9b\x80\x10\xbd\x7d\xfc\x91\x08\x41\x63\x52\xa2\xa3\xfe\xed\xed\xf0\xe3\xe5\xa7\xc1\xe5\x1d\xac\x98\x12\x3c\x91\x68\xce\x9f\xc0\x0b\x04\x33\x04\xe7\xd0\x23\xa6\x09\x74\xe6\x36\x8b\x33\xf4\x34\xa7\xe0\x39\x84\x0a\x05\xbe\x67\x63\x93\x10\x59\x35\xa9\xe2\xa5\xb5\xfe\xc2\xc1\xab\xaa\xea\xe5\x93\x54\x7d\xa3\x74\x2c\x56\xbd\x50\xa0\xf2\xea\x8b\xeb\xa8\xb5\xfa\x45\x89\xdc\x9a\x0d\x14\x15\x7a\x69\x9e\x69\xbe\xd7\xad\xed\x13\xc5\x35\x7c\xb1\xdb\x5b\x33\xde\x78\xec\xec\x54\x27\xff\x2e\x30\xe0\x5f\xf7\x18\xad\x65\x12\x74\x56\x62\x17\x06\xd9\xea\x3f\xdb\x6b\xb6\xe5\xe5\x1d\x7c\x59\xf7\x61\xd5\x8f\x13\x7c\xf0\x16\x6e\xe5\x70\xb8\x07\x74\x03\xdf\x84\x72\x96\x13\xd7\x53\xa2\x70\x8c\x15\xd6\x7c\x6d\x46\xd4\x31\xba\x62\xf0\xec\x0e\xcb\x87\x1e\x72\x85\xc7\x10\x17\x28\x17\x64\x5f\x20\xc1\xfd\x8d\x18\x30\x37\x57\xae\x3a\x23\x41\x67\x24\xa8\x5f\x99\x2e\x5a\xae\x61\x85\xf7\x75\xa3\x6e\x64\xf3\xdf\xdf\xc5\x17\x98\xf8\x5d\xe0\x4b\xc9\x46\x5b\xb8\x11\xd7\xda\x63\xdf\xee\x65\xf8\xb2\x16\xd9\xbd\x5e\x8d\xa6\x2e\x59\x77\xef\x99\xff\xeb\xee\xbd\xee\xde\xeb\xee\xbd\x03\x58\xe1\x57\xb7\x6e\xd7\x70\xf7\x57\x35\x6f\xaf\x53\x90\xb7\x86\xc9\xcb\x15\xe2\x4d\x80\xf2\x7e\x6e\x83\x87\x57\x63\xd6\xae\x6a\xc8\x12\xc9\x39\x16\xa6\xe0\x77\xc4\xd3\x94\xb3\xa2\xdd\xbc\x87\xbc\x93\x1f\x8c\x92\x6b\xc1\x54\x35\x65\xe7\xdd\xd0\xb7\x61\xef\x0e\xd6\xe5\x25\xb2\x9b\xf6\x2a\x42\x98\xb4\x81\x4e\xbf\x7e\x46\x39\xa3\xc3\x31\xdc\x2b\x8e\xe1\x61\xcc\xf5\x59\x32\xa1\xf6\x6f\x83\x7f\x1b\xd9\x4f\x1d\x60\x61\x97\xdf\xd3\xe5\xf7\xc0\xef\x1d\x60\xe1\xfe\xa8\xf5\x79\x65\x7a\x1e\x93\x71\xa9\x42\x97\xff\xe7\xb8\xec\xf2\x2a\x3c\x09\xfd\x5f\x85\x07\x79\xc2\x13\xb4\x4e\xe3\x7d\x56\xf5\xba\xe4\x31\xd9\xa1\xb2\x97\x1e\x51\xeb\xaa\x5e\x85\xbe\x0e\x5c\x84\x77\xcb\x64\x44\xf9\xc2\xc0\x9f\x59\x90\x6f\xa0\x98\x2f\xd1\x1a\x55\x43\xff\x9d\x69\x6a\xed\x42\x7d\xa9\x65\x13\x72\x06\xf7\x86\x1c\x35\xed\x6e\x01\x17\xde\x33\x6e\xb8\x0b\xea\x9f\xfb\x1b\xa1\xfe\xf1\xf3\x40\xda\xb4\xbf\x10\x4a\x48\x36\xc5\xab\x60\x5b\x04\x9b\x42\xf7\x6f\xc3\xce\x13\x8e\xf8\x25\x2c\x3d\x2b\x89\xe9\x8b\xbb\x26\x56\x1d\x8d\xee\xb2\x68\xb9\x5c\x5f\xea\x95\xd1\x21\xcf\xac\xb2\xbd\x74\xd0\x2e\x9d\xe9\xe7\x70\x26\xdc\x99\x7e\xde\xb4\xe9\xc7\x38\xaa\xc7\x0b\x2c\x08\x53\x35\x32\x7a\xf9\x3a\x81\xd7\xc3\x1c\x7e\x27\x75\x40\x03\x46\x5a\xb4\x17\xb2\xbf\xaa\xbe\x2c\x5b\x90\x15\x0c\x82\xe4\xa5\x93\x7f\xe7\x7f\x7b\xe9\xbf\x50\xd7\x62\x45\xb4\x97\x01\xcd\x97\xfa\x8e\xce\x6c\xe0\xd7\xee\xe9\x4d\x36\x85\xd8\x89\x82\x09\x79\x24\x49\xbb\xf8\x30\x97\xbe\x40\xe2\x5c\xa0\xca\x67\x57\x13\x37\x56\x15\x50\xeb\x63\xc6\xae\xcd\x7b\x6f\x2b\xb9\xa9\x32\xe8\x97\x8d\x1f\xab\x92\x55\xbb\xe3\xe9\xf6\x9d\x9a\x44\x9d\x20\x1b\x44\xcb\xba\x7c\x1a\xee\xa8\x4b\xc6\xc6\x90\xab\xd4\x74\xbf\xfc\xe6\xa2\x4a\x1a\x77\xfe\x55\x63\x4b\xea\x78\x4f\x1d\xc3\x69\x63\x3d\xde\x57\x12\xa5\x23\xb6\x86\x98\x8f\x26\x73\xf3\x33\x31\x9b\x8f\x44\x7d\x19\x9c\xe6\x23\x51\x2f\xc5\x66\xb6\xe5\x2d\x2b\xf9\x4a\x5e\x43\xe7\xf0\x62\x17\x36\x09\xaa\xf9\xd1\x4c\xd2\x46\xd4\xf8\xdc\xe5\x70\xaa\x8a\x5b\x2d\xb3\x20\xa8\x77\x39\xa6\x5d\x8e\x69\x97\x63\x5a\x3e\xea\x5d\x8e\x69\x97\x63\x5a\x9b\x11\x13\x93\x84\x28\xd2\x28\xb5\x9c\xc3\xe3\xd7\x92\x5a\x4c\xef\xcf\x25\xb3\x98\xd6\xbf\x0c\xb1\xc5\xcc\xa5\x93\x5c\x7e\x33\x7a\x91\xdb\xf0\x83\xd0\x8b\xcc\x49\x5e\x67\x9a\x29\xfc\x58\x13\x84\xff\xe2\xe6\x9a\x6d\x58\xd2\x1e\x6c\x36\x47\xce\x35\x96\xe7\xb4\xb4\x35\xe3\x9c\xc3\x97\x6f\x92\x57\x95\x87\xde\x99\x74\x50\xb0\x75\xcf\xc7\xba\x2a\x67\xae\xdd\xc4\x2d\x8d\xbe\xdd\x79\x1f\x0a\xcb\x6e\xa2\xfb\x43\x65\xdc\x5b\xe7\x49\x7d\x01\x06\xae\xcd\x38\x73\x6e\xf3\xfa\x82\xd8\x72\x67\xff\x7a\xe5\xdc\x9d\x0a\xff\x7d\xb3\xd3\xed\xcc\x7d\x9d\xb9\xaf\x33\xf7\x75\xe6\xbe\xce\xdc\x87\x3a\x73\xdf\x0b\x99\xfb\x36\x93\xe0\x0a\x16\xc0\x2f\x48\x88\xeb\xac\x81\x9d\x1c\xb7\xbf\xe9\x1e\xaa\x26\x7d\x48\x26\xd0\xd6\x48\xda\x79\x12\xe1\xda\xdc\x11\x3b\xed\x9f\xd7\x26\x8d\x04\x55\x49\xdc\x70\xd6\x25\x86\x5c\xbb\x61\xbf\x1d\x26\x27\x9f\x9b\x8f\xed\x12\xfe\xee\xd6\xfd\x8b\x8d\x7e\xef\xea\xae\xd6\xae\x55\x17\x9c\xbf\x62\x71\xba\xe0\xfc\x2e\x38\xff\xe0\x82\xf3\xf7\xae\x52\x2d\xb8\x5c\x05\x1e\x66\xae\xe6\x95\xa8\x01\xee\xa2\x37\xba\x8c\x26\x05\x53\x2b\x2e\x26\x8b\x84\x2f\xc1\xde\xb3\xd2\xf2\x6d\xba\xc8\x95\xa0\x55\x97\xbf\x7b\xfb\xba\x1a\x1e\x71\xe0\xf7\xbf\x1b\xf9\x4b\xa9\x35\x87\x22\xf6\xe6\xf3\x3e\x08\x41\xf7\xe4\xdf\x25\xc8\x8c\x56\x98\xba\x01\xc8\xc5\xfa\x63\x30\x62\xf5\x4f\x82\xf2\x8e\xf6\xd6\x9c\x64\x2a\xc8\x47\x95\xfa\x00\x2c\x88\x50\xcb\xe0\x4d\x92\x2e\xd4\xf2\xbf\x46\x8c\xe6\x55\xe0\xe8\x8c\x71\x61\x78\xa0\xfe\x78\x8e\x59\x9c\xe8\xf3\x23\x7d\x3b\x11\x66\x8c\x2b\x10\x4e\x60\x06\x31\x7a\xa4\xd8\x88\x32\xfd\xeb\x61\x8b\xf8\x80\x56\x67\xb1\xe0\xda\x7f\x43\x27\xf1\xa5\xeb\xab\xad\xb9\x45\x3f\x26\x7c\x02\x15\x41\xb3\xa2\x89\x41\x37\xd0\x39\xa3\x0b\x3b\xf7\x5a\xcc\x43\x61\xf9\x50\x06\xf2\x29\xc2\x3a\x8c\x57\x42\xfb\xac\x79\xb7\x50\xec\x62\xf5\xab\x25\xf8\x9f\xe2\x33\x0b\x08\x04\x8f\x61\xc8\xe5\x71\xb8\x1f\xc3\x0e\xdd\x6f\x79\xcb\xee\x17\x57\x51\x1d\x7e\x14\x44\x89\xe5\x18\x2b\xa5\x19\xd2\x3e\x31\x87\xee\xb0\x7c\xd8\x01\x73\xa8\xe8\x69\x5a\x83\x39\x54\xe8\xeb\xc0\x39\x56\x01\x73\xa8\x38\xf0\x67\xe7\x58\x2d\x89\x7b\x0d\x63\x7b\x7b\xf0\x12\x6d\x8f\xea\x06\x13\xff\xad\x40\x4d\xb4\x63\x5d\xeb\x8c\xce\x6f\x11\x76\x62\x15\x2f\x3e\x98\x11\x96\xae\x83\x2f\xf1\xe4\x16\x2f\xb7\xee\x88\xae\x5a\xa3\x2f\xae\xf4\x6b\x49\x66\x59\x33\xb7\x37\x52\x02\xb6\x2c\x76\xed\x7b\x54\xcf\x63\x7f\x0f\x76\x63\x93\x10\xaa\x61\xb1\xe4\x81\x3f\x43\x2e\xa8\x2a\x07\x8d\x37\xa5\xce\xa9\x0c\xf1\x24\x22\x2e\x8c\xe4\x15\xdb\x33\x6b\xec\x89\x06\x9b\xfb\x14\xf5\x51\x8c\x15\xd6\x87\x54\x90\x85\x20\x92\x30\x65\xb4\x7a\x83\x54\x9f\xf2\x98\x24\x46\xa3\x36\xa6\xab\x73\xac\xf0\x19\x56\x38\xe1\xb3\x63\xd4\x87\x7f\xea\x8f\xa1\x3e\xbc\xe4\x08\x3b\xc2\x21\xb1\x6b\x02\xb3\xd8\x97\xa5\x47\x11\x4f\x17\x34\xf1\xe5\x1e\xbc\x7b\x81\xb2\x98\x3e\xd2\x38\xc3\x89\x87\xd7\x1f\xb1\xc1\x23\x61\x2a\x03\x0d\x10\x27\x09\xb2\xdd\x06\xe8\xf9\xce\x14\xe0\x46\x29\x69\x4a\x13\x2c\x90\xe2\x76\xb4\x57\xb6\x2d\x74\x37\x27\x7e\xac\xae\x94\x00\x4a\xf1\x03\x91\x88\x2a\xb4\xe0\x52\xd2\x49\x92\x1f\xe3\xfb\x21\x82\x71\x9f\x5d\x0c\x6d\x6d\x76\xc4\x0d\x1f\x74\x9d\x5b\x07\x86\xeb\x31\xc5\x8c\x11\xe8\x98\xab\x39\x11\xb6\x7b\xfb\xf2\x6b\x9b\x5f\x5f\x1b\xf2\xbd\xd9\x94\x1b\x8e\xec\xf5\x74\xd6\xd6\x0a\x6b\x5b\x6d\xb5\x9d\xaa\xda\xac\xa7\x3e\x83\xcf\xb9\xbd\x32\x59\xc2\x2b\x2c\xaa\x91\xdb\xe2\x15\x16\xba\x7f\x13\xce\xe9\xc2\x88\x5f\x02\xaf\xf0\x37\xaa\x59\x76\x6a\xe5\xb3\xac\xdb\x97\xaa\x53\x1e\xb8\x42\xd9\x21\x2d\x76\x55\x2e\xba\x50\x93\x3d\x2e\x4e\x17\x6a\xd2\x85\x9a\x7c\xb1\xa1\x26\xcd\xea\x09\x8d\x77\xce\xd8\xdc\xb0\xae\x9d\xb7\x32\x88\x9f\x41\x94\xd2\x62\x7f\x8b\x4a\x77\x75\xda\x42\x2e\x4b\x17\x2a\x53\x6d\xaf\x39\x0c\xe3\x37\xa1\x32\xd4\xae\xe6\x4b\xa8\x0e\x5d\x91\xb4\xbd\x16\x49\x3b\xb8\x69\x77\x52\x65\x27\x55\x76\x82\x53\xcb\x09\x77\x82\xd3\xe1\x0a\x4e\xaf\xa5\x0d\x7d\x49\x78\xd9\x5a\xc4\x2a\x64\x25\xad\x8c\x53\x36\xf8\x4a\xe0\xcc\xc8\x16\x09\xc7\xf1\xba\x88\xa3\x9f\x03\xf1\x6d\x85\xdc\x17\xb4\x2b\xf2\x38\xe5\x92\xf8\xb7\x4a\xb6\x33\x0d\xe8\x1e\xdf\x82\x68\xa7\xc7\x69\x46\xdc\x22\x3a\x32\xec\xf0\xdd\x5f\x5a\x0c\xfc\xc6\xde\xc9\xc0\x69\x26\x38\x76\x00\x06\x46\x3c\x4b\xf1\x12\xcd\xf1\x23\x41\x53\x4c\x13\x63\x9f\xa3\x31\x2e\xaf\x6f\x69\x6e\xab\x06\xf4\xbf\x36\x1b\x10\x2e\x0e\x27\xcf\x68\xd4\xf7\x85\x91\xaa\x22\x9c\x38\x77\x1f\xbc\x33\xc7\x12\xe1\x44\x10\x1c\x2f\xd1\x84\x10\x16\x64\xb2\xb5\x1d\xf3\x5e\x04\xe3\x57\x0f\xcf\x0c\xe9\xe6\x55\xa3\xbc\x81\x6b\x40\xbc\x62\x21\xee\xf1\xb9\x14\xcb\x32\x27\xd9\x41\x87\xdc\x45\x71\x94\x7f\x7a\x2b\xcc\xe5\x25\xd4\xc4\x2f\xd8\x8b\xd4\x79\x8a\x56\x87\xe1\xed\x29\xaa\x69\xc4\xee\xb4\x6a\x95\x63\x30\x04\x29\xb2\xe8\x0f\x6e\xb9\xfe\x00\x11\xfa\x36\x6a\x3f\x59\xe6\x9a\xb7\x2c\xb7\xe6\xe5\x32\x74\xa4\x85\xe2\x88\x08\x65\x40\x1e\x98\x22\x9f\x95\x44\x47\x28\xa1\x0f\x04\xbd\xd7\xa7\x03\xf5\xaf\x87\xef\x7b\xe8\xbd\x29\xaa\x8f\x16\x09\x66\xf2\xfd\xc1\x68\x1f\x9d\x8a\xde\x25\x19\x77\x9e\x9f\xce\x80\xd1\x19\x30\xf6\xbe\x8c\x87\x64\xc0\x78\x45\x19\xdd\xe4\x36\x3d\x4b\x31\xdb\x43\x91\xd6\x3b\x61\xbd\x13\xd6\x3b\x61\xfd\x8b\x15\xd6\x0f\x63\x85\x3b\x49\xbd\x93\xd4\x3b\x49\xbd\x93\xd4\x3b\x49\x7d\xef\xcb\xd8\x49\xea\x25\x49\x1d\xfe\x72\x68\x01\x9b\x8a\xed\xad\xc5\xf5\xed\xa0\x01\xda\xb9\xe9\x2c\x36\xc0\x5b\x91\xcc\x3b\xa9\xbc\x93\xca\x0f\x5b\x2a\x3f\x98\x09\x7d\x79\x09\xc1\x5d\x4a\x6d\x97\x52\xdb\xa5\xd4\xbe\x46\x4a\xad\xe3\x25\xab\x24\x9c\x55\x75\x7d\x7e\xb0\xcc\xe5\x2b\xca\xa2\x24\x03\x51\x55\xff\xfc\x6d\x46\x93\x18\x81\x8a\xa4\x35\x5d\xca\xd9\xd7\x40\x4f\x40\x0a\x30\x4e\x57\x89\x62\xb5\x04\xf3\x43\x85\xd5\x1d\xac\x10\x93\x8f\x76\x5b\x18\xb6\x7d\xed\xa9\x2b\x8c\xb1\x4d\xf5\xbf\xc2\x6f\xae\xa1\x03\xaa\x09\xd8\x73\x62\x89\xe6\x48\x6e\x7c\xcf\x5c\x1d\xb0\xb6\xcf\x8d\x6a\x05\xfe\x68\x3f\x7a\x5b\xa5\x0c\xaa\xa3\xee\x2a\x04\xa2\x60\xd7\xba\x0a\x81\xcf\x38\x6f\x77\xce\xd6\xcc\xdc\xd1\xa8\xb1\x85\xbf\xd1\x69\xbf\x7a\xb0\x63\xf3\x49\x7f\xd5\xd0\xc7\xda\x8b\xac\x92\x5b\x77\xf2\xef\xda\x7b\xea\x15\x0a\x23\x6e\x7c\x39\xed\xa5\x44\xe2\x2e\xd7\xd3\x47\xa2\xbe\x94\xbb\xa9\x2b\x93\xd8\x95\xd7\xd9\xd3\x74\xb7\xba\x7b\xde\xec\x6c\xbb\xa2\x90\x5d\x51\xc8\xae\x28\x64\x57\x14\xb2\x2b\x0a\x89\x7e\xe3\x45\x21\x37\x96\x5f\xf7\x50\x1e\x72\x17\xe9\xd5\x74\xff\xa5\x08\xb0\x5d\x89\xc8\x4e\x86\xdd\xdf\x74\x7f\x5b\x32\xec\x01\x5a\x50\x0e\xa2\x16\xa6\xb7\xa0\xbc\x3a\x2c\x91\x67\xed\xad\xa1\x89\xc2\xb8\x17\xff\xf5\x5e\x11\x8a\xdc\xa6\x75\x28\x45\xf6\xff\x3a\x94\xa2\x0e\xa5\xa8\x61\xd6\x5d\x60\x75\x87\x52\x84\xba\xd0\xe1\x2e\x74\xf8\x90\x43\x87\x5b\x6c\x63\x87\x52\xd4\x52\x64\x7c\x26\xa4\x22\x27\x73\xed\x84\x56\x54\x23\x0e\xae\x47\x2c\xfa\xb1\xaa\x11\x1d\xac\xa8\xe7\xc6\xda\x21\x17\x75\xc8\x45\xbb\xd2\xce\x41\x28\xa0\x2f\x88\x60\x54\xc7\x61\x36\xc9\x8b\xae\x61\x2e\xbb\x2a\x98\x6f\x03\xcd\xc8\x8d\xb6\x4b\x92\xee\xd2\x31\x0e\x3f\x1d\xe3\xe0\x92\xa4\x0f\x46\x53\xe9\xd4\xf9\x2e\x4f\xba\xcb\x93\xee\x8c\x1d\x9d\xb1\x63\xef\xcb\x78\x48\xc6\x8e\x57\x96\xdb\x9f\x11\xd5\xe8\x10\x25\xf8\x4e\x80\x37\xef\x75\x02\x7c\x27\xc0\x7f\xa1\x02\xfc\x61\xac\x70\x27\xbd\x77\xd2\x7b\x27\xbd\x77\xd2\x7b\x27\xbd\xef\x7d\x19\x3b\xe9\xfd\xc5\x90\x8e\xea\x44\xf8\x8d\xd1\x8e\x36\x74\xf3\x05\xc9\x6c\x6f\x49\x5a\xef\x24\xf5\x4e\x52\x3f\x6c\x49\xfd\x60\x26\xd4\x21\x1f\x75\xc8\x47\x1d\xf2\x51\x87\x7c\xb4\x95\x8c\xf4\x1f\xf6\x58\xbe\x0b\x6e\x62\x7f\x65\xbf\xfb\x36\xe1\x93\xbb\xe5\x82\xe8\xff\x9e\xd3\x94\x30\x09\x12\x2d\x55\xcb\x50\x26\x6a\x58\xf9\xea\x9a\xbf\xbb\x1d\x5e\x7e\xbc\x08\x53\xd5\xde\x7d\xba\xbf\xb8\x1b\x5e\xf7\x6f\xfc\xba\xf8\x59\x85\x6b\x61\xbf\x2b\x88\x75\x96\xe4\x6f\x88\xd6\x5f\xe1\xd4\xdc\x2a\xac\x32\xb9\xdd\xc8\x6e\x06\xb7\x83\x9b\x1f\x20\xd5\x6e\x7c\x3e\xbc\xed\x7f\x7b\x51\x20\x88\xc2\xf3\xfe\xd9\xdf\xef\x87\x37\xcd\xcf\x07\xff\x3d\xbc\xbd\xbb\x6d\x7a\x7a\x33\xb8\x18\xf4\x6f\x9b\xbf\xfe\xd0\x1f\x5e\xdc\xdf\x0c\x56\xae\xc7\xca\xd1\xae\x56\x64\x24\x2c\x12\x64\xb1\xa0\xc8\x72\x0d\x91\xaf\x21\xf2\xe2\xa3\x63\x87\x75\x7d\x9d\xa2\x7b\x6b\x17\xa0\xb6\x71\x17\x92\xe4\x1b\x32\x0a\x4d\x4c\x25\x9e\x24\x24\xae\xb4\xe4\xd6\xb0\xa9\x25\x5c\x18\xd4\x93\xd6\xc0\xbd\xc8\xa9\x79\x5e\x64\x78\x01\x82\x04\x60\x45\x58\x5c\xd3\x87\xd9\x87\xc6\x1e\x98\xe6\x5d\xf4\x91\x14\x7a\x8a\x32\x21\x08\x53\xc9\xd2\x08\xdc\xb2\xd2\xa8\xdb\xbe\xa6\x66\xed\x9d\xea\x1b\x9c\x63\x69\x22\xaf\x0a\xe3\x17\x24\x21\x58\xd6\x8c\xd9\xee\x7e\xbb\x65\xf1\x7b\x65\x2d\x3a\xe6\x32\x9a\x62\x9a\x64\x82\x94\x4e\x0b\x4f\x17\x58\x50\xc9\xd9\xe0\xb3\xbe\xcb\xf4\x41\xbe\x82\xcf\xb9\xd8\xee\xc4\x0c\xfe\x1e\x52\xf0\x65\xf1\x9f\x1f\xef\x8a\xff\x2a\x9c\xf9\x8b\xbb\xe2\xbf\x56\xd3\x7a\xd0\x70\x99\xb2\x8f\xd0\xc7\xbb\x53\xf4\x11\x42\xba\x04\xba\x9b\x63\x43\xb1\x17\x77\xa7\xe8\x82\x48\x09\xbf\xe4\x1f\x2b\xaa\x12\x98\xdb\xb7\x94\x61\xb1\x44\x6e\xfa\x26\x8b\x1c\x83\xaf\xc4\x2d\x4d\x79\xf1\xd8\x3f\x33\x06\xea\x7f\xbe\x7a\x17\x7c\x46\x23\x9c\xec\xb6\x88\xfd\xcb\x02\x1f\xb8\xba\x59\xb9\x14\xe1\xdb\xd5\xb5\xe8\x5f\x9e\x43\x86\xb6\x1b\x6a\xcd\xcc\x2f\x89\xd4\x44\x12\x71\x16\x5b\xff\x91\xbe\xfd\x97\x81\x50\xff\x4f\x0e\x59\xee\x99\xd4\xaa\x66\xff\xf2\x1c\x9d\xa0\xab\x9b\x11\xbb\x12\xb1\x31\xa6\x12\x2d\x0d\x1b\x9a\xa3\x12\x31\xae\x10\x4d\x17\x5c\x28\xcc\x94\x56\x04\x40\x0c\xb0\x2b\x62\x38\xc0\x19\x4f\xd3\x4c\x61\x7d\xd0\x2a\x8b\xca\x8c\x49\xe5\x96\xa8\x61\x0c\xee\x99\x9a\x35\x34\x72\x42\x3e\x97\x85\xd0\xed\x6b\x19\xa5\xa8\x87\xd3\xb8\xa2\xca\xba\x26\xb0\x10\xb8\x28\x4d\xbc\xa3\x8a\xa4\xe5\xf7\x5b\x86\x17\xff\x5a\x6b\x64\x38\x33\xe9\x3c\x44\xf4\x45\x34\xa7\x8a\x44\x4a\x1f\xc1\xad\x68\xe2\xfe\xf2\xfb\xcb\xab\x1f\x43\x09\xe2\x5d\xff\xd3\xf9\x5f\xff\x52\xf8\xe1\xe6\x53\xe5\x87\xf1\x0f\x7f\xad\xfc\xf2\x7f\xad\xa4\xa7\x72\x4f\x15\x3d\x3f\x98\xcb\x11\x88\xd4\x60\x57\x76\x53\x45\x34\xc5\x33\x82\x64\xb6\xd0\x14\x20\x8f\x8b\xfb\xab\x45\xca\x0b\x8e\x63\xca\x66\x26\xbd\xfa\x82\x2a\x22\x70\xf2\x09\x2f\x3e\x38\x1b\xf8\x16\xab\xf3\xff\xde\x16\x92\xe1\xdf\xfd\xd4\xff\x14\xa6\xd3\xbf\xbb\xbe\xb9\xba\xbb\x5a\x39\xeb\x42\x0b\xd5\x63\xa4\x1f\x9f\xc2\xff\xa2\x13\xa4\x5b\xf7\x92\x6f\x4a\x14\xd6\x1a\x01\xfa\xca\xa4\x84\xfa\x14\x2e\xca\x12\x38\x35\x0b\x41\x53\x0a\x57\x8a\xb1\x02\x7e\x6d\x84\x6b\xaf\x3d\xf8\x73\x63\x3e\x30\x49\xdf\xf6\x52\x66\x31\x16\x31\xfa\xa7\x2c\x63\x33\x80\xf1\xd9\xfc\x40\x62\x74\x84\xe6\x4a\x2d\xe4\xe9\xc9\xc9\xd3\xd3\xd3\xb1\x7e\xfb\x98\x8b\xd9\x89\xfe\xe3\x88\xb0\xe3\xb9\x4a\x13\x83\x45\xa1\x57\xe1\x14\x5d\x0b\xae\xaf\x10\x50\xd0\x89\xa0\x38\x81\x54\xf4\x89\xe1\x7f\x7c\x8a\x7e\x8e\xb8\x20\xc7\xf9\xc6\x58\xc3\x94\xbd\x47\xac\xf1\xea\x44\xbf\x54\xc3\x4c\xca\xfb\x89\x62\x12\xd1\xd8\x8a\x19\x84\x45\x1c\xac\x97\xc6\xdf\xa1\xdb\x73\x79\xb4\xc4\x3a\x9b\xfd\x72\x06\xca\x0a\x8e\x49\x00\x25\xa1\x78\x91\xe0\xb4\xe2\x33\x34\x6a\x6b\xa6\x55\x74\x88\x6e\x86\x5b\xd5\xbd\xba\xd0\x13\x8e\x78\x82\x26\xd9\x74\x4a\x44\xe8\xeb\xee\x69\x6d\x86\x4a\x24\x48\xc4\xd3\x14\x24\x06\xfd\x55\x26\x0d\x55\xc3\x8a\xd9\xd1\x1e\x8f\x18\xec\xbf\x56\x73\x80\x02\x62\x0e\xac\x8e\x11\x12\x23\xcc\x96\xa6\x9b\x49\x36\x2d\xf8\xd2\x01\xe3\x05\xc7\x88\xaa\x11\xeb\x27\x09\x12\x24\xe5\x8a\x84\x61\xda\xe0\x78\x2b\x2c\x38\xb0\x48\x41\x16\x09\x8e\x1c\x08\x40\xc2\x23\x9c\xa0\x29\x4d\x88\x5c\x4a\x45\xd2\xb0\x81\xaf\xc0\x56\xa3\xd7\x8c\x4a\x14\xf3\x27\x96\x70\x6c\xe7\x51\xfe\xec\xeb\xe2\x69\x1c\x38\xfc\x8d\x81\x10\x5c\xc0\xff\x7c\x4f\x59\xbc\x37\x0e\x75\x7f\x3b\xb8\x09\xff\x7d\xfb\xd3\xed\xdd\xe0\xd3\x66\xdc\xc7\x53\x16\x0c\x0f\x74\xf8\x53\x74\x6b\x16\x81\x0b\x2d\x11\x89\x86\x49\x7d\xb2\xa4\x94\xff\xc0\xe3\x2d\xb9\xef\xa7\xfe\xe5\x7d\xbf\xc0\x51\x6e\xcf\xbe\x1b\x9c\xdf\x97\xf4\x01\x3b\xbf\x82\x0c\x6f\xd4\xbf\xf0\xb7\xb3\xef\x86\x17\xe7\xe3\x1a\x85\xf1\xdd\xcd\xe0\xec\xea\x87\xc1\x4d\xae\xdb\xd5\x2e\x51\x69\x30\x65\x66\x75\x67\x98\xd2\x9c\xc7\x68\xb2\xac\x47\x5b\xd1\x92\x73\x02\xfe\xdc\x1c\x6f\xc8\xb4\x7a\x0a\xbc\xc9\x01\xdf\xe4\x5f\xa4\x3c\x26\x3d\xfb\x0e\xc0\xd4\x18\xe3\x8a\x91\x98\xeb\x1b\xd6\xbd\x63\x16\x18\x2a\x0c\x82\x8c\x5f\xb8\x53\xd4\x47\x52\xbf\x98\xe9\x43\x2d\xe8\x6c\x06\x86\xc3\xd2\x50\x4d\x6b\xf6\x53\x58\x5e\xf8\xce\xec\xff\x42\x70\x38\xe7\xba\x5b\x6b\x71\xf6\x56\x09\xf3\xa1\x41\xd9\x2d\xb4\x28\x30\x18\x1c\x6a\x86\xe6\x36\x4b\x2f\x42\xe3\x7a\x99\xf3\x98\x27\x56\x00\xdb\x92\xc6\xde\xb9\x10\xe4\x91\xf2\x2c\xf8\xd4\xa2\xe6\x14\x76\xbc\xb6\xf9\x7c\x01\x60\xd9\x8c\x51\xa4\xd4\x8c\x27\x8f\xda\x16\x34\x0b\x7b\x84\x16\xa6\x82\xa7\x35\x6d\x14\x8f\xc9\xf0\xea\x56\x09\xac\xc8\x6c\x79\x6e\x59\xc6\xf6\xc7\xe3\xfc\xea\xc7\xcb\x8b\xab\xfe\xf9\x78\xd0\xff\x58\x3c\xf1\xfe\xc9\xed\xdd\xcd\xa0\xff\xa9\xf8\x68\x7c\x79\x75\x37\x76\x6f\xac\x24\xf9\x86\x0e\xaa\xf7\x74\xf1\xc5\x53\xa4\x59\x2e\xb0\x46\x07\x67\x19\xf0\xc7\x09\x99\x72\x61\xf8\x7c\xea\xc2\x1f\xac\x08\xe3\xd6\xd6\xea\x62\xa5\x59\x9c\x82\x65\xac\xae\x49\x63\xf5\x56\x82\xe0\x14\xee\x09\xcc\xd0\x80\xc5\x47\x57\xd3\xa3\x5b\xf3\x63\x8a\xc5\x03\x11\xfe\xd3\x27\x41\x95\x22\xac\xa0\xd2\x61\x37\x64\xaf\x24\xe6\x1d\x1c\xa3\x1b\xcd\xf7\xf5\xfb\xfe\x52\xd3\xc4\x1e\x13\x85\x69\x22\xed\x60\x0b\xeb\x7a\x8a\x2e\xb0\x98\xe5\x76\xb8\xaf\xf8\x74\x6a\x1a\xfb\xda\x0c\x43\xdf\x61\x85\x59\xd4\xf0\x5e\x4d\x1a\xee\x5e\x84\xfe\xec\xcb\x5e\x1e\xae\x52\xd5\xfd\x62\x37\x9a\xba\xbf\x86\x15\x37\x1a\x7b\x41\x37\xb4\x4f\x6a\x68\x0d\x26\x6e\x1e\xaf\xbe\x64\xea\xdb\xae\x92\x53\xf1\xc5\x1a\x72\x32\x59\x7c\x7a\xe7\xa7\x5a\xdb\xac\xa1\x25\xf2\x99\x5a\x83\x41\x38\xee\x12\x09\xe5\xcd\x80\x79\x15\x2f\x16\x04\x0b\x59\xb7\xdb\x45\x31\xb0\x61\xef\x4d\x4f\x61\x1f\x76\x93\x5d\x3f\x3d\xc4\x19\x18\x1c\xbc\x10\x51\xa2\xc8\x16\x34\x60\xda\xaa\x50\xc0\x35\x40\x99\x5d\x59\xd8\xb0\x4f\x54\x6a\xa5\xd1\xfc\xf8\xad\xc5\x33\xdb\x8e\x20\x3e\xf4\x87\x17\x25\xe1\x62\x7c\x3e\xf8\xd0\xbf\xbf\x58\x6d\x26\x2c\x7c\x57\xde\x62\x74\x84\xf4\xf3\xa2\xef\x9d\x4e\xcd\x9d\xe1\x50\xd9\x8c\x4a\x4b\x18\x18\xad\x6c\xd2\x9d\xb1\x57\xc7\x64\x91\xf0\x65\x4a\x18\x98\x78\x0a\x37\xa1\x5e\xcf\x29\xa6\xf6\x6a\x09\x06\x0b\x56\x1c\x6b\x76\x83\x6b\xec\xc8\x41\xc1\x91\xd8\xdf\xbc\x45\x24\xb8\x12\xeb\xbe\x36\xde\x33\xfb\x9f\x5b\x85\xd5\x96\x67\xac\x7f\x76\x37\xfc\x61\x50\xd4\x0f\xcf\xbe\x1b\xfe\x50\x27\xd5\x8c\x3f\x0e\x2e\x07\x37\xfd\xbb\x35\xc2\x49\xa9\xc9\x3a\xe1\x44\xea\x01\x97\xbd\xa7\x54\xfa\xa8\xa2\xc8\xe0\xc9\x21\xaa\x24\x7a\xa4\x92\x4e\x28\xa0\xef\x59\x4f\xe4\xfd\x10\x38\x2b\xa4\x59\x52\xb5\x74\xe2\x8b\xe9\xb7\xb8\x8f\x9a\x93\xda\xf6\x8d\xd9\x21\xf4\x4f\x82\x95\xcf\x6c\x8e\x9b\xf4\x29\x02\xdd\xf6\x11\x94\xb6\xe0\x33\xa6\x05\x69\x36\x23\xc2\x0c\x07\xbc\x2f\xe1\x58\x82\xe7\x7a\x54\xa1\xb0\x92\xaf\x9a\x17\x5a\x67\x84\x11\x01\xf0\x5e\xbe\x13\x23\x48\x09\xc2\xde\x6b\x99\x6b\x91\xd0\x88\xaa\x64\x89\x22\xb0\x61\x81\x39\x33\xc5\x0c\xcf\xac\x70\x00\x6a\x4e\x89\x24\xfe\x6e\x20\x0a\xaf\xa6\xd6\xb4\x7f\x47\xc9\x96\xc7\xec\xfe\xf2\x7c\xf0\x61\x78\x59\x24\x81\xef\x86\x1f\x0b\x22\xec\xa7\xc1\xf9\xf0\xbe\x70\x9b\x6b\x49\x76\xb5\x5c\x5f\x6e\xb6\xe6\x28\xfa\x97\x4e\xd1\xb9\xf9\xf4\x54\x2f\x6e\x0d\xfe\xa2\x57\x7e\x4b\xeb\x70\xe3\xc2\xfa\xdc\x1f\x03\xa6\x44\xad\x5f\xa2\xad\x09\xc9\xfa\x20\x0b\x36\xa4\xfa\x50\x85\x4a\xdf\x97\x65\xa7\x72\x35\x94\xc3\x3a\x22\x75\x27\xc7\xb9\x65\x29\x8c\x61\x00\xa3\x41\x93\x11\xab\xc6\xad\x95\x33\xec\x1f\xc0\x45\x9d\x66\x52\x19\x57\x22\x10\x27\x7a\xf8\x9b\xd4\x0b\x0a\xae\xc6\x63\x74\x4b\xc8\x88\x39\xeb\xc1\x8c\xaa\x79\x36\x39\x8e\x78\x7a\x92\x83\x7f\x9e\xe0\x05\x4d\xb1\x96\xa4\x89\x58\x9e\x4c\x12\x3e\x39\x49\xb1\x54\x44\x9c\x2c\x1e\x66\x10\x45\xe3\xdc\xa9\x27\xbe\xd9\x19\xff\xdd\xc5\x9f\xbf\x39\xba\xf8\xdb\x37\xef\xaa\x16\xb2\xa6\xfd\x1f\xb0\x08\x2f\x64\x96\xd8\xa8\x3b\x11\xae\x8d\x3b\xf2\x19\x59\xb7\xdf\x97\xc5\xed\xda\x4d\x7f\x3d\xbb\xbe\x2f\x58\xac\x8b\xff\xfc\x34\xf8\x74\x75\xf3\x53\x81\x53\xde\x5d\xdd\xf4\x3f\x16\x18\xea\xe0\xfa\xbb\xc1\xa7\xc1\x4d\xff\x62\xec\x1e\xee\x62\x7b\xfb\x9e\xf1\x27\x56\x5c\x1a\xe9\x38\x60\xa5\xa7\x53\xf4\x81\x0b\xf4\xbd\xdf\xc9\xa3\x09\x96\x70\xc5\xb8\x3b\x4b\xf6\xd0\x82\xc7\xc0\x78\x11\x59\xcc\x49\x4a\x04\x4e\xac\xcd\x40\x2a\x2e\xf0\xcc\xdc\xf4\x32\x12\x58\x45\x73\x24\x17\x38\x22\x3d\x14\x01\x35\xcc\x7a\xb0\x29\xa0\x6a\xf1\x59\xd9\xce\x77\x93\x31\x45\x53\xe2\x54\x70\xfb\xcf\x3b\xb3\x19\x5b\x6c\xce\xd5\xdd\x77\x45\x61\xef\xc3\xc5\x4f\x77\x83\xf1\xed\xf9\xf7\x2b\xd7\xd3\x7c\x56\x18\xd9\x2d\x04\x20\x9d\xf1\x24\x4b\x59\xf8\xf7\xf6\x63\x1b\x5e\xde\x0d\x3e\x96\x47\x77\xd5\xbf\x2b\x52\xc6\x4d\x31\x48\xee\xdd\xb7\x57\x57\x17\x83\x82\x4b\xf8\xdd\x79\xff\x6e\x70\x37\xfc\x54\xa0\x9f\xf3\xfb\x1b\x03\xf5\xb9\x6a\x9a\x6e\x04\x35\x13\xd5\xd3\x0a\xa7\xb9\x6f\x56\xd8\x8a\x13\xf5\x6d\x50\xba\x39\xcb\x47\x01\xd0\x93\x09\x07\x03\xab\xce\x91\x37\xa9\x46\x66\xa4\xb5\xec\x50\x15\xb7\x09\x35\xb3\xe3\x95\x1b\xbd\x8a\x2b\xdf\xf9\x21\x18\x9c\x5d\xa3\x6c\xe3\x24\xe1\x4f\x26\x1c\x38\xa5\xfa\x56\xb6\xb0\x7f\xfa\x15\x99\x7b\x08\x8f\x6b\x38\x5e\x71\x5b\x48\x24\x88\xfa\xc4\x33\xa6\xb6\x27\xb9\xfe\x65\x81\xef\x0c\x2e\x7f\x18\xff\xd0\x2f\x52\xe0\xf0\x62\x35\xab\x09\x9b\xa8\xb9\x8a\xfb\x97\x3f\xf9\x4b\x18\x82\xc6\x7b\x5e\x43\x35\xb2\x6b\x94\x50\x2d\xf6\x46\x58\x6b\xaf\x09\x48\x34\x88\x50\x30\x39\xa4\x7a\x72\x10\xa4\xba\x30\xfe\x24\xc3\x9f\xcc\x20\x4f\xdd\x1f\xa5\xf6\x24\xac\x0b\x58\x53\x5d\x4c\x3e\xb4\x63\xb5\x6a\x86\x08\x7b\xa4\x82\x03\x58\x34\x7a\xc4\x82\x6a\x69\xdc\xb4\xac\xe7\x7a\x0a\xff\xbb\x59\x9b\x60\x18\x2d\x31\xae\x5b\x2e\xd4\xb9\x0f\x06\xde\xce\x1a\x52\x17\x14\x5b\x0d\x87\xad\x37\x74\x54\xbf\xad\xd9\x9c\x1d\x83\x86\x8b\x13\xfe\x57\x72\x4e\x71\xa2\x19\xc0\xfe\xe4\xc5\xfe\xe5\xed\xb0\x28\x3f\x16\xd5\x8c\x80\x2f\x6f\x2d\x2f\x82\xa1\xd2\x8c\xdc\x29\x13\xb7\x7f\xbf\x30\xda\x05\x20\x8a\x9b\x73\x1b\x28\x16\x16\x9a\xc5\x48\x13\x0b\x2c\x64\xe9\x0b\x89\x00\x82\x2f\x0f\xb8\xd2\x77\x16\x84\x33\x3d\x72\x1a\x8f\x18\xf9\xbc\x20\x4c\x42\x70\x80\xb9\xcf\x72\x5f\xbb\x3c\x46\xc3\x29\xb0\x04\xfd\x3a\x43\x19\xb3\x0e\x30\x7d\xe1\x9a\x41\xf6\xb4\x28\x9b\xa3\xc3\x04\xe6\x23\x46\x5c\xb0\x54\x3e\xf8\x11\xfb\xd1\x3b\xd1\xe0\xd1\x94\x6b\x06\xa4\x77\xd1\xb6\x77\x8a\x30\x93\xb4\x87\xb4\xc2\x52\xde\x53\x48\x3f\xd0\x0a\xa5\x0d\xe1\xd2\x9c\xc6\xfe\xf9\xf2\xd7\x40\x25\x4e\x38\xbc\x0c\xea\xef\x82\xd2\x55\xd0\x20\x1a\x27\xc6\x63\x32\x6e\x7f\x27\x44\x5c\x10\xeb\x67\xd9\xf8\x1a\x58\xc7\xd8\xef\xb0\x7c\xa8\xf8\x1e\x86\x4c\x2a\xcc\x22\x72\x96\x60\xb9\x65\x10\x92\xb3\x71\xf4\x8a\x12\xc7\xcd\xcd\xfd\xf5\xdd\xf0\xdb\x35\x5c\xbe\xfc\x71\x35\x0c\x28\x4a\x32\xe7\x9e\x9b\x08\x8e\x63\xa4\xd9\xe7\x8c\x1b\x57\xa0\x15\xfc\x73\x5c\x7d\x93\x1b\xe4\x03\x2a\x0b\x98\xfe\x79\x4a\x83\xb5\x73\x84\xae\x04\x6a\x17\x02\x45\x7a\x25\x50\x60\xf2\x70\x5b\x0d\x9e\x45\x53\x6e\xc8\x5a\xb7\x16\x09\x56\x53\x2e\x52\xc3\xe5\x0b\x93\x36\x8d\xaf\x6e\x94\x32\x45\x84\xc8\x16\x8a\xba\x42\x09\x65\x29\x55\x6f\xd9\x05\x9f\x7d\x22\x52\xe2\x19\xd9\xc5\x01\x5d\xa7\x3c\xdc\xfe\x10\xfe\x13\x1c\xcc\x6d\x64\xff\xc2\x08\x5d\xe4\xbb\xa3\xa7\x2b\xf6\xc1\x04\xf2\x5c\xf3\x84\x46\x5b\x06\xdc\x7d\xe8\x0f\x2f\xc6\xc3\x4f\x5a\x89\xef\xdf\x0d\x2e\x0a\xa2\x04\x3c\xeb\x7f\xb8\x1b\xdc\x58\x84\xf8\xfe\xb7\x17\x83\xf1\xe5\xd5\xf9\xe0\x76\x7c\x76\xf5\xe9\xfa\x62\xb0\x26\x32\xa7\xb1\xf1\xaa\x75\xb5\xfc\xea\x69\xe5\x17\xd8\x61\xcd\xcb\x42\x7b\x19\x64\x9e\x61\x9a\x80\x13\x9c\x1b\x67\x38\x46\x8c\xc7\x06\x83\x4b\x3a\xeb\x8c\x87\x65\x47\x43\xf5\x3e\x49\x10\xce\x14\x4f\x31\x78\x6d\x92\xe5\x88\xe1\x89\x66\xad\x38\x49\x82\xf0\x2e\x91\x31\xa6\x59\xac\x6e\xcc\xd4\x3f\x88\x12\xa2\xd9\xf9\x22\x48\x18\xb4\x7e\x83\x29\x65\x10\x69\x9b\x62\xf1\xe0\x8a\x39\xfa\x34\x0c\x7f\x28\x24\xc2\x72\xc4\x0c\x36\x98\x95\x56\x5a\xac\xf0\x69\xab\xb7\x1a\x57\x27\xc5\x0f\x44\xaf\x4a\x9a\x45\x73\xb4\x10\x7c\x26\x88\x94\xd6\xb6\x1c\x61\x66\x02\x10\xec\xeb\xfa\x1a\x1a\x31\xc6\xf5\x52\x38\x13\x76\x4c\x16\x84\xc5\x84\x45\xd4\xa4\x06\x82\xef\xde\x9b\x36\x67\x02\x2f\xe6\x48\x72\x70\x7a\xc3\xb2\x83\xfd\xca\x7c\xe4\x6e\x32\x8b\x86\x06\x8f\x43\x0b\xb4\xc8\x34\x9f\xb8\x02\x39\xd1\xac\x32\x7c\xec\x2e\x43\xe7\x76\x31\x76\xc0\x74\x91\x10\x65\x2a\x61\xc0\x92\xc3\x66\xe8\xb5\x2e\xec\x87\xde\xa6\xba\x4d\xd0\x17\xb6\x1b\x33\x96\x76\x44\xc7\x35\x96\x6d\x7b\xa4\xd0\x77\x98\xc5\x89\x6e\xc5\xf9\x30\x8a\x67\x11\x52\x51\xfa\x9a\x6a\xdc\x69\xdc\xe5\x16\x8d\x70\x26\x77\xb9\x46\x4b\xf9\x9c\xc6\x2a\x78\x94\x07\x85\x00\x79\xdb\x64\x4e\x58\xdd\x85\x66\x91\x38\xe1\x76\x95\xcc\xeb\x99\xa9\xee\x86\x60\x34\x0d\xd7\xec\x42\x50\x16\xd1\x05\x4e\xb6\xd2\xfd\x4a\xc1\xf8\x36\xc6\xfd\x2b\x3a\xd5\xe4\xf3\x75\xc5\x6d\xab\x88\x48\x21\xc9\xd9\x0e\xd3\x6f\xe1\x06\x96\x24\x9b\xd5\x40\x64\x1e\x4d\x82\x05\xcf\x8c\x3f\x0e\xd6\x85\xc4\x35\x47\xf5\xb8\x6e\xbb\xf5\xc9\xc0\xc5\x00\xe8\x2d\x36\xdb\x44\xfe\x34\xad\x5f\xa9\x15\xdb\xbb\x09\xc6\xc3\xc9\x75\x7d\x9b\x75\x3b\x10\x3c\xfc\x75\x15\xed\x7c\xc2\x0b\x4d\x33\xb6\x26\x06\xce\xe7\x68\x95\x24\x5b\xf3\xcf\xc5\xcf\x04\xbe\x73\x9f\x17\xd2\x7e\x37\xf2\x25\xb4\x01\x50\xd5\x4e\x0a\x31\x04\x41\x9e\xba\xa5\xf1\x69\xa6\x65\x59\x84\x21\x0a\x01\x7d\x45\x8e\x67\xc7\xc8\x55\x38\xe9\xa1\xfe\xf5\xf5\xe0\xf2\xbc\x87\x88\x8a\xbe\x76\x31\x8b\x36\x60\x69\xc4\x14\xb7\xd2\xca\xd2\x55\xa7\x49\x89\x98\x91\xc2\x9c\x5d\x74\x13\x84\x2a\xcf\xa8\x54\x36\x7c\x56\xf3\x95\xa0\x8e\x10\x4d\xcb\x62\xb6\xa1\x90\x4c\xcd\x77\x21\x0d\x2c\x65\x96\x6a\x5d\x76\x4c\x71\x3a\x16\x3c\xd9\x85\x29\x9c\xc3\x54\x40\x5d\xf6\x29\xfe\x14\xa7\x48\x37\x6b\x43\x41\xbc\xcb\xd1\x8b\x74\x5a\x30\xd2\x7c\x59\xdf\x9b\xc1\xbd\xe5\xbc\x0f\x36\x1e\x8d\xba\x10\x08\x80\x00\x68\x60\x15\xb9\xd9\x78\x6c\x2d\xf5\x63\x1c\x45\x5a\xe5\xde\xf3\xa4\x82\xe2\x54\xce\x25\x60\x3b\x7a\xb6\x69\xae\xa3\x73\x37\xcc\x85\xe6\x60\x10\x0c\x5c\xad\xe5\x52\xd3\xef\x64\x59\xe9\xd5\x95\x8f\xba\x97\xde\xa4\x62\x2e\x61\x49\x60\x27\xa5\x29\x3f\xa5\xe6\xc4\x42\x8f\x86\x5d\xba\x84\x18\xdd\xf0\x92\x67\xa2\x8e\xd1\x8d\xd8\x39\x59\x08\xa2\x25\xfd\xb2\x03\xc5\xd3\xf4\x4d\x91\x12\x3b\xba\xee\xe8\xfa\xcd\xd3\xf5\x99\xa9\x42\xd6\xf7\x55\xe7\x76\x12\xe0\x4c\x63\xe3\x05\xe7\xc9\xb8\x85\x4d\xa4\xfd\x8a\x17\x3c\x61\xa5\x9a\x6c\x00\x2b\xc0\x33\x90\x8f\x0a\xd7\x26\xd7\x77\x5d\x90\x62\x6b\x87\xb7\x62\x19\x9c\xcb\x2c\xa8\x06\xb5\xcb\x79\xaf\x6b\x65\x55\x4b\xe8\xd9\xc5\x9c\x33\x23\xdf\xd4\x15\xd9\x2a\x1e\x26\x27\x8a\x50\x56\x29\x75\x68\xe8\x19\xea\xf6\x83\xdc\xf1\xaf\x8c\x2b\x2c\xbf\x3e\x1e\x31\x2d\x44\x3d\x90\xa5\x31\xb7\x6a\x31\xe5\xf7\x5a\x16\x3f\x92\x84\x49\x08\xf7\xfe\xbd\x71\xcf\x69\x12\x77\xe6\x6a\xa3\x9a\x9a\x0a\x8b\xc5\xfa\x5f\x10\xa2\x6b\x1b\xb5\x52\x52\x1e\x00\x9d\x17\x0d\x73\xcf\xcc\xf0\x67\x44\x41\x8a\xb5\xa2\x0a\x74\xa6\xd8\x94\x70\xac\x0c\x7d\xad\xe9\xca\x50\x85\xe0\xe0\x27\x89\xb3\xdd\x18\xbf\xac\xb6\xb1\x96\x33\x7a\x6d\xe1\xd6\xc6\xbc\x9f\x38\xbb\x51\x24\x78\xa5\x2e\x22\x96\xc8\xec\xf4\xc4\xb0\x03\xe7\xbf\x26\xec\xf8\x89\x3e\xd0\x05\x89\x29\x86\x08\x78\xfd\xaf\x13\x3d\xaf\xdf\x9d\xdd\x5c\x5d\x8e\xf3\x4c\x9e\xff\x1a\xb1\x7e\x22\xb9\xcf\x52\x40\x8c\x33\x1f\x6e\xbf\x10\xc4\x89\x84\x76\x2e\x60\x75\xcd\xcd\x88\x23\xd6\x34\x82\x98\x47\xf2\x18\x3f\xc9\x63\x9c\xe2\x5f\x38\x03\x57\x7a\x1f\xfe\x3c\x4b\x78\x16\xff\x88\x55\x34\x3f\x81\x73\xad\x4e\xc8\x23\x61\xca\xb8\xa9\xf4\x72\xc5\x90\xbc\x2b\x21\x5a\xff\x77\x7a\xcc\x79\x52\x91\xd4\x9a\x6c\x44\x16\x0a\xfd\x3f\x82\x4c\x38\x57\xf5\x97\x14\x9f\x4e\x25\xd9\xe8\x42\xca\x95\xb4\xdb\x2b\xf4\xb7\xbf\x7e\xf3\x47\x4d\x42\xdb\xac\xf1\xf0\xf6\x6a\xac\xbf\xff\xdd\xb9\xfd\x5e\x6e\xc0\xee\xae\x16\x39\x6b\x73\xc4\x63\x02\xe7\x33\x06\xb7\x9f\x00\xe7\x05\xb0\x37\x20\x87\x7c\x1f\xeb\xb8\xdb\x79\xa1\xf5\xdd\x54\xb6\xad\x16\x13\x54\xec\x60\x8e\xe8\x08\x31\x8e\x52\x13\x6b\x8a\x19\xfa\xcb\xf7\xdf\xd6\x6f\x60\x26\xe8\x56\x1d\x52\x0b\xd7\x10\x74\x29\xe9\x2f\x44\x22\x4d\x35\x9a\x8a\x79\xaa\xbb\x16\x44\xce\x79\x12\xa3\x27\x02\x6a\x92\x8d\x03\xf5\x5a\xb9\x20\x23\x16\x36\x01\x21\x87\x08\x27\x8a\xcf\x08\xdc\xd5\x4e\x51\x53\x44\x68\x51\xc5\x64\x69\x28\x2e\x48\xcf\xc0\x85\xdd\xfe\xd9\xc5\x56\xc3\x34\xe1\x91\x4b\x6a\xb1\x26\xb9\x78\x52\x3f\xf3\x69\xd9\xf4\x8a\x9a\x6d\xf8\xe5\x4d\xb6\x66\xdb\xfa\xa5\xb1\x49\x28\xd6\x86\x55\xde\x99\xfa\xc1\xd0\x88\xb3\x71\x42\xd9\xc3\x56\x9b\x71\xe5\x44\x39\xdd\x82\x5d\x33\xdd\xa2\xb7\x73\x1b\x0b\xc8\x06\xe7\xe3\x43\x96\x24\x26\xb5\x25\xdc\x1e\x90\xbb\xcc\xba\x81\x30\xb0\x30\x39\xa0\x24\xb6\x7e\x2f\xab\x09\x0b\xc2\x20\xe0\x6d\xc4\x26\x4b\xeb\xb3\x95\x3d\x24\xb3\x68\xee\x32\xf3\x22\xce\xa4\x16\xa3\xb9\x40\x11\x4f\x53\x53\x39\x98\x11\xa4\x38\x4f\xa4\x8d\x76\x67\x47\x0a\x47\x6a\xc4\xf2\xfe\xd6\x9c\x3c\x53\x7b\x6b\xb7\xd4\xbd\xf6\x2e\x9d\xbc\xc6\xd7\x4a\x81\x9b\xc6\x21\x66\x03\x18\xc1\x8c\x27\x2a\x40\x7f\xe0\xd5\xb3\x64\x36\xac\x41\x33\x90\x73\x2e\xd4\x38\xae\xe5\x39\x6b\x89\xa6\xcc\x08\x19\x39\x4a\x20\x68\x98\x3f\x6a\xe1\x9f\x3c\x79\xe3\xeb\xaa\x21\x68\xaa\x5e\x35\x82\x76\xc7\x68\xe5\xc8\x36\x25\xc1\x86\xb5\x32\x08\x1e\x51\x31\x26\x7c\xdd\x18\x6f\xe1\xab\x33\xfd\xd1\xca\xc5\x2b\x9f\x3b\x27\x04\xf1\x38\x07\xac\x33\xf7\xba\xcd\x08\x59\xb5\xa6\x16\x3a\xe1\xf9\x32\x47\x57\x4d\xe5\xbe\x68\xc9\xd5\x63\x01\x93\xbd\x24\x20\x6b\x62\x31\xa1\x4a\x60\x51\x40\x0a\xf1\xfa\xa0\x24\x58\x40\x7c\xd6\x88\x19\xec\x39\xa3\x29\xc4\x28\xa6\x12\x12\x44\xe0\x2e\x0d\x9c\x61\xa8\x9d\x12\x58\x3a\xda\x79\x9e\xa3\x89\x3f\x87\xc0\xb2\x9c\x34\x1c\xb3\xd3\x1d\x79\x8c\x2d\xad\x9f\xf1\x28\xcb\x05\xb9\x08\x24\x5c\x8b\xa9\x83\x28\x93\x74\x36\x57\x88\x32\x6b\x77\xc4\xc9\x8c\x0b\xaa\xe6\xa9\xec\xa1\x49\x26\xb5\x16\x6a\x82\xd5\x4c\x3c\x0a\x51\x51\x2b\x2e\xb4\x6b\x12\x71\x5c\x6a\xb0\xaa\xa2\x6c\x41\x1a\xed\x0e\xe5\xa0\x74\x57\xac\x21\x9c\xbe\xc7\x2a\x2c\xb7\x41\xa1\x2a\xa9\x2d\x1b\x63\xe2\x00\xb9\x43\x76\x82\xaa\x27\x4d\xe7\x00\x90\x25\xf7\xe6\xa5\x78\x89\x12\x70\xc8\x24\x83\x0a\xe2\x62\xb7\x41\xf2\x2a\xa2\x5b\x1a\xf4\x26\xef\x74\x4a\x17\xaa\x36\x70\xab\xea\x2a\xba\x09\x30\x7f\xda\x2d\x36\x24\x63\x01\x35\x03\xda\xdb\x88\xdd\x12\xd2\x0c\x06\x57\xd9\x7b\x53\x77\x1a\xa6\x60\x13\x3d\x56\x93\xfc\x2e\x4e\xec\xf3\xc1\xed\xd9\xcd\xf0\xda\x40\x4e\x5c\xdd\x7c\xea\xdf\x8d\x6b\xfc\xda\x35\x6f\x7d\xea\xdf\x7c\x7f\xbe\xfe\xb5\xef\xee\x8a\x59\xd9\x35\xaf\xdc\xdc\xae\x4e\xe6\x68\x31\xc4\x9a\xa4\xb0\xda\x7e\x4e\xd1\x62\xa9\xe6\x9c\xf9\x10\x85\xb8\xc0\x9b\x8e\x90\xc9\x08\x56\x10\x42\x24\xa4\xaa\x71\x1c\xde\x41\x5c\xce\x7a\x09\xb3\xb8\x59\x06\x86\x6d\xaf\xa2\xd1\x06\x27\xf2\x63\xc2\x27\xe0\xb7\xce\x0a\x05\x9c\x57\x44\xa0\xef\x18\xef\x73\x4e\xe5\x22\xc1\xcb\x4a\x0f\xeb\xae\x9c\x4b\x9c\x12\x88\x38\xce\xf1\xe3\x5c\xb2\x88\xde\x19\x48\x60\xf2\xf7\x3a\x9d\x42\x26\x93\xa2\x58\x11\x34\x21\xea\x09\xf2\xe6\xdc\xaf\xde\x96\xea\x02\x46\xe4\xf1\x88\x81\x39\x67\xa4\x17\x39\xce\x20\xda\x6f\xf4\xae\x87\x46\xef\x62\xf2\x48\x12\xbe\xd0\x3b\xaf\x7f\x68\xb8\x64\x06\x29\xa6\xc9\x25\x57\xde\x32\xb7\xcb\x7e\x0a\x12\xd1\x05\x48\xe6\x63\xa2\xdb\x7d\x39\xc1\xa3\x40\xc9\x8e\x9d\xc1\x18\x10\x8e\x63\xad\x64\x03\x2b\x73\xc3\xcb\x43\x80\x58\x30\xf5\x42\x95\xd6\x4d\x44\x0a\x6f\xfe\x36\x3d\x86\x6d\x16\xcd\x9e\xb5\x3b\xe0\x1d\xc3\x2f\xa4\x64\xb8\x50\x1c\xdf\x71\x4b\xad\xe3\xbe\x49\xc7\x68\xf4\x40\x97\x0f\xa0\x5e\x8b\x0d\x04\x66\x3f\xc0\x5b\xfd\xdd\x5a\x41\xd3\xdf\xb6\x2e\x7c\x2a\xf7\x7e\xda\xdc\xe6\x72\x3a\x35\x59\x3b\xe2\x28\xe1\xb2\x08\x75\xd2\x7a\xd0\x67\xf6\xd3\x55\xe3\x1e\x84\xce\x62\x7d\xad\x6f\xe4\x8f\xae\x59\xf8\x12\x96\x9f\x61\x13\xca\x3a\x38\xec\xdb\x3d\x44\x21\x58\x0e\xe4\xe9\x24\x4f\xfc\x66\x31\xca\xad\xd8\x23\x96\x87\x1c\x48\xf4\x44\x12\x88\x52\x8a\x78\xba\x00\x0b\xad\x1d\xae\x6d\x89\xc4\x26\xe0\xb3\x87\x78\xa6\x74\x63\x26\xa5\xc2\xd9\xe0\x6c\xbe\x46\x6e\xb5\x36\xae\x13\x1b\xbb\xec\xb1\x85\x0d\xad\x1b\x56\x48\x19\xfa\x48\x14\xb4\x02\xd8\xed\xe1\x04\x41\xcc\x2b\x47\xc0\xd5\xaf\xfd\x0e\x27\xca\xce\x64\x83\x9d\xcf\x71\x2f\xbe\x4d\xf8\x64\xb5\x8e\x07\x8d\xa3\xfb\x9b\xa1\x33\x28\xe5\xe1\x2f\x01\xf8\x6c\xc1\x21\x34\xb8\xbe\x19\x9c\xf5\xef\x06\xe7\xc7\xe8\x5e\x12\xbd\x3c\x7e\xba\x90\x1e\xeb\x25\x4a\x33\x72\x0b\xa4\xc1\xa4\x22\xb8\x49\x8f\x25\x42\x14\x92\x58\xd7\x30\x8e\x22\xca\xc6\x6a\xc2\x06\x8c\x0b\x6a\xed\x2c\x80\x0b\x53\x9e\xa7\x0d\xac\x5a\x77\x02\x21\xcc\x65\xfc\x76\x82\x8c\xcc\x78\xd3\x6a\x60\xd5\x3a\xf2\x29\x06\x64\x3d\xf7\x64\xe0\x68\xa9\x39\xa1\x02\xb5\x9a\x96\x21\xaa\x71\xfb\x39\x05\x11\xca\x9f\xf0\x62\x75\xf6\x20\x7e\x2a\x10\xad\x91\x64\x02\xd7\xeb\x73\x9f\x03\xc7\xd6\xc6\x86\x15\xee\x3e\xc1\xdc\x1f\x61\x78\xab\xe7\x9b\x26\x60\x5f\x3a\x1b\x47\x38\xb1\xd2\x20\x6c\x18\xa2\x44\x70\x76\xe0\x17\xca\x50\xe1\x4a\xec\xa1\x29\xfd\x6c\x1b\xcd\xc3\x93\xdd\xab\x81\xbf\xba\x21\x1c\x6e\x8e\xab\x67\x6a\x03\xb1\xe1\x1a\xbe\x5f\x19\x9e\xc5\xa5\xd2\x52\x97\x96\x5c\x05\x89\xb8\xd0\x37\x05\x74\x9b\x1b\x91\xd7\x89\x0c\x0a\x0b\xbd\x28\x55\xa3\xfa\xaa\xd3\x9f\x97\xa1\x88\xb1\x22\x47\x8a\xae\xcd\x5f\xb5\x29\x0e\x90\x0c\x81\x55\x80\xe6\x94\xdf\x3c\x13\x32\xc3\xcc\x45\xd6\x36\x0c\xd7\x5d\x79\x3b\xb0\x2a\x2d\xc1\x62\xc8\xee\x01\xf9\x0a\x32\x37\x0a\xe3\x90\x0b\x58\xcf\x95\xe3\xb0\xc1\x0b\x87\xb0\x6c\x4f\xd8\xc7\x52\x34\x0c\x36\x5b\xc4\x87\x34\xd8\x04\x4b\x85\xec\x98\x9a\x34\xc9\x40\xc2\x7f\x5e\x1b\x5a\x41\x35\x6b\x6b\x3e\xd3\x24\x54\x54\x42\x08\x18\xb6\xa5\x83\xbd\x30\x20\x1f\x29\x11\x33\x27\x08\x9b\xca\xc1\xfe\x6c\xdb\x12\xc2\xee\x96\x08\x99\x09\xc4\x58\x57\x9b\x3e\x46\x7d\x56\x81\x3b\x72\x61\x35\x85\xf5\x32\x77\x12\x4e\x9e\xf0\x52\xa2\x85\x30\xc8\x20\x26\xf0\xda\x4d\x1e\xe2\x1d\x8b\x1f\x79\x4f\xb6\x72\x91\xef\x08\x54\xe9\xf5\x31\x4f\x4e\xee\x1d\x3f\x83\x27\xa6\x14\x14\x5c\x53\xbd\x20\x57\x35\x5b\xb0\x3a\x45\xc6\xd1\x1c\xb3\x19\x19\x3b\x1b\xd9\x36\xda\x92\x6e\xe7\x0c\x9a\x39\xb7\xad\xd4\x5f\x4e\xd7\x46\x61\xb2\x25\x40\xcc\xab\xde\xfe\xa3\x0f\x81\x54\x78\x46\x90\x19\x51\x2b\xab\x62\x21\xe0\xc7\x62\xc5\x82\x9e\x60\x5b\x1d\x14\x83\xa0\x9b\x84\x77\x88\x5c\xb9\xc0\x13\x92\xbc\x8e\xe3\x1b\xba\xb6\xb6\x55\x70\xb6\x98\x60\x6e\x82\x9e\xc0\x1c\x5b\x62\x19\xd6\xf8\x2a\xb2\xba\xd0\xee\x55\xf3\x2c\x14\xeb\xde\x61\xa2\xae\xd4\xc3\x36\x53\x6d\x2a\x00\x11\x5e\x7b\x41\xa1\x84\x3a\xfb\x48\x78\xfd\x95\x4d\x82\xdb\x0d\x24\xa8\xd7\xd0\x30\x8e\x9d\x0b\x36\xac\x9d\xca\xd6\x39\xe2\x2d\x0b\xa1\x0d\xa7\x88\x71\x46\x10\x95\xf9\xcb\xaa\x98\xcd\xe2\x11\x56\xb4\x88\x6f\x8c\x2f\xbe\x50\x93\xaf\xbf\xf3\xdc\x96\x96\x3c\xf7\xdd\xdb\x06\x5c\x7a\x2e\x23\x5a\x51\xc5\x62\x09\x08\x8d\x86\x0f\x17\x65\xba\xb5\xe3\xdc\xbb\xc0\x7d\xe7\x00\x38\x83\x40\x4b\xc5\x11\x88\x91\xa5\xc1\x21\x03\x63\x69\x5f\xb2\x1f\x59\x94\x91\x11\xf3\x96\x0d\x20\x44\x2a\x51\x8a\x17\xe0\x92\x61\x5c\xe5\x5f\x19\xd4\x1c\xe5\xb7\xb0\xe7\x04\x71\x69\xca\x28\x35\xac\xc0\x3a\xd3\x8e\xbb\x7e\xf3\x75\x2d\xa2\x13\x3a\x64\xd5\x19\x7d\x24\xcc\xd1\x74\xcf\x9d\x09\x3d\x28\xd7\x69\xb2\x3c\xc2\x10\x25\x4a\xe2\xd0\x70\xbd\x9a\x23\x19\x83\xcc\x21\xd8\x23\xdb\x2f\xd9\x5d\x6d\x14\x84\xc1\xb8\x2a\x80\x93\xbb\xb8\xde\x90\x4a\x2d\xec\xaa\x49\xe4\xc5\x12\xfd\x9e\x71\xf5\xfb\x00\x98\xd6\x19\x2f\xe0\x53\x67\x82\xea\x55\x2a\x6e\xc0\xa1\xb5\x84\x83\x70\x00\x90\xb4\x76\xe5\x77\x75\xed\xe6\x71\xcb\xcf\x2a\x8d\x0e\xaa\x49\x4c\x4d\x25\x8b\x3a\x87\x2b\x2a\x5f\x0b\x65\x83\xa7\xa9\xac\x96\x9f\xf4\x82\xa1\x53\xae\xf3\xb0\xfa\xbd\x68\xe5\x59\xad\x24\x74\xef\x42\x6d\x69\xeb\xc0\x97\x35\x18\xb6\xf5\x76\x89\x6d\xd2\xf4\x9a\xe4\x72\x51\x8c\x3c\xb2\x55\x0c\x1a\x40\x5a\x8f\x47\xec\x03\x17\xf6\x0a\x96\x16\x26\x7e\x82\xa3\x87\x23\xc2\x62\x84\x33\x35\x37\x60\xa9\xd6\xaf\xb0\xb4\xd4\xa0\x25\x0d\x20\x1b\x8f\x84\x40\x65\x84\x45\xec\x0a\x16\x3c\x72\x37\x8a\x11\x0b\x1a\x01\x20\x7a\xa8\xd3\x03\xd5\x4a\x9b\x54\x4d\x02\x85\xd1\x9a\xd6\xa2\xae\x0e\x67\xa5\x0a\xe7\xea\x73\x56\xa8\x2b\x0a\x10\xfa\x10\x9f\xc2\xa7\xd5\xd5\x19\x3a\x6b\xa3\xd3\xef\x34\x3d\x57\xbd\x10\x3d\xab\x51\x18\x93\x94\x9d\x81\x96\x74\xbe\x71\xbc\xb6\x00\xfa\x3a\xcd\x04\x44\x5b\xd6\xb5\xf9\x55\x34\xa7\x49\xee\xbb\xf8\xba\xe7\x87\xa9\x9b\x4c\xc8\x23\x49\x0c\xe4\x78\x24\x20\xb0\xda\x58\x0d\xbf\x41\xff\xdb\xd4\xa6\x44\x7f\x1c\xb1\x8f\xc0\x86\x93\x64\x09\x80\x88\xbe\x65\xac\x4a\xcd\x3c\xd4\x0e\x40\xd9\x4c\x0e\x54\x1c\x88\xd9\xeb\x39\x7e\x24\x23\xe6\x9a\xf9\xdf\xe8\x01\xfd\x01\xfd\xb1\x49\xbd\x73\xf1\xd1\xcf\x6c\xe7\xf8\x10\x44\x1f\x07\xb7\x9c\x65\x94\x96\xdf\x38\x33\x48\xc1\x08\x59\x03\x8c\xe0\x71\x8d\x29\x7b\xe4\x51\x25\x08\x3f\x3c\xb5\x58\x10\xa6\xc6\x8c\xc7\x64\x4c\x6a\x5c\x9a\x2b\x98\x84\x16\x02\x2e\x79\x4c\xd6\x3a\x24\x3d\x33\xfd\x11\x4c\x37\x32\x9b\xf8\xed\x80\xfc\x6c\x9f\x8c\xeb\xad\x0f\x45\x4a\xab\x1f\xb9\x07\x0f\xdd\x66\xdc\xdb\x3a\x53\x5d\x94\x5f\x0f\x2e\x04\x3b\x80\x7a\x87\x5e\x82\x95\x4b\x61\x2d\x1f\xc7\xb2\x23\x40\xbf\xac\x67\x6e\x2f\xab\x00\x16\x15\x4a\x57\x08\x3a\xa3\x5a\x7e\x6f\xef\xb0\x05\x4e\xb8\x8d\x37\xc3\x60\x44\xb6\x72\x67\xe4\x4b\xe1\x70\x32\x8e\x3c\xfd\xe5\x4e\xc8\x09\xcf\xca\x02\xbc\x5d\x00\x2a\xc3\xe4\x5a\x2b\xab\x2f\x35\x1f\x9e\x99\x04\x2e\x32\xa7\x26\x65\xba\x7f\x76\x81\xf4\xe9\xe0\xa9\xc1\x15\x82\x45\xcb\xd4\x9c\x0b\xfa\x4b\x63\x82\x49\xb3\x8c\x9e\x7b\x5a\xf3\x7c\x1c\x33\xce\xa2\xb4\x0e\xc4\x6a\x44\x0a\x55\xd0\x4a\xea\x74\x26\x34\xc9\x00\x42\x53\xb3\xd9\x69\x96\x18\xdc\xfd\x88\x8b\xd8\x14\xcf\x96\x85\xec\x1f\x88\xa2\x74\xe2\x3d\x56\xbe\x41\x6a\x91\x06\x2d\xb2\xbf\xb1\xe0\xac\x14\x40\xff\x9e\x91\x6c\x4f\x09\x54\xaf\x1a\x72\x7a\x87\x67\x32\x8f\x21\x35\x6b\xa3\x79\x73\xbe\xbe\xff\xd2\x33\x95\x41\xca\xa1\xb3\x2c\x7a\x04\x1f\xa3\x92\x9b\xba\x8e\x1b\x59\x74\x6e\x0c\x72\xf9\x1e\x4c\x3a\x2f\x11\xcf\x51\x95\x91\x6a\xd8\x8f\x25\xbf\x47\x9f\x80\x57\x66\x11\xcf\x64\x27\x71\x10\xf0\x25\xe9\xe3\x19\x4d\x26\x5b\x30\xb9\xaa\x50\xbd\x32\xa8\x35\x37\xa0\x78\xb6\x56\x93\x0b\xab\x38\x44\xcd\x3f\x09\x0a\x00\x5f\xcb\xfc\x65\x5f\xc2\xd4\x5d\x17\x21\x8f\xd1\x52\x8a\x11\x6b\x21\xae\xc3\x2d\xe1\xb2\x9e\xc7\x6f\x60\x80\xb0\x0d\x15\xbb\xae\xfa\xed\x9b\x4e\x84\x61\x49\x87\x7a\x24\xaa\xe8\x1e\x6b\x0f\x83\x2f\xe4\xf0\x3a\x06\x44\x2f\xda\xbc\xdc\xc9\xf0\xe4\x38\x8e\x70\x34\x6f\x9c\xd4\x84\xf3\x84\x60\xd6\x24\xbd\xd6\x3e\x2e\x1f\x11\x83\x4d\x09\xac\x3b\x49\x00\xa0\xd5\x2d\x81\x2d\xea\x97\x8b\xef\x2c\x06\x60\x6d\xc3\xc3\x0d\x12\x87\x1b\xa8\x22\xcc\x59\x7e\x28\x9b\x25\xa4\xbc\x56\x16\x01\xbd\x67\x3b\x49\xa2\x2c\x09\xaa\xfa\x2d\x88\xd0\xa3\xd6\x4b\xfc\x48\x98\xd6\x19\xec\x38\x9c\x33\xe3\xc9\xe5\xb3\xfa\x5a\x3e\x3d\xdf\xb5\xf3\xa7\x41\xd2\x58\x3c\x62\x70\x70\x79\xf1\xb0\x6a\x5a\x95\x5a\xcd\x08\xed\x52\x5b\x9f\xce\x40\x88\xd8\xf8\x78\xde\x16\xcd\xc4\x1b\x9f\x49\xd3\xf7\x18\x62\x0c\x76\x76\xad\x05\xee\x97\x3c\xd3\xde\x6c\xac\x43\x53\x7a\x21\x23\x32\x44\x6d\x14\x41\x5e\x82\xa0\x8d\x26\x34\x9f\x67\xbd\x4b\xf2\xea\x05\xee\x36\x68\x39\x94\x95\xae\xea\x96\x8e\x67\xb0\x4e\xae\x3a\xb7\x17\x36\xe2\xb6\xe8\xb2\xf5\xe9\x19\x79\x98\xa3\xad\xcf\xa9\x04\x86\xe4\x72\x48\x09\xfe\xd1\x68\xd8\x54\x1a\x0b\x98\xab\x52\x90\x2e\xd4\xd2\x16\xb5\x82\x7b\x31\x4c\xc9\x34\x80\x5d\x75\xee\xe1\xf2\x1d\x19\x17\x1c\xc4\x75\x9d\x41\x47\xd6\xac\x50\xdb\xa4\x5b\xe8\x10\x00\xa2\x94\x70\xdf\x14\x0d\x62\xea\x83\x8e\x71\xd2\x68\xcb\xda\x03\xd3\x84\x2c\xc9\x3c\xc9\xde\x62\x77\x2a\x91\x11\xcd\xbb\x70\x92\x94\xe6\x85\x21\x9b\x55\xf9\x1a\x61\x93\xbc\x90\x69\x7b\x67\x75\x82\x27\x64\x23\xf7\xf4\x85\xf9\x60\x25\x15\xc1\x2b\x90\x6a\xba\x58\x24\xcb\x76\xa8\x4d\x61\xe8\x5d\x2d\xc6\xd5\xba\x81\x85\xc8\x58\x2b\xef\xa6\x22\xba\xd4\x76\x43\x94\x24\xca\x04\x55\xcb\xb1\x35\xfa\xb5\x67\x5a\xb7\xf6\xcb\x33\xfb\x61\x1b\x8d\xfa\x14\xb9\xfe\x9c\x91\x11\xee\x29\x41\x4d\x01\x14\x3b\x85\x36\xdb\xad\xb5\xe4\x5a\xec\x9b\x55\x0b\xeb\xc0\x77\xda\x0d\x55\x77\xb1\xed\xf0\x6c\x61\x85\x31\x9f\x3a\x58\x9b\xf6\x0b\x5b\xae\x38\xb1\x81\xb5\xd4\xa1\xe7\x2e\x04\xe5\xc2\x16\x76\x68\x13\xd4\x96\xe2\xcf\xe3\x05\x16\x38\x49\x48\x42\x65\xba\xbd\x6d\xf7\xcf\x7f\x5a\x39\xda\x33\x53\x80\x44\xda\x72\x3e\x9f\x69\x9a\xa5\x88\x65\xe9\xc4\x4a\xb9\x58\x3e\x84\xd8\x85\x2e\xd3\xda\x40\xf0\xb8\x01\x16\xf2\xbd\x45\x80\x46\x39\x62\x01\x2e\xb1\x35\x55\xe0\x68\x4e\xc9\x23\xa0\x26\x0a\x46\xa4\x3c\x46\x97\x5c\x91\x53\xf4\x09\x2f\xee\x40\x50\x33\x15\x01\x67\xc6\x3a\x8e\x25\xd2\x52\x6b\xc6\xa8\xea\x8d\x98\x05\x33\x76\xab\x72\x12\x71\x66\x00\x2d\x23\x58\x58\xdf\x04\x98\x7b\x1d\xb2\xa3\x72\x79\x69\x54\x36\x2c\xb6\xc0\x4f\xe3\x20\x7a\x75\x6c\xb2\x03\x36\xa0\xe3\x1b\xfc\x64\xe2\xb5\xa1\x02\xbe\xf9\x7a\x85\xe4\x6e\x03\xa2\x6c\x01\x18\x83\xe3\xea\x02\x47\xb8\x05\x13\xf0\xa5\xab\x4c\x74\xea\x57\xf4\x98\x1c\xa3\x6f\x13\x3e\x91\x3d\x24\x3d\xe6\xb1\x2b\xd0\x2f\x7b\xc6\x41\x05\xff\x36\x99\x3c\x5f\xbb\xd5\xcf\xf9\x3e\x54\x6d\x9b\xd2\xcf\x06\xc3\x40\xfe\xf9\xf4\xe4\x24\x5d\x1e\x4d\xb2\xe8\x81\x28\xfd\x17\xc8\x14\xb5\x2b\xe4\x00\x80\x70\x1d\x9c\xd0\xba\xd5\xa9\x42\x11\xb5\xa2\x48\x0b\x62\x27\x09\xc0\x5e\xeb\x2b\xdd\xd7\xc5\x74\xc8\x35\x9c\xd5\x17\xfd\xb3\x53\x16\x59\xd3\xf1\x2a\xe0\xe5\xbe\x8c\xb6\x62\xea\x7e\x86\x30\xbd\xd3\x04\xcf\x4a\x2a\xcb\x06\x4a\xca\x55\x4a\x2d\x15\xe9\xb9\x43\xbc\x85\x3e\x65\xc5\x28\xb3\xf7\xce\x1d\x09\x6e\x45\xeb\x6e\x39\x1e\xb1\xbe\x44\x4f\xc4\x94\xf3\x84\x94\x32\xf0\x4e\x64\x54\xce\x7d\x42\x19\xd8\x4b\xa1\x51\x83\x66\x6a\x92\xde\xad\xe2\xe8\x34\x2b\xe7\xbf\xb1\x1a\x28\x4e\x24\xe9\xe9\x86\x01\xd1\xca\x05\x12\xa2\x27\x81\x17\x0b\x22\x46\xcc\x22\x53\x02\xfe\x32\xe7\x36\x48\xa4\x29\x9a\xbc\xd3\x28\x0f\x4b\xa3\xec\x97\x42\xcb\xa1\xc2\x6d\x0a\x4a\x8f\xcc\x0b\xf9\x39\xfb\x94\x57\x39\x0b\x57\x33\x80\xf1\xc2\xc7\x31\x27\x32\x30\x3c\x23\x6f\x3f\x4a\xe8\x94\xe8\x1b\x73\xc4\xf4\xd2\x87\x46\x72\x83\xe9\xeb\x20\x7e\x75\xa7\x91\xe0\x52\xda\x68\x71\xd3\xce\xea\x9c\x9f\x1d\xca\x87\x19\x60\x62\x53\xb8\xbf\x5c\x48\x2c\x78\xe6\x4a\x8a\xd9\x87\xf5\xf5\xdc\x9b\x9a\x5a\x5b\x40\x2c\x5f\x8b\x0d\x4a\x88\x9d\x9c\x5d\x0c\x7d\xdd\x9c\x52\xd7\xd5\x1a\x62\x21\x98\x73\x73\x15\xb1\xea\x8c\x83\x7a\x62\xa5\x26\x56\x54\x14\x5b\xbf\x59\xc5\x18\xd5\x5d\x90\xba\x4a\x5b\xbf\xee\xce\x2a\xd1\xcc\xba\x50\xea\x3d\x6d\x53\x03\x2b\x8c\x40\xc8\x79\x6e\xaf\x30\x08\x0b\xfa\x2d\xa9\x70\xba\x08\xd3\x04\x1d\x54\xa1\x9d\xa6\x39\x6a\x4d\x8c\xfb\x45\x21\x94\x23\x6c\x22\x30\xca\x83\xab\x6c\xc5\x66\x5e\x9a\x3b\x8b\xcc\xbc\x8f\xd0\xdb\x97\xcb\xbb\x4d\x96\x79\xa4\x99\xb4\xf2\x86\xab\xfa\xdb\x60\xab\x9e\x10\x8f\x42\xdd\xb8\xa1\xbb\x26\xd6\x79\xb4\x1a\x41\xb0\xb4\x21\x04\x90\x7f\x56\xca\x4d\xd9\xc0\xa4\xe9\xc7\x6c\x32\x58\x8f\x3c\xee\x7b\x70\xd5\xd8\x52\x46\x91\x3b\x88\x54\x08\xf2\x48\x04\xd0\x8e\x8d\x53\x61\xc5\xa3\x8a\x13\x41\x70\xbc\x0c\x56\xc4\x3b\xc9\x4d\xcf\x60\xd2\x91\x34\xd5\x4a\x27\x88\xd3\x8c\x1f\xf1\x85\x93\xb3\x0b\x6f\x01\x68\x3f\x9d\xea\x1b\x2b\x70\xb1\xeb\x2f\xd8\x11\xf9\x4c\xa5\xd2\x7a\x49\x4d\x7c\xa1\x6b\x04\x6e\x69\x28\xe5\x33\x27\xf6\x86\x1b\xbd\xeb\x7f\x7b\x75\x73\x37\x38\x1f\xbd\xcb\x23\xca\x5d\xca\x94\x07\xa1\x71\x98\xe2\x9c\x8d\x98\x0f\x02\xf5\x98\xab\xb0\x97\x08\xc7\x71\x8e\x78\x6d\x15\x1f\x23\x67\xac\xe4\xc8\xc1\xa9\x58\x1b\xfe\xb9\xa2\x99\x7b\xc8\x9b\x39\xd4\x93\xb5\xc2\xdd\x53\x38\x39\x26\xfb\x67\x45\x9a\xc6\x9e\x2e\x9b\x10\x2e\x52\x19\xfd\x90\x28\x87\x67\xc6\xc8\x93\x93\xef\xe1\x76\x3e\xc1\xe6\x12\xde\x8c\xdb\xb9\x0d\xd9\x62\x53\x3f\xd0\xcf\x24\xbe\x69\x90\xaa\xf6\x92\x85\xd1\x2a\x7a\xad\x76\x17\x32\x46\x37\xd1\x52\xfd\x54\xee\xf5\x77\xed\xd9\xd2\x55\x8e\x02\x95\x23\x3a\x02\x9c\xa3\x42\x18\x45\x44\x28\x4c\x19\x9a\xc2\xc1\x66\xd1\x12\x01\x16\x07\x01\xbf\xeb\x9f\x50\x4a\x19\x64\xbb\xaf\x5a\xda\xfb\xe2\x3c\x36\x29\xe5\x3f\xbc\xbc\xbf\x2b\x88\xaa\xdf\x5d\xdd\x17\xeb\x48\xf7\x7f\x5a\x29\xab\x96\x5a\x58\x15\xe0\x12\x4c\x31\xcf\x9c\xb3\xc0\x96\x7e\x65\xea\x26\xfa\x91\xa8\x1f\x34\x5f\xe6\x6c\x1f\x61\xe5\x56\xce\x02\x87\x13\x19\x3f\x9a\x86\x37\x20\x03\x3b\x94\x15\xb9\x03\x4e\x92\x83\x1e\x90\xed\x21\x4c\x64\x3f\x36\x15\x93\xfb\xba\x39\x50\x19\x5d\x80\x96\xd6\x97\x38\xd3\xcb\x65\xe0\x05\x1d\x26\x61\xd0\x1c\x9f\x9a\x8f\x5b\x22\x34\x05\x61\xc2\xba\xad\x7c\x29\x51\xff\x7a\x58\xb3\xd6\x17\x65\x9b\xfc\x97\x55\xde\x21\xf1\xee\x81\x7d\x57\x76\x08\xf2\xbd\x0e\xa2\xa8\x83\x9d\xe9\x6e\xf5\x1c\x8c\x17\xf5\xba\xe8\x9a\x3d\x04\xf4\xca\x3a\x79\xb6\x90\xc7\xb9\x06\xa8\x72\xb3\xd4\xa6\x7c\x19\x36\x44\x91\x09\x07\x64\xe3\xea\x43\xe4\x94\x6a\xd0\x66\x2f\x44\x52\xe1\xa6\x80\xa4\x75\xd6\xee\x0d\x5d\x26\x9f\x4d\x1b\x78\x99\x1f\x0c\x45\x7b\xf4\x01\xc0\x53\x70\x05\xca\x5c\xb0\xa5\x4d\x06\x0e\xa7\x1b\x52\xdb\x66\x88\x34\xf9\xf8\x9c\x3d\xd1\x62\xb3\xe2\x05\xb6\x4a\x31\x48\xf8\x0e\x39\xbc\xae\xd0\xd4\xf1\x88\x05\x11\x00\xd2\xc8\xe4\xfa\x8c\x38\xb0\x7e\xa8\x00\xc9\x00\xe8\x15\xb2\x1e\xfc\xcd\x5c\xd8\x81\x72\xce\xb1\x9a\x17\xe1\xf6\x2b\xfd\xd8\xd3\x29\xe7\xd8\x65\x76\x39\xf5\xde\x06\x56\x85\xc6\x0f\x68\x2f\x00\xd8\xb6\x1d\x83\x7d\x0f\x34\x6a\x1c\x94\x6f\x0a\xb2\x81\x63\x4e\x24\x7b\xaf\x7c\xee\x1c\x4d\x6c\x89\x00\x5c\xb6\xb7\x6a\x91\x03\x53\xdb\xf2\xea\x03\xbe\x07\xb8\x9b\x4d\xa5\xda\xe0\x58\xad\xb5\xa1\x38\xa7\x19\x50\x42\x18\xdc\x01\x9d\x36\x61\xd3\x7c\x5e\x90\x68\x1b\x4c\x8e\x6b\x2c\x70\x4a\x14\x11\xab\xe2\x3b\x8a\xc5\x55\x21\x76\xc1\xed\xa0\xed\xd7\xec\xa2\x41\x9e\x2f\x97\x28\xf0\xaa\xd7\xc5\x3a\x8c\x0d\x3f\x8b\x8d\xe0\x84\xf4\x34\x7e\xb0\x50\xfb\x1b\xce\xc2\xf6\x93\x4f\xc3\x86\xaf\x04\x90\x2a\xbb\xce\xe9\x65\xb0\x25\xee\x2a\x28\x0d\x85\xf8\x8b\x03\x01\x95\x58\x3f\xca\x26\x34\x89\x75\xbc\x74\x2f\xbc\xdb\x85\x8c\xbb\x9c\xc4\xd2\xa1\x2a\x04\xa3\x03\x95\x80\xbc\x6f\x80\x15\xea\x11\x21\x40\x68\xa9\x0b\x39\x0b\xfc\x28\x16\x2f\x2c\xb7\x36\x5a\xc9\xaa\x5c\x6c\xa5\xb4\x5c\x6b\x78\xdc\xbe\xb2\xe5\x3b\x89\x66\xdf\x12\xcd\x06\xb6\x3d\x43\x9d\x44\x94\x80\x3b\x6c\x11\x54\x9b\x71\x5d\x9c\x20\x24\x73\xd8\x2b\xd2\x56\x52\x84\xab\x9f\x32\xff\xaf\x22\x07\x77\x44\x1d\x92\x6a\x5d\x96\xda\x71\xe0\x1f\x01\xf7\x48\x12\x4a\x03\x36\x50\x01\x46\x6b\xe2\xca\x8c\x09\x7a\x78\x69\xbc\x2b\x90\x2d\xba\xe4\x19\x7a\xa2\x52\xeb\xc2\x23\x06\x81\x57\xde\x54\xad\x38\x32\x2f\xf6\xe0\x2d\xc8\x2b\x97\xd9\x24\xa5\x0a\xe1\x60\x86\x05\x7b\x59\xcf\x9e\x67\xfd\x01\xcc\xb8\x36\x71\xb9\x0e\xf3\x64\xcd\xa1\xd9\xc2\xf8\x93\x37\xb2\x6b\x6e\x72\x10\x24\xfa\xbc\xd9\xc9\x81\xc6\x13\x6a\x98\xb5\x67\xae\x4b\x4f\x46\xf5\xd6\x06\x8b\xc2\x08\x50\x99\x54\xaa\xd2\xdd\x62\xb1\x17\xd7\xa4\x26\xe7\x1b\xd1\x2a\x37\x39\x7f\x7d\x1f\xc9\xc9\x4d\x65\x7b\x56\x25\xab\xb9\x4f\x1a\x8c\xb3\x2e\x09\x52\x71\x17\x89\x1c\x4a\x4a\xd7\x8d\x92\xd2\xa1\xc1\x44\xe5\x11\xd6\xdb\xc7\xeb\x6e\xa2\x0e\xe6\x09\x2f\x21\x15\x05\xf9\x6b\x45\x90\x0d\x52\xe6\xfc\x8c\x2b\x48\x52\x88\xa0\xa4\x71\x25\x71\x6e\xc4\xea\x25\x90\xd5\x3c\x71\xd7\x98\xf7\xbd\xc2\x49\x05\xe7\xcf\xcd\xc2\x5a\xb4\x7e\xf4\x51\x43\x46\x59\xb6\xc5\x89\xcb\x22\x66\xee\x7f\x6a\x50\x40\x40\xf0\xd8\x26\x83\xb3\xe6\x54\xb6\x8c\x48\x5f\x7b\x2e\xec\xa5\xbb\x47\xd5\xae\xc2\x9d\x5b\x07\xf0\x7b\x19\xd9\x72\x63\x17\x81\xea\xd4\xf8\x92\x1b\x71\x9b\xa2\x8b\x80\xd2\xb8\x37\x6c\xc9\x72\xba\xb7\x6e\xbc\x07\xae\x47\x3b\x74\x6c\xc2\x30\x3c\xe2\x71\x69\x4b\x0a\x13\xb6\xc5\xac\x9f\x61\xd2\x9b\x16\xca\x0c\x5c\x61\xc2\x86\x4f\xd2\xd0\x6e\x00\x15\x32\x6d\xd4\x59\x89\x0f\x7b\xd1\x2e\x63\x31\x11\x8c\x60\x35\x7f\xb9\xa0\xf5\xb3\x5d\x8d\xd3\x2f\x16\xc0\x7e\xb6\x97\x2a\xc9\xa5\xa0\xf0\x0d\xe3\xc1\x37\x08\xae\xce\x6b\x66\x56\x14\xc7\xba\xea\xf4\x39\xa6\xc7\x26\x54\xba\x53\x5c\x7b\xbd\x32\xf7\x3c\x11\xfe\x35\x56\x9f\x4a\x6c\xbf\x3e\xec\x61\xa5\xd1\x35\x4b\xf2\x45\x84\xd2\x3f\x7f\x74\xf7\xaa\x9a\xa6\x59\x10\xf0\x0d\x85\x65\x15\xa6\xcc\x72\xaf\x55\x31\xde\x5a\xa2\x4c\x71\x5d\x58\xf7\xc1\x27\x0c\x7c\xf1\xf9\x02\x5d\xf4\x78\x17\x3d\xde\x45\x8f\x6f\x14\x3d\xbe\xca\xcc\xe8\x3d\x5f\x50\xe3\xad\x50\x99\xc3\xac\xe3\x1a\x6d\x6d\xfb\xa8\x6e\x67\xa9\x0b\x43\x62\xec\x2f\xf6\x87\xda\xa8\x98\xca\x67\xe5\xd9\x86\x56\x43\xb6\x2c\x1b\xdf\xb1\x88\x13\x0b\x9f\x65\x63\x56\x8b\x56\x9e\x55\x06\xc9\x11\xfb\x8e\x3f\x91\x47\x22\x7a\x08\x2b\x94\x72\xad\xa4\x07\x51\x28\x40\x70\x05\x24\x66\x13\x6d\x80\xd1\x25\x4e\x49\x6c\xea\x6c\x05\x91\x6d\xd6\x2c\x6a\x1d\x9a\x75\x28\x91\x00\x78\x68\xb6\xc1\x45\x27\x8c\x98\x89\x36\x33\x11\x4e\x70\x27\x53\x37\x31\xa0\xeb\xdf\x7b\x77\xeb\xef\x8f\xd1\x9d\xbe\x07\xa8\x2c\x8e\x37\x00\x8d\x6a\x1a\xdb\x88\xcd\x04\xcf\x16\xde\x52\xc5\x27\xa6\xe0\xa2\x01\x9c\xae\xba\x5b\x61\x30\xce\xd7\x1a\xe1\x58\x6b\xbc\xab\x09\xe7\x55\x02\x11\xb7\x42\x5e\x09\x09\x48\x73\x09\x1f\x5d\x65\xa3\x9d\x8d\x97\x34\xc0\x9b\x58\x85\x1f\xfd\x4c\x2e\xdc\x73\x22\xc1\xf6\xe2\x6d\xdb\x85\xf4\xd7\x62\x8a\x75\xed\x38\x57\x59\x1e\xbd\x77\xc0\x59\xd0\xeb\xb3\xb7\xf3\xce\x6d\x64\x95\xc9\xad\xb3\xfc\xf8\xd9\x6c\x92\xad\x03\x28\x9b\xf8\xc5\x75\x26\x16\x1c\x24\x9e\x64\xe9\xb2\xcd\x2d\x40\xd5\x82\x2f\x32\x13\x3d\x46\xc3\x60\xa2\x5a\xca\xa6\x52\x7d\xc2\x2a\x9a\x6b\xfe\x9e\x03\x35\xed\x29\xaa\x2e\xe7\xca\xcf\x6b\xa7\xac\x99\xc1\x59\xd8\x7b\x83\xe1\xbe\x85\xdd\xda\xdc\xaf\x2e\xc2\xda\xdd\xd8\xa9\xee\xaf\x50\x4b\x3e\xb0\x3e\xba\x4f\xec\x13\x3d\xd1\x75\x54\xb4\x6e\xfc\xed\x68\xab\x58\x28\x68\xef\xf1\x7a\x3b\x20\x5f\x9c\x5b\x9c\xa1\xfc\x45\x5b\x17\xb0\xc1\xc9\xbe\x65\xa1\x6f\xeb\x3d\x81\xca\xf1\xb9\x5d\x33\xc5\x0b\x2d\xac\x2b\xae\x6f\x49\x31\x33\xf2\xa2\xa9\x3f\x89\x30\xca\x04\x75\x67\xbf\x94\xca\xda\x4c\x1d\x60\x07\x3c\x09\x0b\xc1\x44\x38\xa8\x91\x65\xdc\xea\x38\x52\x19\xf6\xe1\x7f\x40\x13\xae\xf4\xae\x49\xdb\x75\xee\x6b\xe1\xc4\xa8\x9a\x3d\x5d\x4b\xd8\x3b\xec\x32\xae\x83\x65\x6b\x75\xd2\x28\x9b\x05\x98\x6e\xf5\xb6\xd8\x36\x90\xed\xb5\x5f\xb6\x83\x9d\xaf\xfd\xd4\xc9\x3e\xdb\x7c\xbb\x02\x73\xa6\xf1\xf3\x75\x02\x6c\x21\xd4\xd9\x86\x9b\x5a\xe9\x29\x44\xdb\xb3\x76\x32\x00\xcd\xa4\xe0\x0e\xc7\x56\x9a\xfa\x2f\xff\x97\x29\xf1\x63\x96\xe6\xbf\x10\x17\x23\x66\x7e\xef\x79\x78\x7d\xfd\x42\x8e\x5b\x89\x53\x92\x23\xfb\x89\x22\x06\x18\x20\x21\x58\x0c\x27\x83\x51\xea\xd1\xc5\xf5\x18\x1e\xb2\x09\x11\x8c\xe8\xa1\xb9\x9c\x69\xcf\xcc\x52\xcc\xf0\x0c\x10\x51\x7b\x10\x7f\x06\xe2\x6a\x2e\xf2\x1b\x92\x36\x65\xda\x80\x5b\x69\x66\x69\x53\x2e\xf3\x6a\x93\xd0\xa7\x11\x65\x2d\x20\x63\x1e\xc4\x50\x4f\xfd\x37\xb6\xff\xed\x24\xf6\xbb\xfe\xed\xf7\xe3\x9b\xc1\xed\xd5\xfd\xcd\x59\x41\x6c\x3f\xbb\xb8\xbf\xbd\x1b\xdc\xd4\x3e\xcb\xd3\x15\xff\x7e\x3f\xb8\x6f\x78\xe4\x1a\xb8\xe8\x7f\x3b\x28\x94\x6e\xfd\xfb\x7d\xff\x62\x78\xf7\xd3\xf8\xea\xc3\xf8\x76\x70\xf3\xc3\xf0\x6c\x30\xbe\xbd\x1e\x9c\x0d\x3f\x0c\xcf\xfa\xfa\xcb\xf0\xdd\xeb\x8b\xfb\x8f\xc3\xcb\xb1\x0b\xee\x0d\x1f\xfd\x78\x75\xf3\xfd\x87\x8b\xab\x1f\xc7\x41\x97\x57\x97\x1f\x86\x1f\xeb\x66\xd1\xbf\xbd\x1d\x7e\xbc\xfc\x34\xb8\x5c\x5d\x22\xb6\x7e\x35\x1a\xab\x4f\x06\x17\x59\x60\x9c\x09\xc4\xa4\xc9\xd2\x92\x36\xfd\x05\x5c\x04\xd7\x86\x1e\x8f\x7a\xee\x2f\x53\xd0\xf5\x48\xb3\x40\xe7\x7d\xca\xb9\xc7\x88\x79\xf7\xa0\xbf\x54\xa1\xa0\xb7\xcd\x3e\x2d\x8c\xf6\x14\xf5\xe1\xac\x80\xc2\x50\xe8\x14\x30\x27\xfc\x48\x9d\x43\x19\x99\x62\xfd\x29\x05\xdf\x32\x3a\x42\xe5\x0d\x2f\x36\x68\xe7\x04\x43\xb0\xde\xb1\x78\xd5\x69\x90\xe5\xc4\x56\xa0\x94\x53\xe4\x38\x34\x31\x6a\xbb\x81\xcc\x5c\x32\x9c\xd2\xc8\xfc\x50\x42\x8d\x44\x39\x42\x42\xb9\xc5\x02\x81\x15\x5b\x9e\x13\xf4\xfd\xdf\xf2\x41\x81\xa7\xc0\x1a\x08\xb2\x4a\x21\x30\xfb\x40\x64\x66\x55\xd7\x91\x67\xa1\x27\x77\xcc\xad\x09\x17\xce\xad\xad\x17\x0b\x6e\x9d\x8c\x05\x28\x49\x05\x1f\x8f\x3e\xde\x66\x46\x25\x1a\x3f\x45\xb7\x80\xd0\x20\x73\xd5\x5d\xef\xe2\x22\xc9\x66\x94\x21\x9a\x2e\x12\x92\x57\x1a\x9e\x90\x39\x7e\xa4\xdc\xa1\xee\x9b\xe2\x04\xb0\x8e\x56\xb4\x42\x47\xa8\xf1\xa0\x9c\xa2\x7e\x1c\xcb\x22\x83\x2b\x50\x8e\x63\x99\x47\xc5\x61\x87\xc0\x46\x2c\xf6\x6c\xb3\x44\x47\xf9\x91\x83\x15\xdb\x3f\x06\x45\x95\x1d\x16\xef\xde\x9d\xf0\x54\xe5\xc3\xd8\x91\xf2\x78\x2b\x61\xe0\x0e\xcb\x07\xc7\x9a\xd7\x09\x04\x0e\x0d\x64\xb7\x1e\x2d\x2c\x48\xdb\x4e\xfd\xca\x8e\xe1\xa0\x6d\xd7\x67\x23\x98\xed\x9a\x2e\xdd\x8c\x93\x52\xc5\xa1\xd6\xfd\x15\x2a\x16\xd5\x76\xb6\x57\xaf\x4a\xbd\x34\x06\x47\x72\xec\xe9\x7f\x83\x79\x5c\xc3\xa7\x57\xfe\xcb\x95\x22\xdb\x38\x58\xb7\x4d\x7d\x2d\x95\x3c\x4d\xeb\x6f\x59\x49\x87\x7b\x42\xa5\x69\x2f\x0c\x02\x5e\x3c\x8d\xc0\xad\x86\x29\xb3\x55\x44\x88\xf7\xfb\xb8\xba\xb9\xfa\x1c\xfb\xca\x56\x78\xc2\x1f\x0b\xca\x65\x4a\xa4\xc4\x0d\x98\x15\x81\x49\x6c\x17\xc6\xe0\x4f\xa8\xfd\xb0\x25\x3d\xb9\x33\x79\xa7\xbf\x5a\x65\xf4\xb9\x09\x35\x63\x37\x51\x2d\xb0\xc6\x2e\x9e\x15\x5d\x99\xac\x36\xcd\x5f\x7a\x79\xc8\x0a\x17\x41\x24\x4f\x93\x9b\xa5\xa5\x59\xad\xbc\x60\xb5\xc5\x61\x42\x57\xd9\xe6\x91\x2e\x41\xeb\x5b\x03\xf9\x5a\xff\x05\x2e\xae\xcf\x06\x54\x57\xf0\x2b\x86\x85\x73\x4d\x8d\x78\xb0\xb9\x85\xb6\xd4\x1e\xc2\x26\x99\x30\x97\xa6\x64\x16\xcd\x8d\x37\x47\x5f\x19\xbd\x11\x7b\x0a\x36\xa4\x10\x6e\xdb\x0f\x5b\x02\x10\xc4\xcf\xfa\xb8\xd1\xc7\x42\x10\x33\x88\x8c\x14\x22\x6a\x03\x42\x30\x8e\xb7\xbc\xea\xcd\x1a\x02\x0f\xf6\x6b\x07\x52\xdf\xa2\xc4\x59\x4d\x15\xfe\xba\x42\x67\x7e\x6e\x41\x7d\xb1\x1d\x34\xe5\xb6\x43\x08\x4a\x9c\xd5\x8d\x60\x0f\x15\xce\x5e\x14\x95\xd8\x27\x45\x9a\x1c\xda\x74\x62\x61\x0a\xf4\x74\xdd\x6a\xff\xc1\xcd\xe8\x0f\xc6\xef\x90\x35\xe0\x5a\x04\xad\x79\x60\x62\x74\xa4\x65\x56\x97\x6f\x6d\x03\x1e\x24\x3a\x32\x60\x67\xef\x21\x9e\xb1\x7f\x3d\x7c\xdf\x43\xef\xc3\x9c\xae\xf7\x5b\x1d\x40\x3b\x6e\x5b\xe5\x0c\xb4\xa9\x42\x60\x7f\xf1\xd8\xc1\x5e\x95\x4e\xa2\xdd\x33\x7b\x10\x51\xd3\x39\xd4\x5f\x16\xbe\x01\x27\x30\x54\xed\x32\x7e\x52\x1f\x56\x6c\x5d\x40\x46\xc6\xa5\xb2\x66\xed\xe2\x11\x9b\x2c\xcb\x4e\x9e\x9e\xf7\xf2\xb4\x3e\xa5\x3b\x57\xa2\xd2\xed\x55\x93\x80\xf7\x1c\xee\xba\xfa\x3e\x58\x93\x56\xdc\x37\x91\xcd\x7c\x1a\x70\xb1\xa6\x68\x80\x2e\x4e\xbc\x6e\x56\x05\x7b\x99\x5b\xcc\xda\x4d\x59\x27\xff\xbc\x35\x72\x6b\x11\x5c\xdd\xaf\x5b\x11\x1b\x57\xdf\x20\x5c\x77\x54\xf6\xbc\x54\xb6\x8f\xbc\x82\xe2\xe0\x36\xbf\x40\xcf\x8c\x1c\x17\x34\xe3\x0c\xae\x5a\x99\xf0\x0c\xbe\x50\xae\x6c\x7d\x9d\xcf\x0d\x7d\xbe\xc1\x9a\xac\x77\xfa\xde\x9a\xc0\x01\xe3\x76\xad\x8e\xb5\x3c\xd4\xbe\xb2\xb5\x53\x38\x35\x39\x84\x8a\xa6\xa4\x87\x38\x4b\x96\x41\xb0\x83\x3d\xaf\x40\x6e\x26\x16\x68\x4e\xa8\x70\x9d\x58\x98\xb9\x8d\x92\xce\x37\x94\xc6\x9b\x68\x64\x87\x48\x93\xcb\xfe\xa7\xc1\xf9\x78\x70\x79\x37\xbc\xfb\xa9\x06\x42\xb0\xf8\xd8\xa1\x08\x06\x2f\xdc\xfe\x74\x7b\x37\xf8\x34\xfe\x38\xb8\x1c\xdc\xf4\xef\xd6\x20\x0c\xae\xea\xac\x09\xbd\x2e\x93\x75\xea\xdb\x26\x08\x76\xce\xcc\x5b\xd3\x7b\x15\x67\x30\xe8\x84\x92\x06\xac\x41\x93\x60\xcf\x62\x22\x50\x4c\x1e\x49\xc2\x17\xb9\x59\xb5\x76\xc1\x02\x10\xc2\x9a\xf6\x57\x01\x11\x42\x9b\xe5\x35\x3e\x45\xa6\x44\x55\x50\xa5\xd3\x37\x08\x22\x1f\x16\x84\xbd\x57\x88\x7c\x5e\x24\x34\xa2\x2a\x48\xc0\xe3\xc2\xba\x57\x8c\xfb\x10\xa2\x40\xd7\x10\xd7\xde\xa2\x51\xf6\xae\xf3\x87\x9e\xf4\xaa\xb6\xef\x4f\x94\x07\xc5\x5a\x5b\xf7\x64\x0f\x8a\x7d\x83\xd3\xb8\x82\xd9\xb5\xc5\xe8\x9e\xc3\x3c\x50\xcd\x84\xb1\x49\x74\x0d\x78\x5e\xf5\x83\x5c\x7f\x1b\xae\x8a\x93\x29\x9c\xeb\xd5\x81\x32\xed\x28\xf5\x95\xc3\x5d\x0a\xf5\x00\xf7\x80\x6f\x61\x63\xc4\x37\x0c\x58\xa8\x94\xb9\x60\x26\xb6\x13\x23\x41\x52\xae\xb4\x02\x66\x22\x02\x7a\x5a\xa8\xa2\x38\xa1\xbf\x00\x12\x94\x20\xc7\x41\x04\x05\x24\xda\xc5\x61\xc4\xa5\x45\x69\x38\x1e\xb1\xf3\xc1\xf5\xcd\xe0\x4c\x33\xa4\x63\x74\x2f\x01\xe4\xa9\x30\xf5\x73\x4b\xde\x46\x1c\x0b\x23\x19\x28\x93\x8a\xe0\xa6\x60\x30\x22\x04\x17\xed\xf9\x83\xef\x6f\x00\xdf\xd5\x93\x37\x3c\x2b\xd8\xa6\x9c\x01\xe0\xb2\xb1\x98\x6b\x10\x9b\xbf\xf7\xd4\xa7\x1b\xfc\x54\x58\x91\x10\xe4\x02\x24\x91\xe2\xaa\x3f\xe3\x6a\x03\x86\x63\xfb\xf9\x15\xfa\xbc\x86\x6f\x57\xcd\xf3\x0e\x42\xec\xa4\xca\x01\x21\x0d\x66\xa4\x2f\xd6\x51\x9a\x67\xa3\xa8\x28\x5e\x03\x10\xa3\x44\xfa\x13\x32\xc3\x0c\x89\x8c\xb1\x12\x42\x68\x68\x69\xab\x06\xcd\x6c\x7a\x54\xf5\x9a\xe1\x94\x67\x0c\x94\x06\x08\x63\xad\x19\x8c\x5c\x10\xa6\xd6\x0c\xe6\xb5\xe0\x4e\x4a\x43\x3d\x5c\xc4\x93\x9a\x81\x36\x81\x9e\xd4\xf9\x93\xa0\x62\xec\x66\xd7\xb2\x0b\xca\x2b\x38\x95\xf4\xa1\xf2\xf7\x73\xbd\x96\x8d\xe5\xc3\xce\xdd\xdd\x61\xf9\xb0\xbe\xab\x98\x44\x0f\x9b\x5e\x36\xe5\x0c\xc8\xc4\x16\xdc\xad\x18\xfb\x96\xfa\xa9\xad\x28\x01\x75\x96\xa3\x07\xf4\xdd\xdd\xa7\x0b\x34\xa5\x5a\xee\xd5\xd7\xca\x25\xd6\x32\xf6\xbd\x48\x7c\x11\x7b\x23\x83\x64\x22\xf1\x77\x2f\x6c\xbc\x13\xa5\x02\x29\x41\xdf\x68\x78\x46\x9c\xb1\x57\x58\x4c\xbb\x52\x45\x09\x81\x59\xcc\x53\x33\x8f\x13\x99\x4d\xa7\xf4\xf3\xb1\xc2\xe2\xeb\x0d\x24\x9a\xb3\x82\x83\xad\x44\x46\x36\x7c\xd2\x42\x2c\x82\x55\x61\xad\x9c\x30\x78\x24\x4c\xed\x45\xc8\x86\x26\x6a\x32\xbc\xdb\x99\xca\x4d\x79\xbd\xe1\x79\xce\xa1\x7d\x99\xf7\x20\x34\x47\x09\x0c\x97\x95\xcd\xaa\xb1\x7e\xe1\x26\x6f\xf5\x63\x6b\x07\x28\xbc\x5a\x5d\x97\x35\xf1\xdd\x76\xb5\xf3\x32\xbb\x79\x6c\xa6\x83\x28\xdf\x12\xf3\x45\x12\xa3\x8a\x07\x58\x03\x56\xc3\x2a\xef\xb9\xe9\x73\x8e\x65\xb9\xcb\xb5\x5b\xbe\x05\xc0\x49\xa1\x99\x8f\x04\xf2\xff\xf6\x11\x4d\xbd\x49\x9e\x37\x0c\xe4\x5e\x24\x10\x07\xbc\xd2\x14\x63\x4a\xfc\xea\xe3\xeb\xc5\x13\xdc\x42\xd0\x34\x83\xd1\x92\x0f\x59\x08\x02\x45\xe7\x4f\xd1\x75\x42\xb4\xf8\x90\x69\x11\x22\x4b\x12\x07\x06\xb5\x5a\xc4\xd9\x08\xc0\xec\xd9\xe7\x15\x08\xd0\x2b\x26\xe6\xc0\xd0\x56\xcf\x2c\x58\x83\xfd\x67\xe7\x07\xeb\x0b\x76\x50\xb0\x86\x15\x55\x21\x60\xc0\x4b\x13\xfc\x09\xf6\x10\x5c\xe0\xc6\xf4\x17\xcd\xe6\x05\x91\x73\xde\x98\x11\x17\xce\xf6\x79\xe6\xe0\x96\xf2\x19\x27\x61\x23\xef\xc6\x4d\xc1\xc1\x2d\x2e\xe7\x73\xd3\x44\xad\x48\xb0\x6a\x8a\x1e\xc5\xde\x87\x30\x58\x68\x4e\x1b\xca\x66\x87\x06\x8e\xb9\xdc\x5e\x14\xc2\x64\xe5\xf6\xf7\x5c\x22\x5f\x1a\x07\xa2\xff\x3c\xb7\x82\xe6\x71\xed\x54\xc9\xbc\xe2\x13\xd2\x77\xfa\x66\x5c\xd6\x66\x3f\xe4\x4d\xe8\x01\xd7\xb3\x36\x0b\x60\x0f\x72\x9b\x8d\x6d\x91\x05\x80\x2f\xbb\xc5\x66\xca\xb5\x3a\x45\x33\x03\xdd\xd5\x8f\x03\x62\x59\x9e\xf0\xf5\x5c\xee\x9c\x02\xb5\x14\x26\xd0\x41\x46\x6d\x0e\x19\x65\xab\x19\x78\xda\x03\x80\x37\x25\x20\xa3\x3b\xf7\xd8\x94\x2f\x79\x6b\x65\x5d\x97\x6a\x53\xd8\x9d\x56\x79\x35\x85\x2f\xf4\xb9\x3f\xdf\xd1\xe5\xa3\x27\xb3\x1c\x43\xa6\xe2\x2e\x61\x1f\x85\xf9\x1b\x73\x35\xb4\x49\x62\x64\xd2\xd2\x0d\xa0\xad\x5d\x3b\x6f\xaa\x5f\x60\x41\x98\x1a\xb1\x1b\x3d\x0a\xf3\x45\xee\xfa\xcf\xab\xd5\x93\xbc\xb6\xe3\x14\x61\xfb\x15\x2c\x7a\x53\xe4\x95\x1c\x9b\x97\x40\x17\x7a\xc6\xec\xe9\x6f\xcd\x3b\x26\x99\xdd\x82\xb9\xe8\xa9\xd2\x69\xae\x37\x6a\x61\x2f\x9a\x53\xc8\x25\x8f\x89\xb4\x97\x07\x55\x16\x2c\xc0\x8b\xca\x19\x71\xb0\xba\xf0\x99\xe7\x5f\x75\xcc\xd5\x69\xa6\xcc\x59\x84\xe4\x88\x05\x7d\xac\x40\x61\x34\xda\xe1\x96\x62\x3f\xec\x33\x8d\xbd\xa7\x05\xfe\x69\x76\x88\x0b\x3a\xa3\x2c\x28\xd4\x62\xa7\x97\xe2\x05\xd8\x13\xcd\x19\xe4\x53\x7f\xff\xdc\xd9\xb0\xf6\x63\x18\xf1\xff\xf9\xef\x7f\x1c\xd3\x26\x73\xbb\x1c\xdb\x15\x38\x84\x9d\xdc\x6c\x5b\xc2\x9d\x0f\xe0\x21\x1a\x60\x07\x64\x36\xf1\xd8\xcd\x85\x50\xfd\xfc\x57\x7b\xb9\x69\xa2\xe1\x6a\x6e\xfc\x8b\x45\x72\x07\x63\xbc\xc8\x56\xdf\xb2\x01\x8b\xcb\x3d\xd0\xb9\x9b\x31\x88\xf2\x74\xe0\xff\x26\x3a\x4f\xb7\x5f\xba\x50\x4a\x0c\x2a\x40\x69\xdb\x25\x1a\x6e\x8e\xe5\xf3\x85\x3c\xd4\x56\x54\x31\x56\xca\xf0\x8e\x5c\x17\xfc\x60\x06\x69\xb2\xe8\xf4\xae\x64\x92\x08\x73\xa0\x3d\x9c\x0f\xaa\x16\x5d\x86\xd8\xb7\x35\x3e\x1c\x92\x62\xba\x51\x9c\xb6\x7e\xbf\x1e\x21\xaf\x60\xc4\xc5\x33\x22\xc6\x71\x56\x08\xca\x5d\xd7\xf6\xb5\xfe\xe8\x3c\x53\xcb\xf5\xed\xcb\x04\x47\x0f\x9b\xa0\x12\xea\xf7\x1b\x9a\x5d\x2f\x18\x06\xa1\x13\x45\xe1\xb0\x01\xf3\x8f\x94\x30\xff\x6c\x2c\x5f\x41\x6b\x87\x8b\x86\x41\xd5\xec\x40\xb8\xb7\x37\x91\x41\x26\x86\x91\xa3\x49\x96\x5b\x39\x3c\xd6\x7b\x7c\x3c\x62\x1f\x4c\xb1\x04\x50\x3c\xcc\x00\x22\x48\xa4\x20\x9f\x17\x5c\x92\x42\x66\x4f\x0d\x7e\xbb\xcd\xcc\xb3\xc3\xa8\x97\x49\x4b\x55\xcb\x77\x12\x49\x5f\x1d\xbd\xb1\xba\xe1\xd5\x29\xd7\x53\xe0\x4e\x52\x4f\x44\x17\x54\xd3\xce\xb8\xf6\xa4\x6d\x3e\xf5\xb6\xe5\x3f\xf2\x58\x19\xc0\xf1\x51\xc9\xb2\x87\xfc\xf4\x4a\x04\x91\x90\x47\x02\x66\x4a\x18\x63\x88\xd2\x5f\x34\x35\x35\xb0\x93\x75\x07\x28\x4f\xab\x03\xb6\x80\xe2\xf2\x08\x8a\xc9\x47\x75\xb4\x58\x4c\xab\xd8\x39\x03\xa8\xce\xe1\xbf\x81\x14\xda\x0f\xab\x15\x2c\x89\x42\xe4\xb3\x22\xb6\xd8\xde\x9d\xcb\xd1\xaa\x86\x75\xa3\xfa\x34\x93\x66\x11\x69\xff\x54\x51\x99\x88\xcd\xcc\x75\x49\x68\xb1\xbb\xf7\x6d\x52\xd6\x1c\xb3\xd8\x66\x1a\x5a\x59\x5a\xcb\x14\x30\x3b\x63\x07\xf2\x31\xd8\x36\x5f\x2e\x80\x79\x36\x6d\x1a\x3c\x6a\xb8\xc8\x9c\x5e\xa4\x25\x73\x70\x5b\x73\xa1\x05\xd4\x8c\x29\x9a\x68\xe2\xb0\x63\xd0\x5a\x73\xc6\x3c\xd0\x1a\x44\x0c\x37\x61\x79\x51\x29\x29\x9b\x8d\xed\x4a\xba\xa4\xb9\x76\x17\x43\x91\xa6\x3e\x99\xa6\xcc\x8f\xdf\xba\x86\x56\xdb\x79\x0d\x59\x03\xce\x92\x4b\xd7\x03\xc1\x9a\x71\x37\x19\x0b\x90\xe5\xb2\xfc\xc6\x34\x36\x4b\x41\x4d\x4d\x57\x98\xe8\x26\x46\x0a\x10\xeb\xaa\xf9\xf1\xf9\x15\x22\x6d\x0a\x9e\x49\xac\x81\x08\x68\xd5\x90\x63\x28\x1b\x73\x0b\x87\xcc\x8b\x68\xb6\x68\x8f\xcf\xa0\x2e\xa5\x29\x62\xd7\x9d\x0d\xf3\xc6\x49\x32\xc1\xd1\x83\x57\x36\xbc\xca\xcd\x85\x03\x3d\xd7\x02\x2a\x54\x75\x32\xc4\xa5\x07\x1a\x81\x74\x13\x7a\x61\x0c\x42\x8a\x1d\x76\xde\xb9\x59\x35\x0b\xf1\x64\x20\x71\xcc\xe8\x4d\xcc\x78\x4c\x16\x09\x5f\xa6\x0d\xf7\x59\x39\x35\x6b\x97\x08\x88\xa6\xcc\xb0\xbd\x5e\x65\x25\xa6\xb7\xf1\x65\x56\xc9\xf3\xd8\x03\x5e\xcf\x06\x5c\xf2\x63\xc2\x27\x60\xe5\xb3\x5a\xb6\xcb\x5d\x08\x42\xe8\xcb\xe7\x79\xd3\x8c\x8a\xf2\x89\xa4\x72\x91\xe0\xe5\xaa\x1e\x4c\x2c\xff\xf3\xee\x9b\xc9\xfd\x5e\x6f\x04\x6b\x1f\x05\x5b\xfb\xf9\x73\x20\xb0\x5e\x38\x49\xc0\xbc\x6b\xf8\x57\xc9\x98\x64\x92\xa8\x8e\x17\x82\x6b\x41\x81\x8f\x98\xc2\x33\xb7\xb9\x56\xb8\xe4\x4f\x8c\x08\x39\xa7\x8b\x42\xb5\xb7\x9d\xc3\x6e\x2d\x45\xdb\xff\x98\x20\xd3\x0d\x78\x27\x5f\x1c\x19\xe4\x07\x4d\x1f\x72\x81\xa3\xdc\xf8\x17\x25\x58\x4a\x3a\x5d\x06\x80\x0d\x3e\x82\x11\xd2\x62\x8a\xda\x72\x50\x60\xa9\x8e\xd1\x98\xf1\xed\x27\x63\x79\xf7\x6c\xad\xfb\xe2\xf1\xa3\x71\x88\x8c\xa5\xef\x93\x2a\x3a\x87\xbb\xa9\x2d\x4a\x47\x23\x92\xa6\x49\xcd\xde\x2e\xc3\x78\x25\xa8\x4a\xb3\x19\x21\x17\x26\xed\xb0\xad\x22\xe3\x81\x14\x42\x90\x11\x55\x48\x51\x83\xcd\xd7\x8a\x93\x33\x7f\x6a\xe2\xf4\x20\x0c\x90\xab\x9e\x7f\xdc\x43\x72\x27\xf0\xa2\x36\x74\x71\x4e\x12\xb2\x97\x48\xd6\x2d\x88\xa4\xec\x61\x0f\xc8\x63\x25\x69\xe4\x20\xe9\xeb\x8d\x0b\x5b\x04\xd8\x36\x40\xa0\xd4\x0f\xfd\x47\x33\x50\x1b\x63\x5b\xb7\x8b\x60\xff\x82\x55\x6e\xab\xbb\xd4\x61\xa9\x99\x16\x2c\xc9\xe5\xdd\x14\xe8\x2a\xef\xd4\xcb\x2b\x87\x48\x6a\xaf\x1c\x8a\x5a\x19\xd7\x47\xd2\x26\xe2\x60\xed\x01\xd8\x8a\x03\x55\xf9\x74\x3b\xba\xb0\x7e\x42\xc5\xd1\x8c\x28\x53\x58\xdb\x57\x0f\x7f\x4b\x34\xb1\xb7\x40\xfa\x3d\xad\x7e\xfd\x21\xdf\xec\xd4\xde\x12\x25\xdd\x95\x50\x81\xa7\xb3\x9b\x73\x80\x5b\x70\x18\xc7\xd2\x08\xae\x5f\xbc\xdc\xb2\x73\xf2\xb9\x1d\x99\x4d\xc1\xfe\x0d\x09\x54\x66\x8e\xb1\xfd\xc2\xa7\x5b\x17\x80\x86\x70\x01\x9c\xcd\xac\xd1\xeb\x73\xbd\x32\x69\x7f\xe9\xa2\xd7\xe6\x34\x5e\x1e\x55\x4e\xdd\x9d\x3c\xb8\x99\x3c\xe8\xc0\x0b\x0f\xf0\xf2\x6f\x3a\x06\x87\x79\xff\x1c\x80\x70\x58\xb9\x12\xf7\x27\x22\xbe\x21\x32\x39\x08\x49\xb1\xb2\x15\x2f\x25\x2f\x1e\x39\xf4\x98\x1c\x8b\xe5\x70\xb7\xe8\x30\x4e\xf2\x8d\x75\x03\x3d\xdf\x05\xbb\x9e\x5e\xf6\x42\x1f\x00\xa4\x88\x21\xdf\x34\xb3\x95\x19\xe0\xf0\x06\x21\x63\x15\xdf\xc3\x9a\x60\x3c\x3b\xbc\x56\x61\x78\x95\xe5\x7c\x8e\xed\xb5\xc9\x45\xad\x37\xf7\x39\x49\x6d\xd3\xb1\xec\x43\x47\x79\x66\x2f\x8e\xa5\xc6\xe0\x83\x2e\x26\xb6\xdd\x2d\x5a\x03\x59\xe2\xb6\x6c\x9f\x87\xac\xae\x6c\xd5\xee\xe9\xd1\x2e\xe5\x6c\xbc\x10\x64\x4a\x3f\x6f\x25\x8a\x5f\xc3\xa7\x56\xbd\xd4\xcb\x5c\x2a\x84\x05\xee\x19\x28\x9c\x15\xc4\xed\xd9\x95\xb6\xc5\x72\x46\x2c\xcf\x38\xb3\xe9\x66\x0f\x64\x89\xb8\x28\xfc\xb4\x2d\xb8\xde\xfe\x8b\x76\x99\x7d\x9d\x2b\xb5\x90\xa7\x27\x27\x33\xaa\xe6\xd9\xe4\x38\xe2\xa9\x09\x37\xe7\x62\x66\xfe\x38\xa1\x52\x66\x44\x9e\xfc\xe9\x8f\x7f\xcc\xb7\x78\x82\xa3\x87\x99\x81\x2b\xa9\xfa\x9d\x0a\x5b\x7e\x5b\x2d\x6c\xbb\x79\xa9\x07\xc1\xd9\x98\x7c\xd6\x44\x2a\xb7\x05\xb2\xb9\x97\x44\xa2\xfe\x8f\xb7\x48\x2e\x99\xc2\x9f\x4f\xd1\x27\xca\x40\x00\xf9\x8e\x67\x42\xa2\x73\xbc\x3c\xe2\xd3\xa3\x94\x33\x35\x47\x9f\xe0\x7f\xed\x4f\x4f\x84\x3c\xa0\x9f\x08\x16\x76\x7f\x6d\x49\x24\x5f\x5d\x77\x8e\x21\x17\x57\x22\xf2\xa8\x57\xf8\x8f\xff\x89\x52\xd3\xf2\x29\xfa\xe6\xe4\x8f\xff\x89\x7e\x0f\xff\xff\x7f\xa3\xdf\x37\x68\x6a\x9b\x41\xe1\x40\xe1\xcc\x9b\xa2\x3b\xae\x57\x5a\xa9\x2d\x6a\x09\x9f\x09\x9e\xef\x54\x6d\xcb\x0f\x34\x7a\xe0\xd3\xe9\x58\xd1\x94\x98\xdc\xa0\x31\x16\x15\x18\xd5\x2d\x71\x05\xa9\xad\x7c\x2a\xa8\x81\xdb\x76\xb5\x15\x6c\xa7\x26\x13\xda\x1d\x37\x99\xe5\x95\x1f\x21\x08\xa4\x50\x4d\x93\x4a\xf8\x8a\xc4\xfa\x54\x6c\x12\xf0\xe1\xac\x33\xd5\xfa\xec\x39\x72\x40\x58\xcd\xd7\x07\x6e\x85\x51\x88\x26\x50\xc3\x2e\x64\xed\x71\xa8\x84\x47\x7e\x31\x31\x6f\x30\xb5\xd7\x8a\x77\x93\x95\xce\xd7\x87\xba\xdd\x72\xb1\x93\xbc\xfc\x40\x2a\x31\xb7\x2d\xeb\x88\xb8\x1a\x92\x61\x5d\x69\x48\x3a\xe5\xc2\xe3\x7b\x1a\xbd\xd6\x56\x1b\x5b\x6f\x85\xa2\xc2\x04\x07\xb5\x3b\xf4\x7a\xea\xe7\xfe\x93\x75\xc3\x84\x48\x21\xf7\x76\x5e\x47\x09\x46\xab\xaf\x38\xcd\x12\x6b\x46\x5c\x03\x02\xb6\x6e\x43\x6f\x7d\xde\x37\x34\x0e\x61\x6b\x10\xb2\xcf\x9c\x64\x62\x73\x92\xeb\xf7\x33\x13\x11\x39\xe3\xbb\x85\x2d\x26\x94\x55\xe2\x9d\xdb\x97\xe8\x08\x8a\x95\x9b\x62\x2c\x0e\x27\x93\xc7\xb9\xb0\x67\xcc\xba\x16\x9d\x3d\x00\xe8\x2b\xce\x06\x80\x9e\xf6\x81\x01\x57\xc1\x0c\xdf\x81\x6b\x1b\xc3\x5f\xce\xf0\x1c\xe4\x7c\x09\x69\x5e\x60\xcd\x0b\xb7\x84\xcd\x33\xb5\x43\x7a\x48\x60\x88\x63\x53\x73\xcc\x8c\x4a\x38\xc5\x11\x65\xb3\x5e\x80\x98\x06\x89\xdf\x21\x07\xae\xa3\x8b\x3b\x2c\x1f\xf6\x1b\x9b\xb5\x73\x2d\x35\x1a\xe7\xf5\x7c\x2c\xc6\x81\xb1\x05\xd3\x0a\x5c\x94\xc2\xf2\xa1\x09\xe4\xa3\x82\x30\xb4\x62\x74\x7e\x29\x1c\x2e\xd1\xaa\xf1\xb9\x44\x52\x12\x8a\xa0\x00\x1f\xee\xaa\x68\x5a\xbc\x31\x97\x0b\x84\xe1\xde\xa4\x09\x89\xcb\x40\x7b\x2b\xc6\x2f\xe7\x5c\xa8\xf1\x96\x10\x85\xe5\x64\x58\x46\x8e\x12\x80\x65\xe0\x8f\x44\x3c\x52\xf2\x54\x44\xfa\xdb\x84\x16\x8d\x9d\x21\x08\x44\x02\x28\xb8\x54\x6b\xd2\xb1\xb1\x77\xb3\xa5\xe1\x4d\xfa\x3c\x63\xf9\x20\x7d\x4d\x41\x24\x53\x9c\x24\x3d\x24\x48\x26\x4d\x4d\x4b\x49\x92\xe9\x91\x43\x65\x8f\x51\xc2\x67\x34\xc2\x09\x9a\x24\x3c\x7a\x90\x23\xa6\xef\x66\x36\x33\x7c\x61\x21\x78\x44\xa4\x0c\x84\x99\x3c\xcf\xd5\x66\x1f\x41\x41\x41\x45\x44\x4a\x19\x95\x8a\x46\x4e\x4a\xc9\x53\xcb\x4d\xf9\x58\xad\x5e\x46\xdc\x94\x41\x84\xe1\x6a\xe1\x8a\x18\x9c\xb8\x8c\xd9\xfa\x1d\x70\x43\x5a\xf8\x27\x17\x57\xdb\x74\x80\xf6\x80\x66\xe5\x28\x64\xac\x8a\x07\x72\xcd\x91\x3a\xb3\x9f\xc1\x31\x5e\x45\x02\x37\xc5\x13\xe5\x09\xd2\x9f\x34\x0f\x92\xec\xe8\x32\x8f\x1a\x2e\x08\x0b\x3e\x98\xf6\xc0\xc0\x75\x60\xc8\x0d\x90\x3a\xeb\x68\x5a\xaf\x22\x48\x19\x50\x32\xa6\xec\x68\xa4\x2c\x4a\xb2\xd8\x17\x0d\xd3\xb7\xee\xa3\x26\x12\xb7\x3c\x7a\xed\xf5\xdd\xdc\x43\x58\xa2\x27\x92\x24\xfa\xbf\x26\x68\xf8\xc8\x63\x78\x6b\x96\x6c\x70\xd6\xa1\x13\xc7\xa5\x1b\x29\x0a\x26\x71\x20\xb5\x2e\xfd\xbd\xbd\x29\x67\x5e\x2b\x99\xe9\xe5\xd9\x90\x43\xeb\x95\x6e\xc4\x3b\x2c\x8c\xad\x48\xb6\x00\xdc\xd2\x3c\xa8\x96\x06\x20\x51\x97\x21\x6d\x28\x0e\x9e\x3e\xd2\xbc\xae\xab\xed\x6d\xa5\x81\x48\xcf\xa8\x95\x75\x28\x24\x8a\xad\x2d\x9e\xa5\xa9\x54\x90\x06\xa8\x29\x08\x6e\x26\x04\x6a\x42\x16\x45\x84\xc4\xb5\xf1\xa5\x7a\x44\x07\x87\xe7\x77\x8d\xd5\xdc\x24\xad\xa7\x5c\x99\xb2\x82\x06\xcf\xcf\x59\xae\x0c\x00\xdc\x24\xe1\x13\xb8\x90\x00\xea\xcf\x25\xbd\x06\x09\x73\x66\xde\x24\x46\x5f\x05\xf7\x8b\x07\x54\xf8\xba\x1e\x78\xae\xb0\x22\x07\x00\xf3\x57\x36\x99\x35\x82\xfd\x15\x2b\x63\x1d\xa3\xeb\x12\x0a\x48\x58\x59\x1a\xeb\x6b\x63\x25\xa2\xcc\x2b\x41\x03\x96\x26\xf1\x7c\x3b\xb4\x21\x34\x60\xa1\xcf\x3d\x40\x03\x96\xe6\xd9\x10\x95\xcf\x67\xcf\x9a\x4d\xac\x27\x75\xc1\xdb\xa7\x78\x19\x34\x2a\x23\xe2\x15\x48\xd0\x1d\xc8\x65\x1d\x21\x1e\x16\xec\x61\xa9\x7e\xdc\xeb\xc2\x1e\x96\x06\x73\xc8\xb0\x87\xa5\xa1\x1e\x2e\xec\x61\xcd\x40\x5b\xc0\x1e\x1a\xb7\xfd\x58\x13\x75\x3b\xa6\x00\x29\x2b\x93\x6c\x7a\x0b\xf7\xee\xca\x31\x9e\x99\x90\x00\x73\x8d\x39\x51\xd2\xa2\x00\xc3\x68\x6d\x76\x63\x53\xa0\x13\x96\x3b\xd1\x9e\xf7\xab\x51\x69\x0c\x09\x8b\x04\xb3\xe2\xd5\x01\x25\xe2\x05\x89\x34\xf9\x19\x46\xa5\x04\x66\x12\xa6\xda\xb3\xe6\x3a\x3d\x0a\x63\xa1\x8e\xf0\xc2\x66\x8b\x37\x15\xe7\x38\x9c\xbc\xd8\xcd\x10\x25\x01\xe8\xae\xc0\xea\x5b\xc1\x54\x7d\x2a\xe1\xdb\xcf\xf9\x93\x95\x1c\x81\xfc\x0c\x31\x36\x92\x1e\x74\x3a\xb6\x36\x85\xa6\x15\xa3\x4c\x91\x59\x59\xa4\xcf\x0f\x0b\x65\xea\xcf\x7f\x5a\xcb\x81\x0c\x8e\x9f\xb3\x5e\x04\x28\xf3\x16\x3a\xc4\xd7\xb3\x21\xb1\x2d\x72\x2f\xb5\x76\xad\xa7\x63\x6e\x54\x89\x52\x4c\x9d\x9e\x9f\x49\x70\xce\xcd\xa9\x1c\x31\x93\xc0\x65\x6b\xab\x1d\xa3\x0f\x50\x3a\x13\xa7\x8b\x84\xf4\x90\x9f\x1f\xd5\x14\x34\xca\xbe\xf9\xe6\xcf\x04\x7d\x83\x52\x82\x59\xc1\xc4\x02\x5a\xbd\xbe\xf2\x00\x28\x4e\xcd\xc9\x88\xd5\x6e\x05\x1a\x7c\x36\xd5\x78\x5c\x04\xdf\x90\x4d\xb9\x33\xd9\x40\x49\x38\x1c\xcd\x91\xcc\x26\xa6\xa6\x69\x60\x62\x73\x7a\xde\x05\x9f\x81\xeb\x19\x6e\x62\x37\xe8\xad\x01\x32\x4b\x0c\xa7\x25\x40\x66\x61\x6a\x1d\x40\x66\xfd\xe9\x3b\x58\x80\xcc\xd2\x9e\xb7\x03\xc8\xac\xdb\xf2\x2d\x00\x32\x0b\xcd\x7c\x31\x00\x99\xa5\x15\xfd\x62\x00\x32\x4b\xf3\xea\x00\x32\xbf\x10\x80\xcc\xf5\x7c\xa4\x16\x02\xb2\xfe\xf0\x6e\x06\x01\x59\xab\x5f\x35\xb3\x88\x5d\xf1\x76\x40\x9a\x7b\x61\x08\xc8\xc2\x04\xba\x70\xb7\xcd\xc3\xdd\x6a\x89\xcf\xf6\xad\x87\xe7\x62\xe0\xca\x17\x59\x4b\x10\xc8\xc2\xfe\xb4\x36\x7d\xee\x83\x12\x9f\x37\xc0\x12\x3c\x30\x6d\xcd\x21\xfd\xc2\x2a\x4a\x0b\x1d\xab\x25\x23\x07\xde\x65\x34\xa7\xd0\x9d\xdf\x51\xee\x16\x81\x9a\xa5\xe5\xf5\x3e\x1b\x43\x8b\xfb\x34\xce\xd7\xd4\x45\xdf\x81\x5e\x5d\x2e\xdb\x86\xce\x11\x37\x08\x70\x92\xd4\x1b\x06\x69\x4a\xf7\xd5\xec\xba\x8b\xcc\x43\x13\x81\x36\x55\x49\xd3\xd3\xd7\x93\x19\x8e\x91\x8d\x4b\xd9\x89\x80\x9b\x60\xbe\x9c\x51\xa9\x44\x63\xa8\x52\x65\x84\xbb\xb8\x61\x17\xd9\x36\x20\x28\xb3\xed\x3e\x4b\x49\xca\xc5\xba\x38\xa9\xda\x2f\x6d\x45\x87\x6d\x3e\x25\x8b\x39\x49\xb5\x10\x34\xde\xb4\x91\xb6\xfb\xed\x73\x38\x6d\x2a\x91\x89\x5b\x2c\x10\x41\xe0\x64\xd5\xef\xc6\x06\x20\xb0\xf5\x76\xef\xba\xcd\x16\xc2\x70\x43\x2b\xbe\x83\x70\x5d\x6d\x2d\xb1\x2f\x15\x5c\xe9\x40\xdf\xb5\xf1\x22\x3e\x5c\x67\x7d\x44\xc8\x8a\x58\x90\x55\x30\x40\xf9\x57\xb6\xde\xe9\x06\x61\x02\x55\x17\x6a\x58\xec\x72\xf3\xe0\x91\x06\x10\xcb\xea\xf2\x80\x6f\x59\x12\x71\x14\x4a\xd4\x85\xc1\x54\xd7\xab\x40\x25\x4e\x13\xdb\x81\x48\x32\xd1\x18\x34\xda\xc6\x0a\x19\xa9\x0c\x27\xa0\xe6\x85\x45\xda\xca\x9b\x3a\x59\xd6\x64\xa1\xb5\x33\x73\x53\xa6\xfe\xfa\x97\x8d\x76\x53\xab\x24\x76\xdd\xa0\xb0\x0c\x8e\x22\x22\x8d\x61\xd4\x06\x15\xe3\x09\x7f\x84\x9a\x32\xbb\xec\xaa\x3e\xca\x7a\xde\x9a\xc1\x7b\x64\xd8\x38\x27\x75\x23\x2e\xcc\x05\xcf\x66\x73\x67\x7b\xd1\x67\x46\x4f\xad\x6e\x2f\x7f\xa8\x18\x38\x37\xde\xcb\x6f\x33\x9a\x6c\x67\xd9\xba\x2d\x54\xdb\xf9\x38\xbc\x43\x72\xee\x4f\xeb\x04\x9a\xad\xdd\xd8\xea\xa0\xdb\xf7\x69\xbf\xf5\x46\x76\xe8\xa6\xe7\xd0\x10\xa7\x3c\x49\xc0\x4c\x2c\x49\xfa\x18\x16\xc9\x0e\xbb\x87\x09\xdf\xd1\x2d\x4b\xc3\xc3\xd7\xe0\x6c\x92\x0a\xa7\x8b\x56\xf2\xd7\xb5\x11\x0d\x25\x72\xa3\x2f\x7b\x9a\x4d\x18\x1c\x67\x84\xd5\xd9\xa6\x7e\xac\xd6\x88\x78\x63\xc1\x88\x2e\x32\x6d\x6f\x01\x89\x6e\x49\x5e\x38\x28\x71\xcd\x3c\x0e\x35\x30\xb1\xc4\xec\x7c\x9c\x60\x7e\xcd\xb8\x68\x0f\xa3\xf8\xf4\xf5\x12\x8f\x58\xbf\x90\x1e\xe1\x0a\xc2\x4e\x96\x79\x7c\xb5\xd1\x21\x42\x66\x06\xe8\xfe\xd6\xb0\x02\x3e\x10\xfd\x17\x68\x3a\x06\x4b\xd4\x84\x2b\xba\x90\x44\x08\x0e\x27\xf1\x11\x8e\x96\x51\x42\xa3\x40\x67\x9e\x09\xbc\x98\xd7\x71\x3c\xb7\xf3\x1d\x08\xca\x6b\x81\xa0\x34\x95\xac\xd9\x24\x1c\xdc\xd1\x15\xc3\x29\xe9\xc0\x59\xea\xc0\x59\x7a\x1e\x7e\x80\xe5\xc5\x77\x5e\x31\xab\xbd\x7a\xee\x3a\x84\x96\x57\x40\x68\xd9\xe6\xf0\xe5\xf0\x2b\x85\x63\xd7\xa1\xc6\xbc\x6b\x85\x1a\xe3\x2f\xc1\x83\x02\x02\x69\x3e\x8f\xaf\x0c\x30\x51\x1d\xd8\x6b\xa2\xc4\xd4\x88\x0b\x9b\xc8\x4d\xab\x60\x62\x56\xd1\x45\xab\x75\x79\x5d\xd0\x96\xcd\x56\x66\x23\x3c\x96\xda\xbb\xeb\x40\xd0\x59\x9a\xb7\xe1\x40\xce\xcd\x3e\x33\x66\x36\xab\x2e\x18\x66\xcd\x6c\xa2\x60\x6d\x96\x40\xe3\xe9\xe1\x6d\x25\xd1\xe4\xa5\x9d\xb6\x4b\xa4\xe9\x3b\x1f\x34\x11\x68\xce\x93\xd8\x84\x79\x05\xab\xe5\x3b\xf0\xe1\xdb\x7e\x81\xdc\x66\xdc\x2e\x48\x64\xb4\xad\xbc\x3e\xd3\xaa\x74\x19\xbf\x89\x6f\x3d\x65\x26\x90\x7f\xf7\x9b\x36\x13\xae\xec\xb6\xa9\x33\x6b\x06\xb7\x4a\xf4\xd8\x32\x7d\x26\xe8\x71\xa5\x97\xce\xcd\xae\x95\xa7\xae\x4c\x2c\x5b\x04\x51\x55\x0a\x69\xed\x8e\xd5\x92\xe2\xcf\xe3\x05\x16\x38\x49\x48\x42\x65\xfa\x6c\x91\x9c\x67\x45\x77\xad\x3e\xab\x82\x1b\x13\x11\xcb\xd2\x89\x21\x45\x37\x10\x5b\xbe\x4f\x71\x24\x32\x16\x22\x4d\xf9\x8d\x41\xae\xbc\x5b\x06\xf7\x02\x58\x95\xa2\x39\xd4\x8a\x9c\x62\x2a\x18\x91\x8d\x95\xf9\x48\x94\x09\xaa\x96\x63\x5b\xe8\xb0\xfd\x81\xbb\xb5\x5f\x9e\xd9\x0f\x57\x7b\xb8\x5d\x92\xbe\xeb\xcf\x17\x56\x5c\x10\x01\x55\x5b\x5c\xfd\x91\xa0\x98\xa3\x05\x61\x20\xbe\xf4\x0b\xc4\xae\x56\xae\xed\xa6\x98\x6b\xfc\x34\x0e\xd2\x60\xc6\x51\x99\x38\xd6\x1d\xd6\x3a\x18\xa0\x55\x93\x7c\x66\x20\x9c\x06\x2f\xf2\x33\x14\x7d\xb0\xb1\xee\xa6\x69\x3d\xe0\xc0\x15\x0c\xf6\xca\x7c\x63\x82\x5c\x7a\xab\x54\x35\x8c\x13\x33\xc6\x55\x7d\xb9\xaf\x15\x83\xed\x07\x5f\xb5\x18\x71\xd0\xc9\x9e\x86\xad\x0f\xba\x10\xd9\x42\xd1\x49\x15\xa9\x46\xed\xaf\x08\x64\x3f\x81\x14\x6e\xe7\x66\x28\x74\x6b\x2a\x43\x16\x38\xb1\x9d\x9d\x96\xff\x2d\xac\x93\x03\xfc\xa1\x6c\x96\x90\x42\xf2\xd5\x55\x4a\x81\x0a\xcd\xf9\x01\x03\xb4\xa6\xce\xa2\x6d\xf6\xbd\x0b\xf7\xc0\x50\x5f\xd2\x98\x88\x8e\x47\xac\x2f\xd1\x13\x41\x8c\x58\x44\x88\x9a\xca\x91\xde\xaa\x0d\xa5\x78\x26\x44\xf7\xe4\x63\x53\xb4\xf0\x40\x95\xf4\xd5\xa0\x4c\x1f\x53\x9c\x48\xd2\xd3\x0d\x43\x11\x49\xc5\x21\x68\x12\xa3\x27\x81\x17\x0b\x22\x46\xcc\x86\xe0\x83\xc3\x85\xf3\xc4\xb4\xdf\x14\x1a\x6a\xd7\x80\x8c\x23\x1c\xcd\x5f\x68\x8f\x30\x64\x50\x44\x73\x12\xbb\x5c\xe4\xe2\xf6\xb8\x79\x1b\x83\xf5\x06\x9b\x35\x9c\xba\x6a\x46\x3d\xdb\x49\x12\x69\x8e\xe2\x8b\xdb\x2e\x88\xd0\xa3\xd6\x34\xfc\x48\x18\xa2\x53\x37\x0e\x1b\xbb\x83\x9e\xc0\x33\xa5\x49\xff\x11\xd3\xc4\x24\xf7\xbb\xae\x9d\x10\x68\xcc\xef\x23\x66\xdc\xdd\x2c\x2a\xa4\x15\x52\x46\xe5\x5c\x73\xea\x0c\x7c\x92\xa0\x66\x6c\x24\x79\xc6\xb1\x2c\x1a\x19\x8d\xfa\x46\x7f\x29\x98\x37\x8e\x0a\x29\x53\x51\x80\xc6\x03\xc1\x92\xae\xa0\xd2\x2a\x39\xb3\x0b\xbd\xaf\x86\xde\xd7\xaf\xcd\x21\x86\xdf\xfb\xc3\xb2\x69\x08\x7e\xd3\xf6\xef\x43\x82\xdc\x63\x28\xfe\x2b\xc7\xac\x3f\x4f\xb8\xfa\xeb\xe6\x17\x3c\x47\x6a\x41\x17\x80\xff\xf6\x02\xf0\x9b\x8f\xed\x46\x41\xf8\x6b\x00\x99\x5c\x2f\xbb\x46\x3c\x7b\x84\x9e\x67\x8d\x7a\xf6\x51\x1b\xc1\x17\x2d\x23\x9f\x73\x08\xa1\x2e\xfa\xf9\x99\xa2\x9f\x6b\x96\x78\xb3\x08\xe8\xad\x6c\x2b\x2f\x1f\x9c\x59\xae\xb1\xff\x9c\x01\x9a\xeb\xa2\x63\xb2\xc9\xf8\xd9\x8f\x5e\xed\x9c\xdb\x9e\xc0\x1f\x3d\x51\x18\x91\x48\x68\x3a\x9b\x90\x38\x06\xfb\xbd\xe2\xb6\x42\x6a\x4e\x3b\x4e\x0f\xd3\xcc\x17\x4b\x4d\xec\x38\xe1\x6c\x26\x69\x6c\xa0\x08\x4c\x2d\xfe\x82\x96\x08\x29\xb8\xb0\xbf\x49\x42\x84\x33\xff\x0a\xf4\x95\xa4\x5a\xee\x0f\x4c\xc2\x02\xc5\x9c\x48\xf6\x5e\x19\xad\x0c\xb3\x25\x7a\x60\xfc\x29\x21\xf1\x0c\x76\xa8\x3c\x98\x23\x44\x49\x0f\x51\xe5\x3f\x13\x90\xb3\xcb\x33\x35\xd2\x63\x87\xa0\x1e\x23\x02\x12\xfb\x6d\x50\x0b\xd8\x37\xf3\xf5\x31\x42\x43\x86\xa6\x38\x52\x3d\x24\xb3\x49\xde\x7e\xcc\x4d\x71\x57\xad\xe6\x04\x13\xcf\x1b\xe9\x82\x73\x6b\x3a\xaf\x3f\x1b\x8e\x3b\x68\x72\xed\x27\x14\xef\x14\xc4\xf4\x88\x77\x81\x66\xfc\x94\x49\xeb\xed\x46\x9c\xf9\xa3\x6f\xc1\x47\x3c\xb6\x2e\x54\xe4\x34\x38\xb5\x8c\xc7\x8d\x46\xa5\xd2\x54\x36\x1d\x4b\x1e\x71\x66\x0b\x81\x5a\x8f\x00\xb4\x6b\x96\x3b\xe6\x4f\x4c\x2a\x41\x70\x6a\xad\xb0\xfa\xaa\x81\x68\x05\x13\x6f\xa6\x47\x4f\x85\x11\x31\x36\xd9\xe2\x0b\xca\x1e\xf4\xee\xe6\x68\xc2\x50\x57\x19\x7a\xae\xdb\xb4\x85\xbe\xf1\xc8\x19\x67\xc6\x13\xb3\xcb\xfe\x49\x3a\x63\x38\xd9\x50\xc9\xad\xac\x5c\xd5\x79\xe2\x8c\x57\x56\x5c\xd0\x52\x84\xb1\xaa\x20\xd3\xe3\x46\x46\x84\xd2\x7c\x43\xd7\x0d\x46\x31\x59\x10\x16\x13\x16\x2d\x81\x44\x18\xe0\x4a\x08\x86\x13\x84\xe1\x3b\x9c\x1c\xa3\x73\x93\xc8\xe0\x25\x3c\x7b\xad\xc3\x85\x9e\x62\x46\xa7\x5a\x50\x04\x6b\x97\x1d\xe5\x88\x99\x61\x3a\x63\x73\x50\xac\xda\xaf\x58\xcd\xce\x7c\x4b\x19\x2e\x64\x8e\x6c\x71\x9e\x92\x6c\xa3\xe0\xe0\xc0\x6c\xb5\x6c\x82\xd8\x56\x78\x1d\xea\xf5\x06\x9b\x81\x24\x94\xf9\x46\xba\x3b\x04\x57\xa6\x59\x24\x8c\x14\x06\x8b\xf6\x9c\x24\x8b\xa0\x54\xee\x02\x0b\x25\xdd\xd1\x36\x38\xa9\xfa\x96\x49\x33\x66\x10\x2a\x8c\xa5\xe1\xc9\x62\x51\x5a\x67\x46\xde\xf8\xf1\x88\x0d\xd5\x7b\xa9\x39\x1f\x67\xb3\x64\x89\x70\xfc\x48\x65\x8e\xb9\x1d\x71\x26\xb3\x94\x88\x52\x05\x7a\x8b\x57\x8b\x1d\x69\xea\xb1\x69\x99\xff\x11\x27\x34\xd6\xdd\x1a\x19\x63\x86\x26\x64\xaa\xe5\xa7\x05\x16\xd2\x59\xc4\x6a\x5c\x9a\x76\x73\x63\xbd\x56\xaf\xc6\x2d\x7f\x08\x19\x22\x4a\x73\xde\x89\xad\x0e\x7c\x52\xe6\x9c\x76\xd5\x57\x70\xcd\x49\x65\x52\x68\xb5\x80\x63\x57\xe1\x7c\x1d\x84\x8a\x83\xf1\xca\x4c\x08\x8b\xee\xc7\xc9\xd2\x66\x70\x1b\x71\x80\xd2\x04\xed\xa8\x8d\xa1\x35\xe4\x9a\x84\x82\x70\x21\x15\x56\x34\xb2\x62\x3b\x17\xf6\xe2\xb0\x17\x4b\xf3\xd6\x9e\xef\x88\x5a\x2c\x23\x9c\x54\x77\x78\x85\xd7\xcc\xbc\xbf\x9a\xb7\xda\xe3\x66\xda\x5e\x99\xb4\x12\xf1\x24\xd9\x04\x51\xbb\x34\xf3\xb3\xfc\xf3\xd5\x23\xca\xfb\xd1\x1b\xe0\xf6\x02\x4e\x8d\xf1\x3d\xe2\xc4\x4a\xa8\x52\xd9\x5d\x0a\x5f\x32\xb7\xdb\xd2\xfa\x36\x47\x8c\x4f\x4d\x41\xd4\x26\xaf\xe4\x42\xf0\x94\x6e\x02\xed\x66\x1c\x75\x37\x2e\x8a\x70\x8d\xf0\xe6\x62\x0d\xf5\x29\xb2\xe4\x65\x7b\x84\x78\x73\xcc\x8c\xbc\xba\xe2\x0c\xa5\x78\xb1\xd5\x82\xaf\xb3\xb6\xf4\x51\x6a\x4c\x5d\x76\xf5\x00\xb2\x97\x00\x7c\x39\x2c\xf2\x13\x5e\xe6\xa9\x3d\x4d\xa0\x5d\x6c\x23\x72\xb8\xd7\xaf\x0f\xd9\x94\x6f\x70\x38\xf3\x54\x1c\x7b\xfa\xb0\xa3\xd9\xe0\xfc\xf9\x98\x4e\xb3\xfb\x66\x4d\xdb\x9c\xc7\xb3\x3a\xa2\xde\xf8\x64\xba\x15\x7c\x4e\xd5\x2f\x64\x22\xa1\xd6\xb7\xc9\xdd\x5a\x3c\x5a\x41\x8b\x08\x86\xb3\x7a\xa9\x3e\x15\xe8\x70\xef\x6b\x54\x6a\x07\x19\x0b\x83\x0b\x06\xba\xae\x6f\xf5\x05\xd6\xcc\x1e\x92\x56\x8b\xb5\x63\xee\xe1\x66\xe0\x63\xae\x47\x0f\x39\x56\x7f\x42\xd7\x22\xab\x6e\xa2\x2b\x4e\xb5\x24\x64\xd4\x87\x3c\xb2\xc0\x86\x58\x4f\x69\x42\xe4\x31\x1a\xd6\xe8\x8d\x2e\xc0\xd9\x3b\x04\x4d\xa8\x97\x93\x9e\x32\x41\x83\x3a\x43\x4e\x46\x42\x14\xc0\xbb\x43\xdb\x99\x20\x7a\xcc\x91\xf1\xdd\x71\x83\x34\x06\xd1\x55\x82\x6a\x9e\x65\x84\x55\x05\x52\xb4\xe6\x05\xd4\xa6\x97\x1b\x19\xde\x7f\xc0\x8d\xcf\x1b\xdb\x52\x6a\xf9\xa8\x1a\xb6\x74\x1f\x15\x07\xda\xc7\x8f\xbb\x5e\xef\xf4\x17\xd5\xbd\xa9\x1d\xe1\x5d\xb1\xf5\x8d\x47\xe7\xa5\xfc\xcd\x1d\x91\x1f\xe0\x53\x67\x15\xc5\x68\x2a\x08\x18\xce\x53\x9f\x13\xca\x62\x22\xa4\xe2\x1c\xee\xbb\xdb\xf3\xef\x4f\xee\x87\x88\xa8\x08\x25\xf4\x81\x8c\x58\x24\x1f\x7b\x5a\x3c\xfe\x57\x46\x94\xfe\xb9\xc1\xd0\x42\x53\xc2\x24\x70\x02\xaa\x2a\xb9\xf3\xf5\x0b\xe9\x16\x46\xff\xf7\xbc\xf8\xfd\x0a\x92\xaf\xa4\xbf\x00\xed\x3a\x2c\x78\x20\x53\xc0\x11\x36\x4b\x2b\x6b\x28\xc6\xa8\x78\x83\xba\xe2\x4c\x5b\x84\xbb\xb2\x7f\x66\x6c\x43\xa1\xeb\x2c\xff\x28\x18\x45\x83\x4c\x97\x2e\x30\x00\xed\x6d\x16\x47\x6b\xbe\xa9\x6d\x7d\x1d\x13\xc9\xd3\x8a\x9c\xca\x9e\xd7\xb1\x42\x4a\x10\x02\x2c\xc4\xd3\x93\xbd\xeb\x6d\x26\xa9\x9f\x58\xf0\xd1\xf1\x88\x7d\x72\x86\xfc\xfc\x57\xe9\x9a\x30\xb1\xd9\x1e\x7f\xb0\xd8\x0a\x34\x1b\x53\xe9\x7f\x00\x14\x69\x99\x25\xca\x14\x58\x99\x52\xad\xa5\xbb\x81\x9a\x27\x75\x5c\x42\x60\x16\xcd\x2f\x77\xac\xb3\x42\xa7\x63\x92\x6c\x22\x89\x0e\xa7\x83\x44\x6a\xfa\x8e\x1e\x1a\x4e\xe7\x36\x25\x84\xf2\xc9\x80\x1c\xe8\x6a\x22\x18\x1d\xc7\x58\x8f\x13\x53\xe0\x84\x20\x30\xfd\x96\xa3\x9f\x4d\x82\xa3\xde\x45\x2b\xa9\x1b\xcb\xaf\x09\x3b\xf4\x21\x45\xd0\x0b\xc2\x6a\xc4\x44\xc6\x00\xe1\xd6\x3b\x82\x30\x92\x44\x50\xe3\x91\x89\x9c\x59\xc6\x1a\xc9\x66\x9a\x4d\x68\xc9\x0f\xbc\x81\x9c\x81\x7e\xc6\x33\x09\x11\x8c\x29\x51\xfa\x82\xfa\x0a\xca\x92\x19\x57\x5c\x0f\x2d\x04\x4d\xa9\xa2\x8f\x44\x7e\x5d\xb3\x75\x67\x58\xe1\x84\xcf\xfa\x42\xd1\x29\x8e\xd4\x1d\xde\x49\x03\xc7\xb6\x99\x6d\xc3\x3a\xdc\x30\xd0\xf0\x5c\x2f\xfe\x8c\x30\x22\x60\xa2\x5a\x27\xaf\x3f\xc2\xf0\x64\x2b\xce\x0d\x35\x3d\x22\x53\x05\x41\x7a\x8b\x05\xce\x14\x4f\xb5\x7e\x8b\x93\x64\x09\xd5\x0d\xf4\x93\x39\x96\x73\xb7\xd1\x26\x0c\xa9\xcd\xdd\x64\x17\xf7\x0c\x47\x73\x72\xab\xb0\xca\x6a\x8d\xc1\xa5\x51\xbe\x23\x2c\x4b\xdf\x9d\xa2\xff\x93\xcf\xf1\xac\x7f\xf6\xdd\x60\x7c\x3e\xbc\xed\x7f\x7b\x31\x38\x0f\xe6\x63\x9f\x7c\x1a\xde\xde\x56\x7f\xfd\x6e\x78\x57\xfd\xf1\xfa\xea\xfa\xfe\xa2\x7f\x57\xd7\xca\xc5\xd5\xd5\xf7\xf7\xd7\xe3\x0f\xfd\xe1\xc5\xfd\xcd\xa0\xe6\xd3\xfb\xbb\xe6\x87\xb7\xdf\x0f\xaf\xaf\x07\xe7\x6e\x55\xfe\x11\x9c\x2e\x08\x4f\x82\xd0\xc1\xfa\x69\x94\x0f\xe0\x11\x2a\xbe\x78\x8a\xee\xcb\xb8\xab\x36\xc6\xc7\xe4\x61\x3e\x61\xa9\x79\x18\x84\x72\x8d\x18\x72\x9f\xeb\x45\x69\xfa\xd4\x78\x41\xa3\x39\x41\x09\xe7\x0f\xd9\xc2\xb2\x36\x93\xcc\xc1\xb8\x31\xfc\x10\x19\xb4\xf6\xdd\xf0\xee\xb4\x8a\xff\xea\x1b\x0b\x10\x1f\xdc\x19\x80\x71\x61\xc7\x4e\xc1\x96\xb2\x10\xe4\x11\x0e\xab\x37\x95\x06\x3d\xf8\x9d\x59\xd5\x8f\x69\x0d\x33\x55\xea\x26\x8e\x6d\x0d\x3a\x37\xb1\xa0\xe1\xe2\xbe\xae\x5a\x4d\xbf\x1c\x06\xf0\x1e\x4d\x48\x84\x33\xe3\x2b\xd6\xf7\x94\x10\x5c\x84\x03\xce\xe9\x61\x7f\x8d\x5a\x3a\xaa\x6d\xb0\xb4\x67\x7a\xe2\xf2\x81\x2e\x16\x24\x7e\x57\x95\x5f\x8a\xc5\xca\x24\x9c\x3e\xdd\x67\x70\x26\xb5\x5e\x0f\x3a\xbf\x43\x6b\x9e\x5b\x54\x7d\x2a\x8d\x3f\x2c\xf7\x10\x02\x10\xa1\xbe\x13\x3c\xaa\x2e\x05\xef\x35\x56\xe8\x89\x40\x4a\x50\x66\xe1\xea\x8d\xee\xad\xcf\x36\x74\x67\x3c\x19\xae\x46\x4a\x21\x55\xa8\x91\x19\xef\x43\xe0\xd6\xdf\x4b\x52\xc7\x88\x77\xc8\xeb\x38\x37\x8d\x02\x77\x76\xa1\x04\x30\xe2\x06\x9f\x91\xbb\x0d\x6a\x2c\xe4\x2b\xe4\xab\xea\x8d\xb4\xe6\xb2\xd0\x6c\xbb\xcd\x78\x5c\x2e\x6b\x01\xa0\xb1\xfd\xc0\x0a\x20\x7e\x6b\xd7\xea\x8e\xc7\x78\xa9\x89\x03\x62\x78\x64\xb6\x58\x70\xa1\x50\x43\x1b\xc6\x3b\x62\xc6\x07\x77\x8e\x9d\x87\xe7\x71\xd0\x88\x96\x30\x64\x0d\x86\x72\xbb\xf4\x3e\xbb\xae\x39\xe3\x08\xa1\x4a\x40\x11\xf4\x60\xeb\x69\x41\xa5\x2e\x50\x68\x9d\xf0\xbb\x4b\xe4\xde\x42\x5f\xf0\x6d\x6b\x7f\xd4\xf5\x7e\xe5\x5a\xa8\xdd\xf2\x84\x4c\xd5\xb8\xd6\xeb\xb3\xc2\xc0\xa9\x5b\x64\x4d\x19\xd1\x74\x36\xdf\x43\x8b\xed\xb5\x84\x3f\x59\x7f\xa9\x56\x0d\x02\x0b\x81\xe0\x5c\x19\xf9\x34\xd7\x61\x90\x5b\x4d\x30\x2f\xd8\x4e\x6d\x2c\xb3\x17\x02\xb5\xcc\xff\xc0\xf8\x13\xf3\x96\x7d\x79\x3c\x62\x03\x0c\x45\xfc\xbc\x22\xe2\x42\x9c\x41\x0b\x58\x2b\xff\x17\x0a\x72\xbd\x68\x10\x4c\x33\x42\x59\x4e\xf7\xb6\x7c\x6b\xb2\x44\x79\xd1\xb5\xc2\x77\x6d\x4e\x8f\xb1\x7a\x3b\x11\xd0\x4c\xd8\x96\x0b\x52\x64\x61\x2d\xf3\x66\x9e\xb9\x03\x15\xdc\xee\xba\xab\x63\xf4\xa3\xb3\xfc\x40\x3c\x51\x5e\xaf\x50\x99\x1b\x27\xc1\x4b\x07\x6a\x54\xb7\xb0\xfb\xc0\x09\xda\x77\x84\xd1\xea\x05\xf6\x80\x04\x35\xab\x5c\x50\xc0\x19\x33\x16\xd9\x0d\xc2\x29\xcf\xfc\x47\xb7\x64\x75\xbc\xf5\x07\xa8\xfd\x63\x1d\xd6\x20\x74\xb0\x64\xf9\x3f\xcc\x66\x99\x4c\x0a\x87\xea\x6f\x6b\xb1\x58\x0f\xaa\x3e\x3f\xe0\x01\x34\x89\x16\x68\x4a\x93\x04\xe4\x80\x63\xd4\x87\xd2\x79\x90\x88\xa0\xaf\x42\x17\xb5\x46\x67\x8c\xaf\x8b\xdd\x6e\x20\xa6\x28\x20\xa6\xdb\x66\x62\x92\x40\x4d\x79\x1e\xda\x7e\x28\x6a\x0f\x39\xc9\x9a\xb7\xe0\x2a\xa2\x63\xfb\x4c\xe4\x0d\x94\xf7\xd7\x08\x3a\xab\x0c\x37\xf8\xf0\xd7\xfa\xa1\x7f\xcc\xb0\xc0\x4c\x41\x28\x95\x15\xdd\x05\x09\x42\x7a\xc9\x67\x08\x56\x64\xc6\x10\x0c\x3f\x85\x9b\xeb\x5c\xfe\x33\x0a\x89\x27\x71\x0f\xd1\x63\x72\xdc\xb3\x05\xc5\x65\x36\xc9\xdf\x9c\x6b\xc9\x61\xc4\x2a\x21\x22\xc7\xa8\x9f\x48\x6e\xbf\x20\x2c\x4a\xa0\x54\x65\x10\xf5\xe5\x29\xdf\xba\x95\x26\x4b\x50\x50\x60\x2b\xf3\xe6\xb9\x7d\x10\x7c\x38\x62\x58\x1a\x9f\x78\x02\x27\x3d\xff\xbd\xae\xbe\x6f\x21\x4e\xe2\x19\xe1\x88\x2b\xd7\xd0\xb3\x6d\x92\xa9\x53\xb2\x6a\x83\xe0\x0d\xd8\x98\x3c\x74\x27\xc8\x20\x46\x5f\x61\x85\x12\x82\xa5\x42\x7f\xfc\x7a\xa3\xd8\x10\x37\xc1\x9c\xbb\xda\xe3\x9b\x07\x60\xbb\x08\xce\xa6\x22\xe5\x50\x47\x0a\x61\xc4\xc8\x53\x18\xb0\xc3\x21\xc6\xea\x91\xca\x0c\xaa\x7f\x06\x39\x23\xa6\x7e\xa3\xc9\x2c\x83\x20\x58\xa3\x32\x35\xf0\x11\x07\xd7\x67\xdd\xa7\x76\x58\x35\x94\x65\x95\x27\x6a\xd4\x33\x80\x94\xc8\x63\x29\xe7\x58\x8d\x98\xe5\xac\x2e\x6c\x24\xa8\xd4\xd6\x4f\x92\x62\xfc\x22\x86\x10\x5d\xa6\x27\x0c\xb5\x4b\x8f\xfd\x02\x5d\x82\xfa\xe5\x83\xc8\x8a\x85\xe1\xfd\x61\xd1\x9a\xda\x88\xf9\x7c\xfd\xb0\xed\x5a\x69\xa7\xce\xbe\xfc\x82\x42\x70\x4d\xf7\x17\xa6\x88\x6c\x0b\x61\x98\xd4\x0d\x79\xcd\xc1\xaa\xda\xf4\x57\xc8\xc6\xfb\xee\xa0\xbd\xa8\x5c\x6f\x1f\x87\x6b\xf6\x89\xd7\x98\xdb\x1b\x36\x37\x90\x2d\x76\x51\xc0\x7d\x34\xe3\x4b\x79\x7c\x0b\x43\x1f\xc6\x90\x4b\xb1\x9e\x0b\xe6\xb9\x09\x8e\x75\x80\xa1\x9b\xc6\x41\xa8\x74\x10\x99\x09\xa1\xf4\x8e\xf1\xd9\x37\x1b\x3c\xaf\x8b\xb7\x3d\xfd\x5e\x3e\x7f\x37\x15\x1f\x04\x57\x9d\x78\xb3\xb0\xd7\x8f\xff\x89\x23\x08\xa0\x84\x9e\x5c\xe8\x66\x15\x50\xc0\xc1\x30\x62\x30\xe6\xd7\x8a\x87\xb6\x1e\xf4\x31\x1a\xc0\x45\xe3\xca\x43\xe3\xa9\x73\x48\x04\x2f\x8f\x98\xd6\x4c\x5c\xfe\x71\xd0\x7e\x91\xc4\xeb\x4e\x80\x01\x33\xd9\xc9\x97\x93\xae\xc7\xd8\x6e\xd2\x26\x1c\x96\x0a\xb4\x01\xb0\xbc\x68\x30\x3b\x45\x31\x8f\x1e\x88\x38\x11\x24\xa6\xf2\x14\x7c\xeb\xaa\xd1\xa9\x97\x6a\x6d\x7b\x67\x49\xa3\x29\x50\x60\x4d\xae\xc1\x99\xe9\xdf\x06\xd1\xbb\x6a\x66\x3d\x44\xa7\xa0\x4e\xb8\x50\x57\x93\x64\xe3\xd2\xb5\x09\x53\x62\xb9\xe0\x94\x29\x6f\xca\x2a\x2d\x84\xd3\x34\xb4\xd0\xd6\x14\xa4\x2d\xf6\x11\x83\xb3\xe5\xb4\xef\xe6\x44\x12\x17\x70\x60\x26\xa5\x38\x32\x5e\x16\xc3\x2e\x16\x58\xcd\x25\x64\x04\x15\xd7\xc0\x2a\x5d\xf0\xa9\x5e\x21\xbc\x80\x78\x05\x63\xa5\xc8\x3f\xf2\x79\x2b\x52\xd1\x24\x19\x31\x46\x48\x2c\x11\x24\xef\xbc\xaf\xcd\x3c\xd3\x9f\xf6\x10\x8e\x63\xf4\x3f\xbf\xfa\x70\xf1\xd3\xdd\x60\x3c\xbc\x04\xa3\xf5\xf0\x62\xf0\x75\xcf\xff\x78\x75\x7f\xe7\x7f\x35\x16\x96\x47\x22\x50\x8a\x1f\x40\xc5\x63\xd2\xc8\x7f\x90\xdd\x11\x8e\xd4\xe5\xe4\xe9\x27\x92\xb8\x48\x57\x2b\xa6\x78\x08\x20\xbb\x87\x8d\xc5\x0a\x8d\xcd\x6f\x03\xe5\xf7\xc6\x7f\xb2\x9a\x06\x1d\xf1\xf8\x2e\x9c\x18\x98\x12\x06\xd1\xd8\xd6\xda\x97\xeb\xbe\x39\xc1\x11\x36\xa3\xac\x29\x1e\x8f\xb0\xc7\xe7\x14\xe2\xbf\x27\xcb\x1f\xb4\x7a\x7d\x8d\xa9\x68\x4d\x7b\x03\xf6\x48\x05\x67\x30\x35\x6f\xd6\xf2\x27\x46\xeb\xe9\x58\x96\x0f\x95\x34\xb2\x30\xc4\x68\x2c\x1a\x63\x3e\xeb\x80\x4c\x5e\x7d\xba\x16\x1e\x81\x7c\x56\xc2\x65\x7f\x7a\x14\x0e\x07\x45\xe0\x2f\x9a\x9c\x06\x47\xec\xee\xea\xfc\xea\x14\x91\x04\x4f\xb8\x80\x6c\x30\x13\x12\xe4\x9a\xb0\x0b\x16\xf1\x34\x68\xa8\x90\xf9\xdb\x43\x8b\x3c\xf3\x37\x34\xa2\x1d\x9b\x36\xd6\x55\x11\xe6\xa2\x9a\x37\xbb\x5f\x15\xd0\x4e\xf6\x9a\x8b\x36\xd7\xbf\x7e\x0d\x96\x8e\x2f\xb4\x22\x57\xe2\xbc\xf6\x6e\x9e\x12\x6c\x0a\x78\x1a\xb7\x90\xb5\xe5\xdb\x00\xd6\x24\x29\xd4\x03\xd2\x07\x47\x1e\x5b\x17\x7c\xfe\x26\x67\xe8\xfb\xbf\x49\x34\xc9\xd4\x88\x15\xdb\xe0\x0c\xf5\x7f\xbc\x45\xdf\x62\x15\xcd\xbf\x1e\xb1\x2b\xad\x66\x7e\xff\xb7\x06\x88\x82\x8d\xd1\x75\xf4\x9a\x9c\x63\x85\x2f\x38\x8e\x29\x9b\xd5\x41\xeb\xe4\xf8\xe7\x83\xbb\xfe\x29\xba\xb2\x3a\xbc\xcf\x2a\xce\x33\xad\x82\x86\x80\x21\xc3\x44\x1c\x17\x01\x56\xce\x8a\xf0\x23\x46\x33\x83\x0b\x6b\xc4\xee\x0c\xa6\x90\xe6\xaa\x54\xa1\x05\xb7\x18\xfc\x5a\x2b\x33\x68\x4b\xc6\x94\x6d\x2d\x89\x7a\x75\x80\x8c\xfd\x66\x58\x79\x0c\xe4\x99\x2a\xb3\x1f\x31\x50\xd0\x7d\xa6\x67\xc2\x23\x9c\x40\x4c\xde\x51\x60\xd3\xd3\x6a\x3b\xcf\x20\xed\x0e\x82\x61\xd8\xb2\x18\x3a\xeb\x33\x41\xbd\x50\x16\x6e\x14\x18\x00\x60\x1f\xad\x37\x36\xe5\x9a\xe3\x18\x2c\x11\x30\xbe\x25\x66\x75\xf4\x87\x1e\x5b\xc4\x2c\x8b\x7e\xea\xf8\x11\x14\x36\x36\x6e\x45\x1c\x81\xf9\x9e\x2d\x21\x7c\x1b\x40\xb3\x39\x84\x7e\xe4\xdc\xd9\x12\x65\x65\x17\xfd\x9d\x18\x7c\x36\x62\x26\x52\xb0\xb0\x2f\x61\x56\x7c\xd0\x3b\x67\x10\xc8\x98\x5f\x97\x5e\xc0\x58\xd8\xc0\x46\x2b\xeb\x2f\x04\x39\x8a\x89\x22\x22\x05\x7b\x4f\xb8\xa6\xfa\x86\x3d\x46\x37\xa1\x7a\x1d\xf3\x28\x4b\x1d\x32\x20\xa4\x27\xda\x08\x38\x7b\x89\x7a\x0a\x31\x17\xfb\x3a\x8a\xc7\x22\x9a\x53\x45\x20\x2b\xaf\xb5\x7e\x6c\x08\xa6\x1f\x7e\x5a\x95\xd4\x9b\x05\x5f\xe0\x1d\xbb\x45\xad\x99\x86\xc6\x8b\x62\x4b\x85\xd6\xd6\x03\x9b\xad\x29\x74\x71\x99\xa3\x97\x71\x01\xc2\x16\xf9\xbc\xe0\x60\xe4\x36\x39\x55\x3c\x7e\x2f\xd1\xf0\x5a\x4b\x40\x5a\xe3\xf5\x67\x30\x93\xca\x04\x97\x41\xba\x8e\xf9\xda\xa4\x0b\xf4\xd0\x37\xa6\xe2\x6c\x84\x3e\xbb\x3f\xfe\xfa\x9f\xff\xf9\xe7\xbf\x6e\x92\x4e\xe2\x14\x72\x68\x37\x5f\x23\x5f\x0e\xa1\x28\x12\x85\x3b\x50\xe5\x54\x3b\xec\x82\x3d\x80\x4d\xcb\xbf\x0d\x4a\x51\x10\x3b\x84\x67\xf6\x84\xcb\xf0\x64\xa2\xc2\xd1\xcc\x23\x09\x24\x51\xbd\x22\x87\xf0\xc2\xae\x95\xe8\xff\xc7\x0a\x10\x90\xb1\x3e\x2a\xdb\xc5\x38\xd1\xc4\x8b\xd7\xba\x11\xf4\x95\xb5\xff\x29\x70\x20\x7e\xed\x2e\x38\x9e\xc4\x44\xd8\x6a\xd5\xce\x64\xe7\x0d\x89\xc0\x1c\xc8\xe7\x45\xc2\x63\x07\xef\x25\xc9\x02\x83\x00\xa1\x99\xc1\xf1\x88\x0d\x5c\xf1\x62\x03\x4f\x61\x3e\x32\x9e\x97\x29\x8e\x0c\xaa\x95\x44\x5f\x7d\x3e\xd5\xbf\xf5\xd0\xf2\x14\x82\x48\x7b\xe8\x97\x53\x0b\x42\x80\x85\x1a\xeb\x9f\xbe\x76\xb2\xb6\x6d\x02\x06\x4d\x25\x7a\x7f\xf2\x88\x85\xa9\x79\x78\x62\x46\xf4\xde\x72\x56\x5f\xd7\x25\x94\xcd\x13\xce\x1f\x6c\x80\x6d\xe5\xc3\x13\x07\x68\x02\xe4\xed\xfd\x26\x66\xeb\x7d\xbe\xa3\x42\x47\xb6\xf4\xf2\xf1\x62\x82\x8e\xff\x29\x39\x43\xc7\x4b\x9c\x26\xf6\x57\xf7\xd4\xc6\xff\x62\x89\x5c\xf1\x6d\x17\xe4\x93\x2c\x8d\xa5\xf4\xdb\x84\x4f\x60\x56\x9f\xdc\x4c\x4d\x04\x2d\x0c\x34\xbf\x7d\xf2\x0b\xcb\x4e\xc4\x4a\x52\x06\x96\x21\xe5\xca\xbc\x02\x3c\xae\x6e\x56\x9f\xfd\x90\xfe\xdb\xf8\x85\x61\x51\x5c\x12\x9f\x31\x0e\xfb\xe8\x35\xdd\xe8\x67\xf4\x95\x65\x41\x5f\xeb\x3b\xc6\x86\x2b\x9b\x65\xa8\xeb\x60\xe9\x3b\xf8\x29\xe8\x80\x32\x64\xd2\x32\x57\x7c\xf9\xcb\xc9\xf1\xf1\xb1\xff\xfa\x52\x4f\xe5\xff\x43\x54\x49\x92\x4c\x4d\x4b\xee\x06\x5b\x8e\xd8\x27\x07\x1c\xec\x8c\xd7\x39\x54\x12\x14\xcd\x8e\x78\x82\x8e\x72\x83\x6e\xcc\x23\x89\x7e\xa7\xc5\xda\x60\x29\xe1\x47\xad\xc7\x35\xc0\x98\x19\xa4\xc2\x17\x3a\x54\xd6\x20\x5e\x3e\x56\x21\x3a\x8a\x57\x6c\xb1\x0c\x51\xa8\x81\x16\x34\xe5\x9c\x58\x04\x15\x21\xf4\xcb\xe4\xb3\x82\x47\x0d\x00\x35\xb5\xa1\xec\xf5\x37\x65\x85\xdd\xe6\x38\x35\x86\xac\x1b\x16\xc0\xc2\x88\x58\xce\x60\xe6\xd9\x0b\xdd\x27\xfa\x72\x61\x21\x94\xad\xcc\xd2\x14\x8b\xe5\x49\x7e\xda\xaa\xc4\x99\xe3\xd2\x03\x8f\x49\xdc\x02\x80\x0b\x37\xb1\x47\xcb\x46\x31\x58\xf1\xd2\xdd\x68\xfe\xec\x46\x50\x8b\x07\x02\xf2\x4c\x25\x2a\xc2\x22\x1e\x5b\xba\xce\xb3\x4f\x8b\x12\x8b\x7f\xa7\x2a\xab\xb8\x88\x18\x99\x1b\xe3\x98\x32\x99\xd1\xf6\x0d\xf7\x71\x03\xfb\xe6\x63\xa8\xea\x46\x66\x1b\xb8\x47\x87\x57\xb7\xee\x9b\xf6\x97\x2e\xac\x43\x51\x64\xc7\x4e\x4b\x74\x16\x09\x81\x9f\xf2\xeb\x17\x62\x3b\x8c\x75\x26\xf3\xb9\xb9\xe6\xdf\x67\xfc\x9a\x26\xfa\xd6\x02\x1a\x3f\x1e\xb1\xc2\xcf\x3d\x44\x12\x9a\x52\xe6\x63\xeb\x0c\x73\xe7\x53\x23\x3d\x3f\x50\xa5\xb7\x4c\xc6\x0f\x9a\x83\x39\xb8\x8c\x40\xa5\xea\xb3\xa5\x23\x1d\xef\x98\xb2\x16\x88\x4c\xea\x71\xe5\x3a\xba\x16\x66\x75\x13\x47\x56\x20\xa5\x01\xe1\xc1\xf9\x1d\x31\xdd\x9a\x3b\x4b\x79\xb8\x70\xd0\x5e\xd0\xdc\x91\x03\x74\x0d\x38\x00\xf4\x51\x88\xf9\xf5\xf2\x6f\x8d\x80\x32\x60\x59\xba\x6b\xb2\x89\x0d\x1f\x7e\x2d\x33\xdd\xb5\x20\xee\xa6\xb2\x89\x4b\x84\x65\xa9\x3b\x50\x1b\x50\xdc\xc0\x8a\x3f\x31\x89\x12\x6c\x00\x00\x74\x43\x10\xf9\xd8\x33\x0e\xd2\x45\xd0\x97\xb9\x5e\x4c\x37\x06\x23\x3e\x21\xec\x2b\xf3\xef\xaf\x91\xbd\x1b\xbe\xe9\xd9\xfb\x5c\x48\x87\x60\x69\xf7\x1c\x6a\x0c\x91\xd8\xd8\xd0\x01\xed\x6f\x86\x45\x6c\xac\xe5\xa1\x56\x61\x32\x78\xb5\xfc\xb5\xe4\x19\x7a\xa2\x72\x3e\x62\x77\xdc\x19\x1c\x11\xe3\x1e\x2f\xb1\x07\xca\x68\xa5\x3f\x2c\x81\x09\xc0\xa8\xeb\x28\x40\x33\xe1\x9d\x72\x8d\x20\x0a\x76\xcc\x78\x4c\x76\xc3\x85\xb8\xcb\x7d\x15\xce\x7f\x2d\x88\xc9\x07\x83\x9b\xa2\x29\x9d\x96\x48\xb9\xa1\x6d\xbe\xbc\xf1\x70\x0f\xd9\x76\xa0\xa4\xdd\x13\xdb\x16\x72\xc5\xdf\x6a\xd0\x8a\xd3\x38\x83\x6c\xe0\xc2\xda\x7b\x14\xc2\x5d\x37\x21\x2a\xa6\xaa\xac\x5d\x01\x7f\xf5\x99\xb9\x47\xb0\xec\x3e\xc0\x18\xa3\x99\xe0\xd9\xc2\xa7\xcc\xbb\x74\x3f\xb3\x0d\x56\xa6\x19\xb2\x29\x3f\xb5\x3a\xd5\x05\x65\x0f\x86\xe2\x9f\x6b\x8f\x0c\xd0\x24\x89\x0b\xe8\x38\xae\xca\x18\xcc\xe1\x08\x51\x16\x25\x19\x5c\x7c\x52\xe1\xe8\xc1\x80\x65\x36\x19\x7d\xf5\x37\xe3\xf5\xc9\x94\x0d\x12\x53\x96\x24\xb6\xdb\xfc\x02\xcd\xcb\x30\x3e\x52\x8c\x30\xba\xbf\x19\xd6\xf7\xfd\x40\xab\xce\x9c\xfa\xdb\xb3\x48\x20\xf0\x3f\xdf\xd3\x8d\xe2\x2e\x4b\x68\x43\xa4\x40\xea\xde\xb8\xd4\x84\x65\xa7\x89\xf4\x23\x56\x64\xd7\x4c\x28\x03\xad\xb2\x41\xa4\x5e\x05\xb3\x66\xa5\xf5\x78\x47\xc0\x97\x1c\xac\x05\x42\x83\x9a\x91\x67\xc2\x60\x2d\x78\xb8\x01\x76\x03\xbc\xdf\x6e\x3e\xa5\x77\xd7\x4c\x67\xf5\x30\x13\x42\x36\x40\x1b\xb8\xd5\xaf\xb7\x1c\x64\xe1\xd5\x55\x63\x7c\xc2\x06\x3d\xd8\x49\xac\xb9\x25\x30\xce\x0a\x05\x82\x5b\x11\xb4\x23\x47\x23\x5e\x4b\x9f\x23\xe2\x47\xe2\xc2\x70\xbc\x2c\xe6\xfa\x9d\x81\x6f\x8b\x17\xc0\x89\xbd\x85\xb6\x86\xf0\x03\xb1\x75\xc7\xb0\x09\x2d\x7e\x8d\xd3\x1a\x16\x5d\xbf\x13\x79\xc7\xe7\xf6\xe3\x4f\xfa\xdb\x7a\x56\xf4\x09\xb2\xf8\x3c\x70\x4a\x8a\x99\x3e\xd9\xae\xd7\x06\x23\xa4\x91\x08\xb7\x1a\xd2\xfd\x62\xab\x01\x99\x1e\x5b\xd6\xed\xb1\x5d\xb9\x56\x9e\x8c\x1d\x1e\x27\xc6\xce\xa4\xe6\x60\x82\xc8\xf1\xee\x35\x47\x2b\x9a\x22\x0c\x36\x7e\x82\xc5\xcc\x28\x48\x92\x28\xf9\x75\xcd\x0e\xe7\x39\x0f\x3b\xec\xf0\x16\x35\xc5\x42\xbf\x27\x88\xdf\xab\x4e\x9a\x1f\x65\x11\xb3\xcd\xdf\xca\xbe\x3a\x9f\x15\x9a\xa8\x0c\x91\xb5\x22\x2e\x04\x20\xa1\xc6\xfa\xac\x34\x63\xa6\xec\x58\x5b\xf2\x12\xa7\x1e\x11\xc0\x55\xb8\xb3\xf9\x5d\x66\x70\x13\x02\x70\x83\xcd\x63\xd8\xb9\x88\x64\x38\x04\x5b\xd4\xa9\x69\x04\x23\xd6\x77\xaf\xf8\xac\x62\xd0\xed\x84\x11\xc0\x21\x3e\xd4\x44\x43\x83\x7e\x85\xf3\x55\xb7\x93\xfb\xff\xd9\xfb\xb6\x26\x37\x92\xe3\xdc\x77\xff\x8a\x8a\xf0\x03\xc9\x13\x18\x8c\x76\x15\x76\xc8\x8c\xf0\x03\x76\x38\xd4\x42\x1a\xce\x50\x73\x59\xca\xc7\x70\x80\x85\xee\x02\x50\x9e\x46\x15\xd8\x97\x19\x42\x96\xfe\xfb\x89\xca\xcc\xba\xf4\x15\xdd\x00\x86\x4b\xeb\xe8\xc1\xd6\x72\x00\x54\x57\xd7\x25\x2b\x2b\xf3\xcb\xef\x6b\x79\x89\xa1\xc5\x9b\x55\x1d\x4c\x73\xbf\x73\xa7\x11\x31\xde\x3b\x6a\xb4\x4e\xb5\x81\xa7\xe1\x4a\xc5\xcd\xc4\x2c\x51\x55\x49\xb6\xe9\xc1\xfb\xef\x52\x96\x31\x82\x1a\x0a\xc5\x6b\x11\x43\x9a\xec\xfc\x32\x35\x23\x8e\x77\xf2\xca\xc3\xea\xbb\x35\x3f\xca\x1a\x4b\xbe\x99\xa7\xba\x5d\x8e\xa1\xc7\x30\xd9\x26\x4a\xf1\x9d\x35\xd2\x46\xef\xd8\x97\x82\x27\x78\xb8\x29\x5a\x8e\xb6\xdb\xe0\x2a\xff\xf8\xaf\x6c\x02\xa7\x0f\xfb\x00\x76\x11\x12\xfc\xd0\x5a\xae\x99\xdc\x6c\x45\x9a\x69\xc5\x5b\x75\x49\x1e\x7f\x97\xcd\x89\xf3\x7d\xce\xa3\x48\x17\x75\x7e\xf7\x01\x6f\xd2\xd0\x5a\xf8\x52\x9c\x3d\x16\x0b\x91\x2a\x81\xda\x2b\xf0\x3d\x66\xbf\xd7\xab\xbb\x9a\x17\xf9\xfa\xc7\x79\x94\xc8\xde\x44\xf4\x50\x5d\x34\x31\x3f\xbb\xc0\x5f\x75\xbd\x40\xa9\xfd\x52\xd7\x15\xc3\xcf\x18\x7e\x36\x66\x3f\xf1\xe8\x51\xa8\x98\x6d\x93\x62\x25\x89\x4c\x00\x4e\x28\x30\x97\x41\x78\xb6\xfc\x62\xe8\x5b\x60\xfb\xe6\x18\x9a\xa9\x0d\x7f\x44\x6e\x40\x72\x22\x23\x9e\x24\x83\xc2\x0c\x6e\x3d\xd4\x58\x55\x6c\xe5\xbb\xd3\xb9\xc1\xfd\x91\xe3\xfe\x80\x80\x2a\x30\x48\x16\x8a\x71\x20\x66\x79\x95\xb1\x62\x6b\x3d\x20\x88\xf4\x25\x90\x77\xc5\x97\x04\x01\x63\x69\xee\x41\x6b\x31\x53\x80\x65\xb5\x2d\xee\x9c\x55\x09\x53\xfd\x0e\x72\xd2\xb4\xf9\x96\x48\x4b\x70\x5c\x16\xb1\x46\x40\xb9\x67\x25\xf4\xc4\xe9\xe6\x6b\xa1\x20\x00\xd1\xbf\x65\xb8\xd1\xf4\x9f\xb4\x12\x26\x97\x1c\x4d\x17\x31\x75\x43\x58\x28\x49\xd2\x07\x14\x24\x0f\xe0\x72\x36\x93\xe4\x7f\x2f\x33\x96\xf1\x5c\x66\x4b\xd9\x18\x98\x09\xc9\x20\x8e\x19\x75\x3e\x8c\x81\xa2\x81\x7d\xa2\x32\x16\x0e\xf7\x3f\x66\xef\x21\xce\x14\xf8\xde\xda\x71\x39\xb4\x99\x84\x7c\x2d\x5a\x49\x0d\x4f\x01\x98\xb1\x6f\x10\x7c\xbf\x33\x7c\xe8\x6a\x3c\xc6\x6c\xe2\xe3\xfb\xc8\x66\x81\x91\xfb\x3d\x6f\x24\x92\x4c\x1c\xb2\xf8\x7a\x85\xc2\x20\x07\x0e\x0b\x88\x81\xaf\x92\x99\xbf\x7b\xea\x5b\xd7\xcd\x67\x28\xa3\xe4\x8f\x42\x75\xc5\x3b\xfa\xf7\x10\x03\x52\x9d\x97\x6e\x17\xe9\xd2\x18\xec\x3a\xa4\x83\xfd\xb7\x9d\x27\x10\x91\xcb\x73\x33\xe4\xc6\xd1\x8f\x1e\xa9\x78\x03\xe3\x9d\x44\x41\xf2\xbc\xd6\x59\xb8\xcf\xec\xfc\xe1\x5d\x31\x2d\x84\x2d\xd2\x80\xe2\x17\x37\xc0\x88\x7a\x51\x3a\x64\x28\x81\x5e\xbb\x4d\x8a\xb1\x5c\x37\xdf\xcc\x9a\x50\x18\x06\xc8\x13\xd9\xa6\xea\xbb\xf9\x8f\xbf\xcb\x6e\x60\xc7\x9e\xa2\x16\xbe\x59\xb8\xeb\x78\x1c\xfa\x81\x11\x78\x87\xb0\xf2\xaa\x5f\x3c\x76\xec\x0d\x5b\x1d\x33\xbf\xbc\x86\x4b\x7c\xfd\xfa\xaf\x55\x91\x06\xeb\xf5\x6e\xfb\x56\xf6\x87\x20\x4d\xcf\x16\x85\x44\x95\xcd\x92\xcb\x45\xf5\x92\x70\xfb\xa5\xe3\x5f\x66\xee\x3c\x69\x5e\x63\x1f\x75\x7c\xcc\xc2\x1a\x4e\x58\x57\x5f\xd7\x3d\x50\xbc\x59\x93\x2a\x68\xc7\x48\x6c\x75\x3b\xfe\x32\x9e\xf7\xd7\xd1\x84\x84\xfb\xa2\x58\xde\x01\x2d\x7a\x1b\x27\x84\xe5\x09\x5b\x0b\x57\xe4\x65\xe6\xd9\x3c\xc6\x95\x1c\xb4\x4d\x0a\xe5\x6f\xfd\xf1\xcf\xd9\x1f\xee\x6e\xae\xcf\x36\x3c\xcd\xd6\x1c\x6a\x6e\x6d\x5b\x23\x2b\x35\x82\x17\x50\x9b\x57\x92\x8a\xcd\xd4\x19\x5b\xe9\x11\xa6\x31\xdf\xb2\x75\x9e\x6f\xb3\xb7\xe7\xe7\x2b\x99\xaf\x8b\xc5\x38\xd2\x9b\x73\x3f\x36\xe7\x7c\x2b\xcf\x17\x89\x5e\x9c\xa7\x02\x80\xac\x67\x3f\x8c\x7f\xfc\x01\xa6\xe6\xfc\xe9\x87\x73\x48\x5e\x8d\x57\xfa\x9f\xaf\x7e\xfc\xb7\xdf\xfe\xab\x69\x78\xbb\xcb\xd7\x5a\xbd\xa5\x1c\x69\x67\xdb\x67\xe8\xf8\x9e\xe3\x4f\x2a\x4f\xf9\xb7\xf1\x6f\xc2\x6e\xd0\x57\x37\x3a\x16\x49\x76\xfe\xf4\xc3\xdc\xce\xcc\x78\x3b\x24\xeb\xeb\x0d\xbe\x1b\xf2\x8a\x88\xac\xf9\xbb\x5b\x32\x36\xd6\xb7\x6f\x5a\x1a\xf6\x4a\x08\x53\x3e\x62\xc7\x3c\x8a\x5a\x22\x7c\xc0\x0d\xcc\x79\x52\x2d\x77\xfa\xa1\xec\xde\xad\xbe\xcd\xa0\xaa\x4c\x48\x3b\xcb\x08\x98\x63\x31\x06\xb1\xe5\xb2\x09\xde\x46\xf0\x8a\x63\xc6\xef\x25\x39\x90\x4f\x4d\x7e\x4c\xaf\x7b\x20\xf1\x71\x82\xbf\xb6\x60\x10\xfd\x6c\x09\x8f\x4f\x41\x13\xdc\x53\x90\xc9\xb1\x9f\xe2\xe2\x81\xbe\xd8\x7e\xb5\x74\x63\xcd\xb3\xc3\x50\x45\x13\xe4\x18\x73\x89\x01\x27\x23\x49\x0f\xb4\xb6\xd2\x96\x6d\x83\xda\x1f\xb1\xc3\x6c\x51\xa6\x3c\x1b\xb3\xf7\x15\xc5\x1a\x8f\x94\xba\x7d\x7f\xc1\x7e\xf8\xdd\xbf\xfd\x76\xa6\x5e\x37\x58\x31\x80\x6e\xe8\x74\x45\xc0\x2d\xb0\x5d\x1b\x9e\xe5\x22\x3d\x4f\x97\xd1\x39\x22\x41\xce\xcd\xef\xcf\xe8\xa1\x67\x7a\x79\xe6\x38\x50\xcf\x88\x0e\x72\xbc\x89\x87\x55\x34\x97\x96\x1e\xe2\xa6\x08\x71\x9d\x01\x3a\x1b\xb9\x4f\xf4\xd2\xb1\x5d\x23\xb0\x1e\x89\xf1\xf5\xb2\xe1\x3f\x40\xdc\xf5\x8d\x63\x5c\xe2\x99\x7d\x86\xa7\x40\x69\xdf\x9a\xa7\xa1\x43\xb6\x4b\xe4\x25\xef\x6d\xd6\x96\x84\xde\xd9\x90\x81\x6f\xde\x6c\x1e\xf7\x8e\x05\xe0\xa4\x0e\x8a\x74\xb2\x5a\x09\xbd\x04\xd8\x10\x38\x06\x36\x2d\x0a\xc1\x21\xa5\xf3\xa0\xd8\x3b\x15\x5b\x3c\x60\x42\x35\xd1\x86\xe1\x3e\x92\x52\x79\xdf\x38\xbf\x04\xa5\xf2\xb1\xe3\x4e\x06\xe5\x57\x1a\xf0\x63\xb1\x4b\xb8\x95\x86\xa4\x71\xcd\xf7\xf7\xa6\x6c\x9c\x1d\x80\x1c\x4d\x28\xe0\x89\xe4\x46\x50\xad\x20\xce\x72\x7d\x06\x2c\x19\xc0\xbd\x80\x24\xe7\x6d\x79\x5c\x48\x75\x0d\x39\x26\xcd\xf7\x7b\xf4\x13\xf3\x9f\x5f\x83\x8e\x92\x4f\x42\x72\xd9\x84\x01\x91\x4a\x89\x94\x82\xf8\x7b\x4f\xd4\x81\x89\xb0\x70\x2a\xbb\x21\x20\xde\x31\x0f\x09\xa8\x1d\x00\x98\x07\x46\x60\xcc\xa0\x0c\x63\xad\x37\xda\xb8\x33\xba\xc8\x82\x0f\xb1\x8c\x07\x0e\xe1\x56\xdf\x6b\xc3\xb7\xc8\x8a\xf5\xeb\xbd\x8d\xd9\x5a\xe6\x23\x8c\x71\x84\x5f\x1a\xc4\xe9\xbf\x28\xb3\x98\xef\xe9\xbf\xa3\x9f\xee\x5e\x37\x90\x66\xdd\x40\x4c\x19\x24\xbf\x88\x54\x56\xfe\xc5\x5c\x61\xcc\x92\x72\x25\x33\xee\xe4\x46\x54\x00\x92\xbf\x85\xfc\x92\xd6\x9b\x6f\x2d\xcf\x2c\x36\x03\xe7\xc0\xa1\x1a\xfb\x4c\x00\x57\x88\xf3\xb3\x00\xbf\xb3\x46\x84\x5f\xdb\xbe\xb4\x02\x5b\xf1\xdc\x12\x14\x0e\xeb\xea\x9d\x6b\x80\xb8\x08\xeb\xfd\xf6\xfc\x2e\x00\x07\xc5\x31\x46\x83\x60\x7d\x8b\x96\x2c\xbf\x1a\xbe\x19\x41\xd1\x61\xc8\xd8\xc1\x43\x70\x71\xd6\x46\x30\xd8\x0b\x6d\x03\x38\x2c\xe2\xd0\x75\x81\x6f\xc2\x0f\x23\x25\x96\x2f\x17\x30\xbd\xac\x5d\x1e\xdd\x0f\x9f\xbc\x9a\xe0\x6e\x2b\x46\x6c\x51\xc0\xe7\xd7\x37\xf7\x61\x7a\x58\xe2\xdb\x9e\x45\x6b\x11\x3d\x42\xe5\x20\x1e\x79\xb8\x19\xac\x92\xe4\x62\x37\x53\x5e\x6b\x28\xd7\x36\xd7\xb9\x73\xf4\xcb\x8e\x82\x5c\xa7\x2c\x96\xd9\x36\xe1\x3b\xc8\x2a\x29\x04\x06\xfb\x8c\x94\x43\xd4\x1b\x53\xb0\x2f\x7c\xd6\x7f\xa6\xcd\xac\x78\x8d\xfc\xc1\x63\xc9\xd3\x85\xcc\x53\x9e\xee\x98\x1f\xcc\xba\x3d\x60\x99\xd8\x70\x95\xcb\x68\xa6\x36\x82\xab\x10\x06\x44\x59\x35\x33\xc8\xb1\x16\x44\x50\xba\x5c\x8a\x28\xf7\x0c\x67\xe0\xbc\xbb\x91\xda\xb7\x07\x87\xbd\xbb\xdb\x79\x9d\xaf\xfe\xb3\x54\x58\x4f\x2b\x37\x00\x32\xa3\x35\x44\x47\xe3\x81\xb1\x6c\xd0\xa6\xa2\x23\xd7\x5e\x06\xe1\x5f\x76\x4d\x39\x81\x6f\x57\x71\xd4\xe4\xe3\x1f\xcd\x4f\x7e\x9c\x8a\x5b\xb3\xfe\x5d\x00\x3d\xc1\x0d\x16\xa2\x57\x1c\xd3\x88\xaa\x50\x86\xbc\xa2\x1a\x28\x88\xf6\xbc\x22\xfc\xfb\x2b\x38\xa6\xcd\xed\x31\x7d\x12\xf1\x4c\x95\x79\x5c\xc8\x67\xf4\x1b\x8e\x79\xe5\x9d\xd3\x58\x1b\x3b\xc6\xbd\x42\x9b\x97\x50\xbb\xee\x59\xeb\x5c\x95\x4f\x87\x12\x50\xb3\x74\xf4\x0b\x88\xcc\xf4\x8e\x79\x7b\x71\x1e\x52\xd6\x20\x21\xae\x52\x7a\xd9\x2d\x4a\xc7\x52\x81\x14\x56\x0e\x71\x47\xd5\x10\xb5\x92\xdf\xa6\x36\x66\xca\x96\x6f\x2e\x8b\x04\x69\x09\xdb\xb4\x89\x88\xb4\xc6\x42\xcd\x7f\xbd\x92\x03\x17\x57\x63\x81\x98\x91\xcb\x02\x07\xe8\x47\xa7\xe5\x0f\x4b\x57\xa8\x0c\x85\x05\xad\x8e\x09\x54\x60\xaf\x44\x0e\xa7\x79\x5c\x24\x58\x8d\x08\xf9\x7d\x20\xc0\xe1\x49\xc2\x64\x9e\xcd\x94\xe3\xeb\x41\xf6\x65\xb0\xb0\x16\xb9\x18\xd3\x95\x0b\x1e\x01\xcd\x92\x06\x2b\xf8\x61\x32\x92\x79\x0d\x33\xba\x0b\xb9\xff\xb7\x5b\xc1\xb1\x78\x06\xa7\x6d\xa6\xc2\x3b\x57\x75\x12\xa8\xd2\x04\xb4\x26\x4f\x51\xf4\xd1\x01\x01\x06\x81\xce\xc1\x53\x32\x66\x13\x7c\x3b\x73\xe1\xb2\xb2\x7e\xd8\x5b\x2a\xd8\x25\x68\x97\xb9\xd5\xe4\x99\x53\xb8\x77\xf7\xd6\x2d\x4f\x73\x19\x15\x09\x4f\x13\x20\xc1\x5e\x16\x09\x93\xcb\x40\xa1\x10\xe6\x00\xd9\x5a\xcc\x74\x45\x1a\xce\x6a\x9b\x12\xca\xf8\x46\x04\x85\xa2\x14\xde\x49\x82\x94\x32\x52\xd0\x62\xae\xd2\xb4\xf5\x66\xcc\xde\x55\x95\x42\x61\x4f\x04\x2c\x6f\x32\x43\xf3\xe7\xfa\x1b\xd4\x38\xa1\xe2\xa8\x5c\x9a\x2b\xe5\xab\x60\xd7\xb5\x69\x6e\xf3\xec\x71\x60\xbe\xda\x72\x85\x77\xc3\x14\x1b\x6b\x1c\xef\x41\x97\xb9\x94\xc5\x76\x1b\xa2\xa5\x83\xf6\x54\x18\xd8\xc9\x90\x21\xef\x80\x8e\x7e\x0a\x84\x8f\xab\x9d\xdd\x74\x08\x22\xc2\x3c\x0e\xec\x6a\x20\x2f\x32\xbc\xa3\xc1\xca\x09\xd1\x09\x7d\x46\x76\xc5\xf3\xa1\x50\x05\x87\xfe\x1f\xde\xd1\x46\x58\x48\x6b\x37\xf7\x47\x9a\x3e\x95\xf4\x48\x98\xe9\x95\xb9\xe5\x0b\x84\xdd\xe8\x65\x60\x82\xe9\xbc\x21\xe1\x12\xe0\x82\x76\x36\x61\x21\x58\x22\xd5\xa3\xad\xfc\x36\x0b\x74\xc4\xb8\x6f\x1d\x6c\x04\x0e\x32\xee\xb9\x16\xcf\xab\x89\x39\xfd\x08\x67\xac\x5f\xfd\x54\xf3\x0d\xd9\xf6\x64\x10\x39\xbe\x7d\xe1\xa6\xf7\xe8\x3f\x2d\x9d\x40\x4f\x77\xe7\xb1\xe8\x4e\x3c\x06\x03\xc8\x59\xa0\x6e\xdd\x3a\xbe\x1f\xd7\x65\x08\xd3\x00\x9d\x91\x87\xeb\x77\x97\xef\xa7\xd7\x65\x71\x90\x3f\x3d\x5c\x3e\x94\xff\x72\xfb\x70\x7d\x3d\xbd\xfe\x7d\xf8\xa7\xbb\x87\x8b\x8b\xcb\xcb\x77\xe5\xef\xbd\x9f\x4c\xaf\x2a\xdf\x33\x7f\x2a\x7f\x69\xf2\xd3\xcd\x6d\x45\x8e\xc4\x6a\x89\x04\x7f\xba\x9f\x7e\xb8\x7c\x37\xbf\x79\x28\x29\x9a\xbc\xfb\x8f\xeb\xc9\x87\xe9\xc5\xbc\xa1\x3f\xb7\x97\x17\x37\xbf\x5c\xde\xee\x11\x24\xf1\xef\xdb\x38\xa4\xa7\xc0\x9e\x1c\x2c\x4f\x33\x61\xcb\x54\x0a\x15\x27\x3b\x84\xc6\xda\x7b\x60\x05\x89\x17\x9e\x54\x72\x23\x74\x71\x0c\xc2\xf5\x7e\x2d\x98\x7e\x12\x29\x14\xa9\x63\x6b\x54\xd1\xc6\xb3\xc7\x56\x0a\xb3\x3c\xad\xc7\xd0\x3b\x81\xfc\x79\xba\x73\xa5\x22\x5d\xdd\xf1\x04\x27\xf4\x10\xb6\x15\x69\x57\x5f\xc0\x8f\x48\x8b\x6d\x2e\x17\xed\x98\xe5\x9e\xc4\x1f\xc3\x6f\xaa\x48\xc7\xd5\xcc\x5d\x70\xdd\x6c\x18\x4b\xd0\xdd\x63\x50\x8b\xd0\xc2\xa1\xaa\x4b\xee\xd7\x16\xe9\xb5\x2d\x16\x89\x8c\x98\x8c\xab\xd1\x07\xac\x30\xc1\x00\x6b\x95\xb5\x6f\x2b\x52\x70\xec\x8c\xbf\xbc\x4d\xc5\x19\x2f\xf2\xb5\x15\x84\x76\x85\x46\xc8\xa2\x27\xa2\x54\xe4\x81\x78\x39\xc9\xed\x04\x4f\x82\xce\x50\x81\x65\x0c\x5c\x0e\xe3\x80\x41\xb9\x25\xa2\x8e\xbf\xc4\xd6\x07\x84\x14\xf1\xfb\x9d\x43\x43\x3d\x96\x59\x55\x6b\x15\x5c\x58\xfc\xd0\x8a\xf6\x98\xf7\x36\x96\xda\x89\xd6\xe0\x24\x5b\x68\x75\xf3\x6b\xec\x5b\x63\xe1\x42\x29\x23\xa1\xa9\x75\xfa\xe8\x22\x15\x70\x88\x50\xe2\xdc\xde\xf6\x01\xe8\x41\x50\x6c\x40\x60\x9b\x8b\xcd\x42\xac\x79\xb2\xc4\x18\x9e\x99\x1a\xbf\xaf\xea\x4b\xf4\x5e\x3f\x0a\x75\x8b\x13\xf6\xab\x98\x43\x85\xf7\x04\x5f\x72\xeb\xe2\x27\x3e\xe0\x67\xfa\x68\x57\x95\x2d\x45\x41\xcd\x72\xf4\xaa\x83\x8f\x11\x0f\xee\x09\x35\x6d\x15\xcb\x72\x29\xbf\x9a\x06\x67\x4a\x34\x52\x0a\x02\xba\xc6\x92\x9f\x38\xbb\x0c\x94\x5a\xc8\x20\xf1\x28\x14\xc8\xfd\xa0\x1a\xe8\xde\x35\x3b\x2c\xda\x5c\x9f\x8b\x8e\xf0\x37\x44\xc8\x64\x49\x05\x29\xcc\x89\xd8\x71\x82\x9a\xb3\x47\x31\x66\xef\xa8\x2e\xde\xfc\xe5\xe2\x6a\x7a\x79\x7d\x3f\xbf\xb8\xbd\x7c\x77\x79\x7d\x3f\x9d\x5c\xdd\xf5\xdd\x7e\xa7\x28\x5b\xa8\xec\xbe\x6a\xe5\x88\xb3\x10\xe7\xb4\xf3\x7c\xf5\x9c\x7b\x29\xbf\xed\x60\x4a\xf6\xf7\x5e\xc6\xdb\x79\x2c\xb3\xc8\x1c\x7f\xbb\xb9\x50\x31\x70\xb1\x1e\xb4\x54\x9b\x9b\xaa\xbe\x85\xfb\x06\x73\xdf\xb0\x16\x04\x4f\xbb\x27\xbb\xa2\xdd\xe7\x40\xd6\x06\x41\xbb\x54\x98\xcd\x1f\xcf\x54\x70\xda\x8c\xf7\x13\xf0\x9b\xe6\x8e\x7b\xb7\x72\x13\xd5\x77\xc2\xfe\xca\x2c\x2b\xb8\xb1\x8f\xf6\x6b\x40\xc7\xd0\x32\x2a\x44\x90\x15\x12\xc2\xca\x40\xcc\x90\x99\x9b\xfc\x86\xab\x98\xe7\x3a\xdd\xb5\xbc\x62\x3f\xe3\x19\x6e\x9b\xb2\x09\x0d\x8f\x6c\x25\x44\x6c\x67\x01\xbf\xca\x55\x75\x29\x21\x6d\xec\xfd\xcd\x1f\x2f\xaf\xef\xe6\x97\xd7\xbf\xcc\x3f\xde\x5e\xbe\x9f\xfe\xd9\x71\xdf\x6c\x79\xd6\x24\x5e\xb6\x4d\x85\xb1\x2e\xb6\x0a\xbf\xd1\xbe\xa0\xa2\x98\x6d\x87\x54\x64\xe4\x72\xa6\xac\x65\x49\x7d\xf3\xeb\x54\x17\xab\x75\x73\x43\xd5\x5e\x7e\x9c\xdc\xff\x7c\x50\x37\x81\x23\x05\x65\x87\x70\xb7\xd5\x89\x04\xe5\x92\xec\x1e\xb2\x0f\x56\xba\x07\x4c\x3f\xf0\xd5\xa6\x98\x7c\x8b\x45\x3b\xe8\xf6\x52\x37\x5a\x9d\xce\x7f\xc3\xd7\xdb\x16\xd0\x7d\x60\x37\x4b\xc7\x08\x40\x58\x51\xbd\xae\xd6\xda\xdb\x86\xbf\x95\x4e\xb0\x1f\xcf\x12\xb1\x5a\x89\x18\x97\x57\xb5\x61\x8a\x58\x91\x09\x8c\xfc\xb9\xde\x34\x8a\xa4\x2f\x75\xc4\xc1\xec\xd0\x51\xfd\x0d\xf8\x47\xf7\x93\x66\x5b\x71\x61\x35\x6c\x23\xad\xb2\x9c\xab\x96\xb4\xeb\x53\x1d\xcf\xd8\xcb\x14\xdd\xa4\xcc\x55\x4e\x50\x80\xc4\x06\xd8\xfd\x3e\x38\x24\xe1\x44\x3a\x5a\x8a\x22\x1e\x81\xbe\x56\x20\xba\xdb\x30\x09\x10\x69\xbc\xb5\x16\xf1\xe5\x83\x1b\x9d\x57\x27\x22\x86\x81\xc0\x28\x0a\x99\x10\x67\x29\x46\x83\x40\x1d\xa8\x15\x46\x3b\x68\x42\x2a\x4f\xfe\x85\x86\x1e\x6f\xad\xe5\xc0\x2c\xb7\xd4\x4b\x6e\x82\x9c\xf3\x36\x3c\xbe\x55\xf2\xc3\x7d\xcb\xdb\x54\xc7\x45\x64\xc9\x29\xa0\x59\x8f\x07\xa1\x80\x96\x3d\x60\x63\x76\x66\xa6\x99\x2e\x29\x22\x3e\x03\x8a\x8f\x99\x6a\x4b\xbe\x58\x1b\xd0\x12\xe6\xfa\x68\x4f\xad\x63\xe6\xbe\x61\xf4\xdb\xb7\xa0\x1d\xec\x7e\x05\x68\xcc\x7e\x1d\x9c\xbd\x16\x38\x0d\xcd\xcb\x82\x63\x66\xb5\x7c\x1c\xb7\xd5\xa2\x3b\xab\x3a\x0c\xf5\xd3\x0f\x34\x51\xe6\x76\xc2\x23\x72\xcd\x33\xf4\x5c\xf3\x68\x5d\xee\x38\xbc\x4d\x99\xbf\xa9\xda\x5d\xe7\x09\x1e\x17\x21\xe8\x95\x5f\x19\xe1\x9d\x5a\x66\xd4\xfb\x50\x8b\xc7\x09\x8b\x0d\x5b\xf8\xa1\x73\xe4\x2e\x2f\x68\xf7\xc0\x60\x25\xbc\x50\xd1\x9a\x6d\x13\x8e\x45\x97\x6b\x9e\xe1\x92\xb6\x20\x03\xbe\x90\x89\xcc\x81\x2f\x02\x73\x5f\x95\x11\x36\x37\x1a\x9e\x3e\x5a\x8a\x46\xee\xc9\x41\xba\x16\xfd\x91\x60\x4e\xaf\x5f\xfd\x2d\xe1\x9c\x7e\xcb\x06\xbf\xe8\xcc\x9c\xf9\x65\x49\x50\x4e\x3f\x1d\xc6\xe2\xc1\xb2\xf4\xef\x32\x6c\x66\xa9\xc5\x8f\xd5\x9f\x97\xc6\xbb\xe1\xa0\x1e\x0e\x65\x20\xee\xe1\x01\x66\xbe\xca\x4c\xdc\xb8\xb3\x96\x89\xe6\x2d\xea\x98\xb6\x6d\x24\x1a\x6e\x6b\x3b\xd6\xc5\xa2\x8d\xda\x12\x7b\xd5\xdd\x7a\x57\xdc\xdf\xee\xdb\x53\xc5\x05\x43\x03\xc8\x73\x91\xcb\x61\xa1\x8d\xe0\xa5\x79\x2e\xce\xe0\xe7\xcd\x8d\x13\xed\x4f\xef\x77\xae\x2d\x34\x4f\x77\xef\x08\x34\x01\x64\x56\x5f\x5d\x7f\x2a\xb8\x31\x0d\x37\xcb\x3b\x24\x30\x38\x66\x91\xe5\xb2\xbe\xc2\x9a\x77\x62\xf5\xa9\xf7\xe5\xa4\x4a\xb8\x06\x7a\x17\xaf\x35\xbd\xcd\x9d\xf9\x75\xff\x0d\x59\x96\x90\xde\xa6\x52\x03\xcd\x00\x09\x57\x77\x70\x80\x35\x3e\xf7\x88\x91\xfc\x52\x88\x42\x98\xb5\xbf\x28\xe2\x55\x3d\xb6\x39\xc0\x3b\xf3\xaf\xb4\xd6\xcf\x6c\x53\x44\x6b\x66\x1b\x67\xb1\x48\xf8\xae\xf4\x6a\xe0\x2f\xe5\x3a\x01\x56\xcd\x03\x29\xfe\xa2\x22\xcb\xf5\x06\x40\x98\xbe\xdd\xb4\x50\xb0\xe0\x19\xcf\xf3\x54\x2e\x8a\xbc\x11\xb0\x55\xa2\xfc\x39\x30\xa1\x75\xf7\xf1\xf2\x62\xfa\x7e\x5a\xc9\x26\x4d\xee\xfe\x18\xfe\xfb\xd3\xcd\xed\x1f\xdf\x5f\xdd\x7c\x0a\xff\x76\x35\x79\xb8\xbe\xf8\x79\xfe\xf1\x6a\x72\x5d\xca\x39\x4d\xee\x27\x77\x97\xf7\x7b\xd2\x4a\xf5\xa7\xb6\x4f\x04\x0f\x18\x89\x2c\x2c\xd4\x52\xb3\xda\xdb\x25\x3d\xf5\x2d\x9b\x58\x7e\xa6\x12\x83\x98\x4d\x0d\x42\xe6\x1d\x85\x4a\x29\x83\xf8\x8e\xe7\x9c\x84\x9f\xc7\x6c\xc2\xac\x80\x37\x80\xa1\x33\xe3\x2c\x10\x79\x8d\x99\x1d\x6c\xc2\x78\x0c\x91\xbf\xb9\x79\xed\x29\xbd\x24\xda\xa8\x44\x84\x2c\xc5\xb6\xf2\x67\xa6\x2e\x9f\x84\xca\x0b\xa0\x50\xe5\x49\x62\x85\xd6\xed\x17\x82\x22\x4f\xdb\xcb\x4c\x6e\x64\xc2\x53\x2f\x13\x74\x43\x6d\x81\xc3\x6e\xfb\xea\x38\x3d\xea\xda\x11\xf6\xf2\xf0\x30\x65\xd0\xef\x8b\xab\x29\xb8\x40\x51\x6e\x39\xf0\xed\xc3\x67\x0a\x69\x89\xe8\x89\x1b\x0e\x00\xfd\x5c\x53\x3c\x0d\x1f\x4f\x5f\x6e\x5f\x88\xd9\x31\x9b\xd8\x46\x9e\x5f\x0a\x04\xe4\x3a\x69\xff\xe3\x52\xe5\xe9\xae\xb7\x5f\x73\x0f\x24\xaa\x19\xf8\xa6\x84\xf7\x29\x4b\x07\x61\xb8\x83\xd9\xd6\xaf\xc1\xd9\xb1\x60\x34\x8a\xc6\xbb\xa0\xbb\x00\xa2\xd6\x16\xff\x3b\x31\x87\xd0\xf7\x3a\x0e\x21\x87\x02\x8c\xc2\x42\x17\x2a\xce\x08\x99\xb4\x91\xea\x7c\xc3\xbf\xbe\xb1\x6f\x8a\x35\xc9\x8e\xc0\x1b\xf8\x66\x44\x62\x6e\x22\x3b\x63\xe4\xba\x87\x6b\xa6\x3a\xc6\x6b\xbf\xb7\x68\x2d\x2b\x5c\x7b\xfc\x1d\x15\x31\x56\x4f\x62\xd7\x34\x7f\x35\x11\x06\xc4\x71\xd1\x86\x87\x46\xb6\xa9\x30\x5f\x74\x00\xae\x04\x71\x79\xee\xdf\x00\xd4\x2e\x09\x45\x35\xdb\xee\x30\xcb\x7b\xd4\xb6\x69\xcc\x2f\xbf\x80\x8a\x06\x3d\xc9\xcc\x19\x66\x9b\x6d\xa0\x93\x80\xe9\x94\x46\x33\x93\xf5\xdf\x7a\xc1\x96\x50\xa5\x41\x42\xb0\xa9\x80\xc0\x36\x4c\x85\xa5\x7d\x05\x56\x92\x5a\x0a\xdb\x2e\x81\x44\x64\x10\xee\x55\xe6\xba\x25\xbe\x14\x94\xb1\xfb\xe1\x37\xc3\xce\xd9\x3c\xdd\x31\x4b\x31\x1e\x56\x89\x50\x91\x14\x9d\xb9\xd0\xaf\x42\xc9\x26\xaa\xa2\xdb\x42\x99\xa3\xf8\x14\x60\x87\xfe\xd9\xac\xca\x43\xe9\x9f\x7b\x0b\x29\x6c\x20\x36\xc5\xef\xbf\x18\xb7\xdb\x2f\x15\x4a\x37\x7a\x1c\xc0\x76\xa9\xf5\xf0\x40\x5b\xf0\xe8\xf1\x99\xa7\x31\xc6\x0a\x01\x7d\x30\x66\x3f\xeb\x67\xf1\x24\xd2\x11\x8b\x44\x9a\x73\x62\x7b\xc9\x20\xfd\x0a\x1b\x8a\xda\x99\x29\x40\xb1\x23\x75\x8e\x02\x0d\xdd\x5c\xae\xd6\xe6\x3e\x19\x24\xcf\x75\x6a\xcc\x51\x8e\x54\x5a\x5b\x11\x11\xbf\x46\xcb\x00\x2c\x13\xfe\x54\xa7\xaf\x39\xa4\x12\x9e\x4d\x5d\x29\x9e\xcd\x4e\x59\x2a\xed\x2e\xb8\x03\x0d\x18\x19\x4d\x24\x44\x18\xb1\x95\x4e\xb8\x5a\x8d\xc7\x63\x26\xf2\x68\xfc\x66\xd0\x42\xa7\x06\xc3\x7c\x97\x83\xa0\x26\x5a\x67\x22\xd9\x39\x4e\x08\x57\x24\x60\x86\x19\x6a\x44\x32\x89\x21\x8f\x86\xe5\x7f\x57\xad\xa8\xff\xb6\xa1\xf3\xe6\x9b\xea\xe0\x12\xb4\x96\x76\x40\x99\x63\x40\x4b\xf8\xfd\xe6\x9b\xd7\x80\x92\x4a\x2b\xa3\xe5\x4b\x2b\x5b\xe8\x1f\xb5\x1a\x5a\x2f\xf8\x8b\x6e\xd3\x9b\x3d\x88\xb2\xa9\xb1\x25\x22\x74\x38\xa8\xc6\xaa\x2d\x72\x51\x29\x7b\x3b\xa2\xe2\xad\xa3\x78\x6d\x60\xdd\x5a\xc3\xfe\x6b\xd8\x1e\xae\x32\xf6\x18\x7c\x92\x4e\x8a\x4d\x3b\x57\xd1\xb1\x2e\x9f\xef\x24\xfe\xd7\x05\x3c\xae\xb7\xcb\xe7\x35\x80\xad\xca\x00\xf5\x17\x03\xb7\x54\x3b\x68\x6c\x7b\x2a\x33\x60\xd5\x3a\xa4\x90\xc9\x35\x83\x4d\x43\x7e\x69\xb7\xc5\x80\x21\x96\x38\x25\x3b\x2c\x95\xb3\xf9\x08\xfa\x49\x86\x7e\x19\x24\xa5\xda\xcd\x58\x15\xf5\x34\x78\x8e\x80\xc3\xfe\xa0\x4c\x1c\x38\x3a\x01\x9b\x2c\xc1\x32\xa0\x41\xca\x1d\xe7\x9a\x2d\x6d\x69\xcc\xa3\x08\x54\xf7\x62\xe0\x99\x7d\x46\xe6\x8a\x3f\xfe\x2e\xb3\x59\x66\x02\x02\xf8\x33\x36\xf7\x0f\xc1\x68\xf6\xd3\x0f\x16\xff\x81\x6f\x88\x4d\x80\x90\x4d\xcc\x55\xde\xd8\x80\x87\x47\x41\x5b\xf8\x93\x5f\xcc\xbd\xbd\xf1\xeb\xd4\x3e\x7c\x15\x35\x2b\x26\x9f\xee\x18\x0e\x35\x31\x92\xa6\x5d\x1d\x0d\x1a\xd9\x8f\x40\x81\xe1\x9a\x1f\xe0\xbb\x94\xe6\x01\x07\xdd\x52\xd2\x9a\x61\x17\x79\xb4\xf6\x67\x65\x59\x7c\x92\x04\x89\xe8\x3d\x37\x9e\x63\x15\xc1\x7d\x21\x4a\x4a\xae\x94\x0e\xe9\xc1\xb5\x12\x90\x56\xe0\x39\x8b\x75\xd8\x2c\x93\xf9\x7e\x28\xca\x40\x1e\xa0\x7d\x4b\x2d\xd7\x08\x31\xa0\xf7\x2c\x65\x87\xc0\x09\x96\xc8\x1e\x62\x71\x7c\xe8\xc5\x93\xbe\x4d\x95\x19\xb4\x5c\x8f\x3d\x53\xe5\x47\xd5\x06\xc9\x62\x45\x64\x2a\x90\xd0\x2f\x33\xfe\x46\x2e\x9f\xcc\x46\xad\x2f\x6b\xb7\x40\xc1\x02\xd4\xd7\xde\x4c\x61\xb7\x03\x56\xc0\x47\xb1\xcb\x42\x31\x1d\x5a\x51\xac\x6d\x41\x4a\xf3\x3e\x34\x5f\xfb\xa7\x02\x06\x6e\x1e\x88\x03\xf7\x3b\x45\xf0\xa1\x1f\xcc\x8f\x3b\x40\x68\xb5\xc6\xcd\x1a\xf4\xb5\x47\x3e\x0a\x46\x66\xc2\x8f\x33\xcd\xa1\xc7\x99\x34\x08\x47\xfb\x80\x22\x5c\xd5\xcc\x8d\x6c\xa6\x88\x38\x34\xc8\xdf\x1a\x83\x53\x9f\x36\x2a\x88\x44\xba\xc2\x5d\x89\xcc\x01\x48\x5d\xad\xc2\x69\xb3\x5e\xb7\xd5\x62\x33\x77\x78\x50\xbc\x06\xc9\x6a\x8a\x3a\x35\x3e\xf0\x40\xf0\x12\x4d\x6e\x2b\x60\xc9\x3b\xdd\x34\x70\xc4\xe7\x85\xaa\x4c\xe8\xaf\x47\xc2\x0c\xdf\x44\x35\x62\x85\x2c\x52\xe8\xee\xf2\xe2\xf6\xf2\xfe\x9b\x01\x9a\x2c\x9a\x68\x30\xa2\xc9\xf6\xf3\xdd\xe5\xfb\xc9\xc3\xd5\xfd\xfc\xdd\xf4\xf6\x25\x20\x4d\xf4\xd1\x01\x98\xa6\x3b\xe2\x23\xbe\xd0\x2a\x17\x5f\x8f\x3a\x93\xd3\x42\xcd\xf9\x00\x6c\xbd\xe3\xfc\xee\x72\x77\xb0\xd1\x3a\x9f\xb2\x23\x3b\x26\x36\x39\x3c\xd1\x1c\x7d\x72\x20\xc0\xbe\x94\x49\x02\x85\x79\x2e\x20\x4c\x65\x2c\x66\x50\xc1\xfe\x58\x25\x59\xb2\xa9\x33\xb5\x28\x11\x4a\x43\x90\x6a\x6d\xae\x6d\x58\x92\xb7\x35\x03\x90\x4a\x28\x78\xea\xa2\x5c\x5e\x49\x25\x7c\x37\x50\x41\xb1\x50\xac\x95\x27\x93\x26\xf1\x25\xeb\x2e\xc9\xf1\xea\xeb\x6b\xda\x15\x57\x5a\x9f\xd6\xfd\xb4\x1f\xba\x37\xc4\x4d\x2c\x15\x3a\xa6\xa5\xdd\x7c\xd7\xbc\x74\xcf\xfd\x16\x80\x71\x37\x33\xc9\x21\x6a\x0e\x22\x85\x7e\x22\x69\x22\x50\xec\xc0\x87\xd3\x1f\x25\xe2\x3e\xf4\xb2\x32\xce\xc6\x14\x9a\xb1\x96\x10\x5b\xe7\xc4\x35\x10\x25\x45\x96\x8b\x94\x2e\xfa\x93\x4f\x77\x33\x85\x4a\xd6\x74\x0a\x11\x21\x3e\x3e\x02\x51\x07\xba\xf4\x7c\xeb\xa1\x84\x16\xec\x35\x46\x55\x37\x82\xab\x0c\x05\x64\x93\x44\xa4\x7e\x65\x60\x7f\x84\x88\x49\x44\x08\x54\x86\xfd\xef\x49\x43\x54\xc3\xae\x35\xfd\xa5\x4f\x49\x45\xb3\xba\x9e\xda\xea\x3e\x01\xd2\xf8\x92\x2b\xa7\x01\x59\xdf\x77\x15\x11\x1a\xb4\x71\x11\x95\x71\xee\xbd\xd6\xd2\x3d\x36\xf7\x8f\xa5\x74\xc2\xa5\xd4\xe3\x5c\x0f\x4f\x09\xb6\xd6\xc6\x80\x3a\x2e\x7b\x9f\x18\x75\x75\xe7\x09\x20\x76\xcc\x30\x36\x9e\x3a\x15\xc5\xa4\xa3\x58\xbe\x4c\x53\xc7\x01\x10\x27\x0d\x04\x17\x5e\x9a\xc3\x66\x23\x3a\xc5\x98\x5e\x86\x48\x6a\x62\x11\x62\x4a\xe7\xb6\x24\xdc\x81\xb2\x08\x61\x66\xbe\xe0\xb8\x08\x3a\xfb\x48\xf5\xfd\xd6\x4b\x99\x1f\x29\x68\x72\x1f\x22\xd9\x4a\x65\x7f\xd8\x8b\x50\x13\x91\x30\xaf\xbe\x24\x7f\xc8\xe2\x3b\x5c\x32\xab\xbc\xe6\x1c\xbd\xdb\x41\xe9\xf9\xeb\x9b\xeb\xcb\x30\xb9\x3e\xbd\xbe\xbf\xfc\xfd\xe5\x6d\xa9\x60\xf4\xea\x66\x52\x2a\xfa\xbc\xbb\xbf\xad\xd4\x7a\xfe\x74\x73\x73\x75\x59\xcb\xd2\x5f\xde\x4f\x3f\x94\x1a\x7f\xf7\x70\x3b\xb9\x9f\xde\x94\xbe\xf7\xd3\xf4\x7a\x72\xfb\x1f\xe1\x5f\x2e\x6f\x6f\x6f\x6e\x2b\xcf\x7b\xb8\xe8\xce\xf7\x97\x5e\xa3\x39\xfc\xe3\xd3\x89\x01\xd3\x5d\xe3\x36\x2e\x4b\x8a\x1d\xb1\x8b\x7b\xc2\x86\xf6\x2d\x47\x5b\x0f\x6a\x9b\x0b\x36\x86\xe9\xea\xa0\x55\x77\x7a\x0d\xb4\xd2\xd0\x7d\x39\x8e\x5a\x37\xe7\x79\xe3\xfd\xb7\x77\x60\x82\x34\x87\xbf\x14\x22\xdd\x11\x33\x09\x5e\x1a\xf1\x2f\x11\x57\x88\xb7\xcc\xc5\x66\x0b\xf5\x3b\x21\x50\x70\xa6\x3e\x41\x8e\x05\xb1\x08\xaf\x32\xf6\x7b\xc8\x96\xd8\x2f\x7b\x6d\x6e\x18\x94\x3f\xe1\x33\xdc\x67\xe3\x99\x2a\x69\x1a\x07\xbf\x8a\x75\x54\xb8\x68\xc6\x78\xa6\x2c\xfb\x6b\xac\xa3\x6c\x0c\x47\xef\x58\xa7\xab\x73\x12\x6a\x32\xc6\x54\x3f\x2e\xb4\x7e\x3c\x17\xea\x1c\x2e\x07\xf9\x39\x2f\x72\x7d\x0e\x99\x56\x1c\xfc\xec\xdc\xea\xb9\x58\x41\x9c\xec\x7c\x2d\x9f\x04\xfc\xbf\xf1\x3a\xdf\x24\xff\x9c\x6d\xd7\x5f\xcf\x56\x49\x7a\x66\x7e\x7b\x16\xfe\xf6\xcc\xfe\xf6\xcc\xfe\xf6\xcc\xfc\x0c\xff\xdf\x76\x87\x71\x36\x41\x82\xf2\x33\x25\x55\x26\xd2\x1c\x96\xe1\x73\x2a\x73\xe1\xc5\xc2\xd9\xab\xff\xf9\x1f\x36\x4e\xf9\x33\x22\xef\xdf\xf1\x9c\x7f\xc4\x8b\xde\xdf\xfe\xf6\x8a\x65\xb9\x26\x75\xaa\x2d\x4f\xbf\x14\x22\x37\x57\xce\x44\x44\x39\xfb\x3f\x33\x05\x4a\x8e\x9b\xdd\x3c\xc7\x0b\x30\x5e\x06\xe3\x8c\xfd\x3b\xb6\x39\x45\x96\x9e\x38\x33\x2d\xb5\x80\xf2\x24\x4f\x1a\x24\xc0\x5a\x62\x25\x5f\x92\x77\xf4\xfd\x01\xbb\xe5\x4b\x52\xde\x22\x96\x67\x3a\xfb\x92\x00\x15\x54\xa2\xb9\xcd\xf3\x32\xb7\x78\xc1\x61\xa1\xce\x35\xed\x91\x5a\x36\xe1\x88\x1d\x73\xa8\x1c\xe8\x1d\x32\x05\xda\x10\x4a\x4d\xe0\x0a\x82\x36\x3e\x20\x04\x04\x51\xd2\xec\x90\x3b\xbc\x92\xa2\xdc\x3a\xbc\x39\x18\x87\x5c\xa7\x7c\xe5\xe5\xf1\xc9\x83\xcc\x7e\xfb\xf6\xfc\x7c\xc4\x56\x19\xfc\xcf\xe2\x0b\xfc\x0f\x24\x1e\x4f\x45\x76\x55\x1b\x4c\x97\x43\xaf\xcf\xf2\xfe\x99\x38\x45\x02\xfe\x5b\xf0\x2b\x56\x96\xe9\x4f\x85\x8a\x13\xe1\x0b\x09\x4a\xb1\xa9\x44\x5b\x09\x42\xbc\xa1\x54\x99\xac\x61\x8e\x17\x22\xe2\xc6\xf0\xd5\x9e\x8d\xb8\x14\xbd\xcc\x85\xc2\x6b\x49\xea\x79\xff\x39\x5e\x21\x20\x29\x0c\x28\x0a\x90\x92\xdf\x6c\x41\x57\x5e\x42\xbc\xfe\x1e\x09\x0b\x47\xd5\x8f\x40\x19\x1a\xb9\xf7\x80\x51\x0a\x05\xac\x85\x0d\x9c\x61\x01\x66\x91\x9a\x9b\xc9\x96\xab\x98\x67\xb0\x02\x97\x29\x84\x9d\x53\xc6\xeb\x1d\x1d\x21\x92\x47\x17\x39\x54\xbf\x63\x8a\x27\x1c\x09\x24\x47\x0c\xfa\x3c\x0a\x3a\x81\x67\x02\x6a\xe1\x57\x7f\x38\x9e\x29\xa7\xaa\x8e\x69\x74\xbc\xb2\x44\x7a\xbb\xa3\xda\xe6\xea\xa0\x4b\x7b\x85\xa1\xe1\x1e\x79\xdd\xda\xea\x77\x47\x4c\x96\x63\x9c\xc0\xc3\x18\x6a\x6b\x59\xfd\xaf\xd7\xa0\x73\x2f\xd2\xec\x8d\xd9\x86\xc0\x4e\x9c\x7b\x96\x43\x99\xf9\xc9\x70\x22\xec\x74\x6d\x33\xcd\x3b\xc2\x72\x33\x3a\x25\xe6\xbe\x26\xf7\x61\xff\x56\xf9\xde\xd3\x91\x4d\xfd\xa5\xff\xfc\xa6\xa9\xc9\x10\x12\x62\x21\x51\x87\xfb\x82\xb8\x65\x43\x8b\x8b\x8d\x92\x66\x3b\x3a\x27\x56\xc8\x48\x9a\x23\x2b\x37\x17\xf6\x7c\xa6\xe8\x04\x1e\xb1\xa5\xe0\xf9\x1a\x30\x31\xd9\x13\x1a\x63\x3c\xee\xf3\x67\xed\x93\xa1\x96\xf6\x19\x70\x34\xa5\xc6\xfd\x6d\x1d\xbf\x06\xa9\x1d\x1e\xe5\x98\xe9\x69\x23\xc4\x75\xae\x0a\x0c\x56\xa3\x41\x3c\x60\x1c\x2c\x8b\x70\x95\xb1\x3f\x24\xb1\x86\x91\xd8\x61\xc4\x9e\x55\xfb\x81\x1f\x18\xc3\x83\x6f\x87\xf9\xb8\xc0\x38\x42\x21\x22\xc1\x70\x70\x9f\xf9\x60\x7a\x48\xe5\x08\x4e\x72\xdb\xa6\xea\x18\x08\xe8\xc0\x61\x15\x0b\xe6\xa7\x7b\x6f\x0e\x99\x48\x2d\xc5\x31\xbe\x2b\x52\xc9\xac\x65\x1a\x9f\x6d\x79\x9a\xef\xec\xf2\x4d\xe4\x02\x98\x51\x13\xf9\x28\xd8\x24\x4d\xf5\xf3\xa9\x47\xa1\xd5\xb4\xdc\xf3\xec\xf1\xc4\xcc\x54\x40\x18\x37\x84\x59\xaa\x91\x48\xaa\x84\x92\x89\xc5\xfc\x30\xd2\xaa\x36\xe2\xad\xc6\xe7\xa4\x22\x4f\x77\x73\xb3\x10\x37\xdb\x56\x4b\xd1\x0b\x6f\xd9\xdf\xc9\x1d\xc6\x87\x05\xe7\x73\x0f\x3e\xac\xd2\xac\x7e\x3f\x7c\x58\x0d\x54\x57\x75\x3e\xac\xe9\xf5\xf4\x7e\x3a\xb9\x9a\xfe\xdf\x4a\x8b\x9f\x26\xd3\xfb\xe9\xf5\xef\xe7\xef\x6f\x6e\xe7\xb7\x97\x77\x37\x0f\xb7\x17\x97\xdd\x05\xee\xf5\xde\x7b\x17\xfc\x8c\x85\xcf\x79\xcb\xee\x83\x8c\x19\xe2\x14\xc9\xff\x26\x69\x20\x58\x55\x66\x33\x4b\xb5\x1a\xc1\x46\x7d\xcb\x2e\xd3\x74\xba\xe1\x2b\xf1\xb1\x48\x12\xc8\x6b\x23\x28\xf8\x22\x15\x70\xf1\x1c\xb1\x8f\x3a\x9e\x06\xbf\x83\x4a\x86\xc6\xd7\x80\xe7\xf3\x38\x4e\x45\x96\xe1\xe3\x47\xf4\xfc\x20\x8b\xeb\xaa\x24\x08\xc5\xc0\x9f\xb8\x4c\xcc\xfd\xed\x2d\xa8\x95\xea\xe5\x12\x91\xb7\x23\x87\xb9\x66\x5f\x0a\x9d\x73\x26\xbe\x46\x40\xea\xd0\xbc\x4e\xae\xf4\xea\x65\xef\x40\xcd\x7b\x7a\x7f\x9c\xb0\xe5\x92\x02\x12\x10\xf3\xe6\xe3\xbc\xd9\x10\xd0\x5b\x7e\xc0\x9f\xbe\xc7\x5f\x36\xb6\x9e\xe7\x35\x89\xfe\x03\x8a\xcc\xae\xf4\xaa\x99\x90\x1b\xbc\x6b\x62\x11\xf7\xb2\xdc\x50\xb2\xaa\x57\x2c\x93\xea\x71\xa6\x3e\xad\x85\x62\xba\x48\xf1\x4f\x70\xcd\x37\x6e\x66\x52\x64\x6b\x11\x33\x5d\xe4\x23\xf6\x2c\xd8\x86\xef\xd0\x6d\x86\x3b\x81\x63\x11\x86\x25\x03\xa7\x88\xf9\x75\x22\x95\xb1\x16\x5b\x69\x21\x8d\xd5\xa9\x3f\xc5\x8d\xcb\x52\x9a\xf0\xe3\x19\xc7\xba\xce\xd3\x12\x50\x02\x4a\x56\x3c\x80\xc5\x66\x6a\xc9\x72\x83\x48\x91\xd6\x8f\xc5\xd6\x93\x1f\xbd\xb2\x51\x62\x18\xee\x27\x2d\x63\x16\x17\xdb\x44\x46\xce\xee\x3e\xeb\xb4\x95\xe1\x0d\xb1\xb7\xfd\x4f\x9d\x2a\xa2\xbc\xeb\xc5\x1a\x80\xbd\x01\xa4\xa1\x83\xeb\xed\x85\xd9\xee\x98\x54\x51\x52\x80\xfc\x42\x91\x89\xf4\x2c\x4f\xe5\x6a\x05\x0e\xb8\x2d\x13\xf8\xfe\xe9\xf0\x3c\xdd\xce\xf1\x88\xf8\xb0\x5e\x2d\xd1\x2b\x19\xf1\x24\x44\x99\xf9\xf4\x94\xe3\xdb\xb2\xdb\x9e\xc4\xa9\x4c\xbf\x5d\x87\x5a\x79\x04\xb6\xa9\x00\xca\xb7\x39\x98\xf2\x39\x99\xbb\x63\xfa\xbd\x64\xe6\x82\x6e\x85\xab\x7d\x41\xa7\xd5\xfe\xb7\x27\x9c\x7f\xb6\x55\x28\x40\x89\x52\x05\xb9\x18\xfd\xac\x44\x0a\x1e\x2c\xe4\xdf\xcc\x9b\x2a\x0d\xbe\x89\x53\x2d\x70\x40\x31\xab\xda\xb1\x74\x88\x38\x2c\xba\x59\xc9\x27\xa1\xbe\x3d\x7d\x61\xf0\x80\x88\x47\x6b\x31\xb7\x7e\xf9\xa9\x4d\x96\x3b\x00\x06\x1a\x2b\x4b\x1f\x1c\x9a\x52\x26\x81\x32\x26\xc2\xab\x13\xf6\xb8\x6e\xbb\x90\x12\xbf\xd7\xa1\x04\xc4\xca\xe5\xf8\x5c\xf5\x38\x38\x56\x1f\xc0\x61\x5a\x0f\xf5\xfe\xbb\x03\x01\xab\x44\x2f\xa0\xb8\xb2\x3d\xb1\xda\xb1\xb6\xcc\xc0\xa6\x32\x1e\x62\x99\xec\x98\xdc\xb8\x9f\x76\x75\xd0\xc9\xbf\xba\x27\x81\x51\x90\x18\xab\xab\x78\xee\xd5\xe2\x9d\x7d\xd7\x04\xc8\x6d\x64\x2e\xb9\xe1\x1c\x09\x4b\xad\x09\x81\x09\xdd\xa1\x27\x5c\x7f\x97\xa3\x26\xba\x5e\x0e\xba\x67\x2c\x7d\x05\x69\xf7\x24\x1f\x51\xd3\x87\x05\x88\xae\xb0\x6f\x08\x3f\x9a\x9d\x3a\xc4\x89\x80\x56\xb3\x9b\xc4\x12\x80\xaf\xd7\x8c\x56\xc7\xfd\x9e\xd2\x5d\x47\x11\x56\xbc\xc0\x8e\x2a\x72\xed\xa3\x95\xf0\x3e\x53\x60\x0d\x0a\xa1\xc1\x60\x36\xa6\x71\x2d\x45\xe1\xf4\x39\x60\x18\xec\xd6\x1c\x00\x64\x18\x04\xa5\xd8\xa6\xc2\xc6\xbd\x77\x22\x77\x25\x4d\x89\xe5\x8b\x87\xb0\xae\x7b\xeb\x72\x4d\xa7\x2d\xdb\x72\x75\xf8\x10\x84\xd5\x56\x5d\x7f\xb3\xd5\x4a\x28\x02\xf3\x28\x3d\x53\xd4\xb8\x55\xfd\x72\x91\xe1\x12\x66\x7a\x44\x17\x72\x44\xe0\x89\x4c\x27\x4f\x94\x02\x08\xe8\x36\x41\x2f\xc0\x74\xf0\xc2\xf8\x36\xc6\x93\x87\xdc\x14\x01\x68\x01\x52\x54\x91\xbe\x4a\xc5\x4a\x66\xb9\x08\x61\xe6\xe1\xef\x4f\xa6\x52\x52\x72\xfe\xbb\x86\xbe\x55\xa5\x64\xdf\x29\x6e\x76\xed\x80\xfe\xec\xb6\x22\x9e\xba\xdf\x75\x2f\x86\x52\xad\x48\x1c\x18\x89\xd2\x29\x80\x6b\x00\xbd\x97\x0c\xab\xdc\x33\x47\x94\xe9\x26\x89\xea\x8f\xb9\x93\x96\x81\x29\x5a\x15\x3c\xe5\x2a\x17\x22\x9b\x29\x4a\x9c\x20\x5b\x43\x58\x90\x88\x0b\xe8\x39\x90\x01\xc0\xb3\x39\xd2\x59\x8e\xc5\xcf\xf0\x93\x25\x97\x49\x91\xb6\xba\xcb\xb8\x2a\x0f\xaa\xb4\xea\x1a\xa5\x0b\x68\x96\x35\x4d\x9a\xab\x84\x08\x76\x91\x2b\x18\xac\xa6\x3d\xca\x85\x02\x2d\xaf\x60\x4d\x6e\xff\xf9\x76\xb1\x92\x96\xe2\x88\xdf\x65\xf3\xad\x1e\x60\xf1\x48\xc9\xbc\xb1\xb1\xec\x4b\xed\x4e\xdf\x91\xfe\xfb\xd2\x46\x1d\xca\xb3\x47\x88\x9c\xef\xbb\x4a\xec\x8f\x0f\xfe\xf6\xc7\xfd\xf1\xf5\x56\xdb\x05\xab\x76\xcd\x55\x9c\x80\xea\x79\x5e\x39\x81\x3c\x60\x84\x6f\xac\x9f\xd0\x2e\x03\x66\xc1\x76\xf3\xa8\x86\xd4\xde\x37\x4e\x15\x88\xf7\x1e\xc4\x6f\xe9\x29\x65\xe0\x75\x13\xe0\xcf\x9f\xec\x24\x6f\xe3\x36\x6c\xfb\x12\x5c\xca\xd5\xe9\x79\xb3\xfa\xea\xfd\x38\x2f\xfb\x43\xdd\x52\x46\xb4\x15\xe9\xfc\x72\xe8\xa1\x23\x37\x23\x00\x35\x8d\x31\x0b\xd9\xc9\x66\x8a\xd4\xaf\x30\x69\x04\xd9\x02\xac\xc0\xcf\xd8\x0f\x0e\xbd\xff\xc3\xbf\xd8\xfa\xeb\x1d\x5b\xc2\x58\x03\xc9\x81\x8e\xa2\x22\x85\x8c\x0e\xdd\x3a\x99\xc0\xb3\x69\x08\x89\xe4\x04\x4f\x64\x97\x87\x47\xf7\xa9\xc9\x7b\x70\x61\x86\xd2\x4b\xdd\xc3\xed\x12\x75\xbc\xdc\x59\x48\x84\xd3\x69\x96\xb3\x2c\x17\xdb\x46\xab\x54\x72\xba\xca\x52\x75\x47\xb8\x5d\x5e\x28\xaf\xa7\xaf\x3b\xc0\x46\x4f\x02\x4d\xbc\x3f\xdc\xdd\x5c\xb3\x2d\xdf\x01\xa4\x25\xd7\xa4\x31\x08\x14\x34\xd5\xfd\xbb\x6f\x06\xca\x2f\x5f\xde\x6c\x38\xa6\x84\x63\x6b\x09\x3b\x71\xa7\x21\x5a\xb1\x43\xb0\x66\x68\x49\x9a\xad\x9c\xea\xe4\x6c\x9b\x70\x25\x90\x2e\x14\xde\x7f\xcc\x2a\x8f\x0f\xd3\x54\x2e\x60\x4d\x40\x00\xe8\x40\x28\xc1\x9f\x16\xaa\x09\x12\x58\x56\xdf\x3b\x2a\x33\xd5\x6a\x23\x3a\xf1\x3a\x1f\x90\x44\x94\x47\x66\x9b\x60\x75\x9a\xcd\xb6\xb9\x84\x2d\xcf\x00\x4b\x35\x60\xa2\xba\xa5\x02\x67\xca\x2a\x41\xe9\xe7\x8c\xc5\x58\xbf\x57\xc8\x0c\x15\x76\x31\x96\x09\xb8\x06\xb2\x2f\x98\x74\x4d\xb9\xca\xcc\x84\x42\x38\x46\x3c\x09\xc5\xea\xd5\x60\xd3\x77\x57\x2e\x35\x89\x93\x44\xf2\x03\x2d\x43\x1f\x38\x66\xc7\x5c\x60\x1a\xb5\xeb\xf6\x33\x7b\x7e\xe0\xdb\x2e\xe4\xf1\xd1\x2d\xee\x9b\x25\x57\xbd\x5c\xf5\x3a\x41\x55\x0b\x18\xc9\x4b\xf0\xe3\x70\xf4\x1e\xd4\x91\xe6\xa7\x91\xea\x6f\x80\x36\xf7\x69\xd0\xe4\x03\x6c\x4f\x40\x7d\xe1\x60\x01\xce\x5f\x36\xbb\x1c\xf8\x9e\x51\x03\x96\x34\xef\xef\x84\x60\x9f\x9d\x8c\xec\x67\xd2\x13\xf0\x0a\xfe\x6d\xe3\x3a\x55\x4b\x7d\x9c\x31\x48\x57\x35\x24\xcd\x51\xa3\xd2\xdc\xcf\x63\xb1\x3a\x00\x87\x57\x2f\x5b\xc3\xd5\xf8\x5e\x7b\x90\x39\x1f\xfd\x9d\x9c\x90\xdd\xb6\xa7\xe6\x7c\x86\x29\x3e\x4c\xee\xb4\xb4\x48\x72\x50\xd6\x05\xae\xb6\x47\xa5\x9f\x15\xfa\x02\xf4\x24\xf6\xda\xec\x3f\x38\xc0\x80\x74\x8d\xc0\x39\x05\x5a\xc3\x37\x40\x1e\x37\x71\xff\x66\x77\x18\xe6\xc6\x3e\x03\x3b\x72\x06\xce\x0f\xf1\x1a\x83\x35\x7f\x3d\x19\xb1\x9f\x46\xec\x62\xc4\xc6\xe3\xf1\x9b\x11\x13\x3c\x5a\xdb\x1e\xe1\x4f\x10\xf4\x92\xf3\x95\x69\xdb\xa9\x6f\xfb\x07\x00\xd9\xb7\x39\xac\xcc\x91\x69\x0c\x34\x0f\x34\xba\x7d\xe4\xc1\xbe\x02\xe2\xe0\x51\x50\xc6\xa6\x04\xa3\xb5\x96\xbe\x53\x80\x2e\x13\x91\x4e\x2d\x3e\x2d\xcb\x75\x6a\xb1\x36\x4f\x3c\xe5\x52\x41\x79\x10\xaf\x23\x0d\xe9\xc9\x01\xa5\x9d\xf8\xca\x37\xf0\xfe\x52\x39\x56\x1f\x33\x4c\xf7\xae\xff\xf9\x6e\x2b\x23\x18\xcf\xe7\x54\xe6\xb9\x39\x9d\xb3\x99\xba\x63\x6f\xff\x9d\x4d\xb6\xdb\x44\xb0\x09\xfb\x2b\xfb\x89\x2b\xae\x38\xfb\x89\xfd\x95\x5d\x70\x95\xf3\x44\x17\x5b\xc1\x2e\xd8\x5f\xcd\xb0\x99\xf6\xae\xb5\x39\x0e\x77\x23\xc6\x99\x2a\x12\x3c\xf5\x5f\x5b\x1c\xcb\x1b\xf7\x5e\xdc\xcf\x8e\x95\xb0\xcd\xf4\x86\x8e\xc2\x3f\x63\xf1\x11\x14\x7f\xa8\x55\x22\x72\x2b\x1c\x5d\x42\x1c\xe1\x03\xce\xe0\x4d\xdf\xce\x94\x8b\xe5\xfd\xd9\xf4\xf8\xcf\xec\xaf\xec\xba\x48\x12\xd3\x25\x63\x68\xcc\x42\x7a\xcb\x2c\x02\x5c\xa8\xf1\xb3\x7c\x94\x5b\x11\x4b\x0e\x18\x70\xf3\xaf\xf3\x7b\x98\xed\x79\xe1\x19\x42\xc2\x3d\xed\x18\xa7\xbf\x09\x4d\xd4\x90\xc2\x1e\x47\x3c\x6e\x27\xbf\xe3\xe6\x57\xfe\xe9\x70\x8f\xc8\xf3\x23\xd1\x7e\x20\x87\x15\xd9\xc2\x43\x82\xf3\x83\x4c\x40\xe5\xb0\xb5\x6d\x35\x1c\x05\xe1\xa1\x7e\xac\x91\x05\xbe\xfc\x93\xdf\x21\x7b\x90\x97\xf7\x35\xb9\x35\xea\xe5\x52\xa9\x14\xf8\x92\xbe\x5c\xbc\x57\x56\xc8\x51\x2e\xff\x52\x16\x0c\x28\x0d\xb1\x96\xbd\x94\x15\x2a\x9d\x7d\xa0\xd8\x05\x14\x9a\x99\x8b\x8c\x92\xc9\xb9\xd9\xaa\xe7\xd7\x5a\x99\x6b\x6b\x26\x57\x58\xe2\x0e\x08\x88\x0c\x68\xa8\xac\x53\x70\x5f\x76\x59\x83\x2d\x00\xfe\x81\xe9\x12\xa2\x72\x72\x63\x05\xcc\x14\x24\xbb\x99\x32\xbf\xa0\x13\x09\x10\xba\xd2\x71\x77\xe1\xd3\xac\x86\x23\x3d\x8b\x0c\x72\xd0\x78\xc3\x02\xeb\x92\x3d\x3c\x8a\x33\x0b\xaa\x4d\x8e\x88\x8a\x5f\x07\x2c\x20\xd4\x9a\x2d\x11\x45\xf0\xcf\x42\x24\x5a\xad\xcc\xaa\x68\x33\x02\x7a\xc3\xe5\x31\x39\xf1\xb0\x0b\xd8\x58\x6b\x0f\xcc\x61\x49\x5f\xa1\x29\x09\x24\xf2\x49\x7b\x0a\x64\x76\x5d\x44\xd6\x9d\x86\xf4\x72\x2d\x2f\x71\x64\xc1\xe1\x43\x26\x40\x51\x9f\x92\xb3\x2e\xda\x8f\x07\xa7\x2f\xd8\xc4\x37\xea\xb7\xa9\x3a\x31\x7d\xcd\xa1\x10\xca\x26\xd8\x60\xb2\x0b\xea\xf5\x58\x8f\xbf\x26\xbc\xef\x25\x45\x30\x1b\x15\x2f\xe1\x7b\xa6\x35\xfa\xd3\x50\x55\x4b\x3b\x7a\xa7\x40\x3e\x7d\x41\x92\xeb\xb9\x5e\xda\x22\xb0\xfe\x67\x7a\x8d\x66\xbc\x1f\xf4\x24\xa4\x16\x0c\xe9\xb8\xeb\x0b\xa7\x2d\xdf\xa0\xd5\x9c\x32\x12\xfd\x3a\x5b\x1d\xb0\x1b\xf5\x1e\x7f\xfe\x51\x27\x32\xea\xc6\xeb\xd8\xe3\x0a\xa4\xe1\x6b\x00\x88\x85\x00\x00\x1b\xc5\x7f\xa8\x53\xe8\xa1\xe7\x22\xca\x7d\xc6\xad\xfe\x72\x83\xc2\x61\x14\x60\x75\xad\x80\xf2\x8b\x4b\x69\xc1\x51\x03\x9c\x45\x40\x2e\x89\xa1\x47\xa8\x8a\x81\x54\x6f\xc4\x29\x22\x5b\xea\x08\xd8\xab\xe7\xb5\x4e\xcc\xd5\x44\xc5\xc4\xff\x34\x53\x5b\x91\x46\x3a\xe1\xb9\xb1\x86\xcf\xc4\xf1\x21\x93\xd8\x33\x38\xbf\x06\x6c\x1e\x20\x68\xde\x90\x4c\x85\x70\x29\x57\xdb\x7c\xc7\x21\x64\x67\xc1\x4a\xd5\x1d\x17\x90\x39\x1d\xd8\xa6\x6b\x15\x7c\x22\x08\x0c\x0e\x05\x55\x6c\x57\x92\x67\x66\xd0\x4b\xfd\x19\x36\xc3\xc2\x91\xf3\x46\xfe\x1e\x91\x57\xe6\x95\xae\x12\xd5\xa1\x04\x1e\x2f\xac\xeb\x40\x3c\x45\x26\xa0\x3b\x1b\xc1\xd1\x35\xf1\xac\x3a\x34\xa9\x33\xe5\xd3\x85\xaf\xb2\xd0\x4d\x69\x9c\x67\xa4\xa9\xb2\x70\x9e\x11\x7b\x55\x7a\xd1\x57\xc0\xf3\xa4\x34\x3c\x8f\x52\x3a\xa5\xa1\x81\xe5\x3a\x62\x32\x9f\x29\x99\xe1\xca\x4c\x45\x22\x9e\x4c\xef\xc2\xd8\x29\x41\x3f\xec\x55\xd2\xbe\x36\x20\x42\xb9\x2d\x24\x74\x0a\x87\xc0\xa8\x90\x86\x7c\x41\x1c\xe2\xb4\xa0\x54\x5f\x28\xe0\xe6\x15\x5f\xcd\x06\x90\x90\x1a\x40\x34\x44\x2c\x94\xed\x1f\x80\x24\x50\x44\x69\xa6\xa6\x4b\xa8\xe6\x82\x1a\xb2\x38\xc6\x4b\x99\x65\x6b\x75\xe4\x0d\x92\x62\xa5\x9a\xae\xa8\x4e\x40\x1b\x55\x56\x70\x27\x89\x27\x91\xee\x72\x88\x71\xc2\xb8\x2a\xc1\xf3\x35\x93\xf9\x08\x58\x37\xac\xe1\x98\x29\x1e\x93\x48\x1d\x35\x67\x86\x06\xd6\x7d\xc7\x3c\xd3\xe7\x0b\xfd\xd4\xe5\xe7\x1d\x0b\x82\xc2\x5d\xbd\x4d\xb8\x9a\xa3\x41\xfd\x15\x60\x50\x81\x00\x4e\x5b\xe6\xaf\x58\xcc\x9d\x6e\xfe\x49\xfa\xe9\xbc\x9f\xdb\x92\x2c\x95\x71\xeb\xec\x83\x46\xb8\x18\x3c\x53\xa0\xf5\xd6\x5d\xd8\x82\x92\xed\x29\xb3\x09\xc9\xfe\x56\xc0\x23\xa4\x78\x25\x31\x6f\x57\xeb\x3e\x88\x94\x5d\x01\xdf\x2b\x5c\xa7\xcf\xcc\x57\xce\x90\xea\xb4\x0f\x47\x8a\xd4\x1c\xa6\x83\xd0\x22\x7b\xba\xf5\xb2\x88\x91\xd6\xb0\x42\x1d\x39\x62\xdf\x36\xc8\x7e\x21\x0c\x5a\x60\x58\xca\x45\x3d\x9a\x05\x8e\xc2\x6b\x89\x6e\x80\x1a\x9e\x32\x64\x5b\x96\x41\xef\x5d\x45\x09\xfd\x1a\xb3\xa9\x62\x36\x7a\x31\x62\xaf\x70\x61\x65\xaf\x28\x22\x47\x2a\x59\x94\x4a\x8e\x69\xf7\x50\xdd\x59\x15\x99\x80\xe8\x5f\xbf\xdd\x30\x31\xd2\xc9\x16\xf3\xa2\xe3\xf2\x93\x04\xf4\xf1\x21\x05\xa6\x98\x54\x5b\x60\x03\x74\x48\xe2\x2d\x74\x87\x3e\xac\xf6\xc1\x5d\xff\xc2\x36\xfd\xc3\x7e\xb2\x3f\x34\x43\xb4\x2d\xe8\x3c\xb5\x9f\x33\x9d\xce\x94\x6d\x8d\x22\x74\x19\x12\xaa\x57\x9b\x0a\xd8\x3e\xc8\x05\x0e\x56\x2a\xe4\xf4\x2d\x87\x3e\x48\x33\x78\x4a\xab\xaa\x15\x00\x8c\xc0\x42\x78\x7d\xbf\x31\x9b\xf8\xa7\x19\xc7\xc3\x2c\xf0\x0d\x1e\xf3\x55\xda\x9b\x24\x31\x83\x22\x73\xcb\xb2\x13\x00\x95\xb3\x02\xb8\xa2\x96\x85\x31\x46\x01\xa1\xd6\x4c\x99\xc1\x63\x4b\x09\x30\x58\x1a\x97\x99\xfa\xa0\x33\x5b\x17\x9b\xf9\xf1\xb0\x90\x4a\x1a\xb6\x57\x4e\x4a\x80\xfe\xf0\x0e\x0e\x6d\x0a\x81\x57\xb4\x25\x01\xa1\x4e\xc5\xed\x3b\x5d\xa4\xfe\xa5\x22\xae\x66\xea\xbf\xcd\xf0\xa0\xb2\x9b\x93\x45\xd4\x4b\xdc\xc2\x56\x8b\x93\xbd\xfe\x8c\x8d\xbe\xfe\x97\x37\x9f\xdf\x60\x7d\x7a\x91\x81\x7a\xcb\xa8\x7c\x80\x38\x6e\xc5\x22\x49\x20\x31\x6b\xdf\xc0\x95\x95\xfb\x47\xf0\x2e\x94\x0a\xdd\x71\xe6\xaa\xec\x62\xf4\xd9\xe8\x5d\x2b\xd8\xc7\x62\x27\x2c\xe2\x79\xb4\x3e\xb3\xbe\x1c\x99\x31\x7b\xfa\xd1\xf4\xa1\x8c\x83\xf1\xb4\x9a\xe9\x05\xcd\xfd\x2b\xdd\x38\x75\xc4\xd2\x7a\x31\xaf\x00\x38\x93\xfb\xd2\xaa\x0c\x35\x48\x71\x71\x7a\x61\x42\xef\xe7\xb9\xaf\x5b\x6d\x06\x1f\x40\xa5\xa0\xb1\xe2\x1b\x11\xb3\x57\x50\xfb\xf0\xca\x4e\xfe\x4c\x6d\x17\xe3\x64\xb7\xcc\x89\xac\xc5\x0c\xca\x18\xd8\xcb\xf7\x9c\x72\xf3\xb8\x7e\x4d\xda\x33\xd8\xad\x17\xad\x66\x5f\xc7\x8d\x8d\x7b\x52\x7f\x87\x05\x43\x3e\x6e\x74\xee\xca\x88\x99\x32\x39\x25\xcf\x1e\x47\x6c\x91\x72\x05\x74\xbe\x71\xe8\x54\xf9\xdd\x69\xae\x65\xc4\x84\x42\x09\x1c\xae\x78\xb2\x03\x28\xf5\x68\xa6\x90\x36\x06\x88\xde\x76\x51\x22\x23\x14\x42\xad\xf8\x41\xe2\x49\xa8\xfc\x92\xea\xa4\x2d\x66\xfb\xd8\x4c\xab\xab\xbb\x3e\x8a\x50\x6d\x5a\xf6\x76\xb8\x2f\x28\xf7\x01\xc7\x28\x15\x80\x65\x5e\xec\x02\x8c\xa7\x5b\xe0\x23\xd2\x43\x00\x66\x1d\xf6\xa7\x62\xa1\x13\x4b\x4d\x34\x7d\xc7\x74\x0a\xf4\xac\xb9\xa6\x3f\xc9\xb8\xed\x14\x93\x2a\x16\x5f\x8f\xaa\x0f\xee\x3e\x90\xac\x7b\x67\x1e\x13\xb0\x80\x56\x5f\x16\x76\x51\x2a\xcc\x61\x91\xdb\x1b\x5c\xed\x5b\x59\x15\x70\x36\x49\xf2\x35\xa0\xc0\x10\x7f\xec\x07\x75\xc3\x77\x2c\x5a\x73\xb5\x0a\xae\xd0\x00\xca\x11\x5b\x9d\xa2\xf0\xc6\x13\x10\xf1\xe8\xd4\xd6\x5f\x51\x55\x11\x81\xa0\x5d\xfc\x17\xb1\x87\xda\x96\x0e\xf1\xd5\x2a\x15\x2b\x28\x89\x2d\xe9\xb5\xa3\xfd\x74\x0c\xaa\xf8\x9c\xae\xb2\xb2\xd3\xd4\x66\xb7\xdd\x5a\xf2\x74\xe7\x8a\x72\x48\xb5\xc6\x0d\x5d\x6d\x58\x47\x4c\x8a\xf1\x88\xfd\xe8\xf1\x96\x22\xd2\xca\x55\xf5\x34\xbf\xc3\xb6\x12\xa9\xdd\x63\x8b\x1a\x8a\xb8\x9b\xfb\x0e\x9f\xd5\xb4\x6f\x1a\x17\x4d\x67\x59\x54\xce\xf3\x62\x80\xad\x24\x7d\xb3\x0b\xf3\xe3\x3b\xfc\x6d\x27\x24\x99\x6f\x8d\x79\xb3\x04\x1a\xe6\xfb\xc6\xc2\x9b\x67\x7b\xa6\xb3\xa6\xb1\x6e\x8e\xfb\x05\xdd\x4f\xf4\xea\x45\x5d\x4a\x5b\x25\xdd\xea\x52\xba\x99\x48\x5a\x2a\x7f\x3b\xde\x69\x68\x28\xd3\x62\x33\x09\x75\x9d\x55\xaf\x5b\x0d\x16\xc0\x29\x42\xeb\x14\xfd\x76\x04\x32\xb8\x02\xe4\x92\x91\x6c\x3a\x10\x4a\x2c\x0a\xa0\x72\xf7\xad\xee\xc6\x6d\xfc\x0d\xcd\xc3\xff\xd0\x72\x2f\xb6\x9e\x49\xd3\xa0\x87\xfb\x13\xc7\x29\x1d\x78\x4e\xb9\xc7\x23\x87\xb4\x0d\x6e\xea\x54\xae\xa4\xe2\xb9\x4e\xd9\xeb\x8f\x96\x78\xf5\x8d\x23\x0b\x87\x51\x3c\x85\x99\x28\x0d\x11\x9a\x89\xe6\xbb\x17\xc0\x7b\x45\x3c\x1f\xc6\x82\xd3\xa4\xd2\xba\x17\xbe\x6e\xbe\x95\xe5\x7c\xb3\x0d\x09\xdc\x9c\x78\x18\x8d\x4c\x82\x83\xc0\x6c\xc7\x20\xc6\x27\x33\x5f\x92\x34\x53\x14\x19\xc7\x79\xd3\x69\x83\xfc\x78\xf5\x2d\xc1\x8f\x9c\x1f\x48\x4a\x40\x64\xa6\x03\x69\xdd\xaa\x19\xc5\xdb\x2b\x9b\x30\xf0\xf7\x82\x92\xa3\x0d\x2f\x8a\x7c\x52\x19\x9c\xda\x78\xc5\x73\x66\xc3\x9c\x92\xb6\xf6\xfa\x22\xd1\x45\xcc\xc8\x68\x50\x76\x32\x1d\xe3\xe9\x03\x04\x6f\xe3\x71\x1b\xdb\xcd\x40\x39\x20\xb7\xbf\xe1\x77\xcd\x2b\x1c\x3e\x6b\xb1\x70\x9d\x5b\x8b\x46\x76\x58\xec\x89\x12\xf3\x1f\xf8\xb6\xbb\x82\x9e\xdb\x9b\x33\xd6\xbb\x84\x02\xf8\x0d\x7b\xbf\x65\xb8\x5c\x34\x14\xd8\x66\x86\x05\xca\xac\xdc\x13\xac\xe7\x30\x90\xdc\xc0\x87\x17\x22\x32\x79\xf6\x78\xf4\xe3\x6c\x61\x67\xf7\xa3\xb6\x3c\x15\x2a\x9f\xc3\x13\x87\x3d\x0c\x1e\xf2\x11\x7e\x5e\x72\x48\x7a\x05\x04\xff\xf3\x5e\x63\x9c\xd7\x96\x96\xff\x17\xbb\xa3\xd8\x46\x66\xa5\x23\xcd\xe9\xf3\x5a\x02\x14\x23\xc8\x89\xb9\x89\x6b\x99\x2e\x7a\xa1\x03\x46\x2f\x78\xa1\x92\xe9\xec\xf5\x42\xbe\xf7\x28\xa4\x60\x5a\xa1\x30\x0f\x15\x14\x1a\x53\x66\xff\xe6\xd7\x1c\x16\xe9\xfa\xec\x2c\xe3\x39\x33\xf3\x97\xb0\xbf\x88\x54\x7b\x94\x3c\xc9\xd1\x07\x0d\x77\xfa\xc3\x87\x4b\x16\xa1\xbf\x8b\x62\x39\xa1\x5a\x04\xfc\x85\xaa\xf7\xf1\x66\xb9\xd8\x59\x77\xbf\x25\x95\xb0\x15\x11\xce\xc3\x81\xc7\x66\x70\xb1\x0b\xec\xbb\x0d\x7d\xb9\xc3\xc2\x6e\xd0\x73\xb8\xb7\x12\x3f\xd6\x86\x6f\x09\xf6\x44\x08\xcb\x6a\x10\x7f\x0c\x2f\xf1\x9f\x7f\xfe\xaf\x71\x9b\x6c\x1a\x74\x7d\x28\x8a\xc4\x75\xfe\x7d\x2a\x85\x8a\x21\x29\xc7\xe3\x3a\x6b\xb5\x2a\x45\x69\x4b\xe6\xd9\x2c\xc3\x93\x14\x93\x35\x9f\x83\xd9\x1c\x17\xd1\x37\xc8\xec\x7a\x23\xeb\xb6\x6f\x29\xef\xd3\x76\x54\x67\xf3\x78\xa7\xf8\xa6\x2e\x34\xf7\xa2\x7d\xdc\x49\x91\xc4\xd0\x45\x7a\xfa\xbe\xec\x44\x2c\xa2\xc7\xa1\x3e\xc1\xc1\x54\xaf\x22\x7a\x64\x3f\xdf\x7f\xb8\x42\x89\x15\x99\xcd\xd4\x35\xcf\xe5\x93\x78\x48\x13\x17\x16\x46\xe3\x53\xa4\x89\xdd\x23\x65\xea\x41\x2c\x86\x2b\x40\xc7\x98\x78\x0a\xad\xe3\x10\x32\xc3\x6e\x76\x67\x8b\x22\x7a\x14\xf9\x79\xca\x55\xac\x37\xf8\x1a\xe7\x59\xb1\x5c\xca\xaf\xe3\x9c\xa7\x6f\xf6\x41\xdc\xf7\x5a\xd2\x23\x2e\x09\xc7\x18\x94\xfa\x35\xc0\x09\xdf\x78\xdb\x2c\xe3\x50\xac\xd9\x59\x66\xcf\xbb\xe7\x4c\x0a\xc4\x1b\x5b\x2e\x22\x63\xea\x67\xc3\x13\x06\x8c\x5e\xf3\xc1\xfa\x8d\xae\x58\x6d\x0c\x80\x7d\xba\x6f\x23\x84\x1f\xb5\x4e\x8e\x8d\x12\xf2\xc4\x6e\x92\x39\x28\x78\x1c\xe3\x82\xe3\x02\x70\x97\xed\xe9\x3b\x97\xaf\x72\x94\x7a\x14\x6b\x70\xfa\x59\x00\xa5\xa0\x2e\x00\x80\x01\x3a\xd1\x01\x3a\xcc\xb6\x0d\x09\xcb\x81\xe0\x49\x68\x03\x91\x0e\x4e\x49\xbb\x16\xb6\x0c\xca\x61\xb9\xef\x23\xd0\x0e\x55\x7a\x38\x28\x80\x80\x7a\x1b\x95\x47\xb9\x60\x42\x48\x4f\xe6\xc6\x31\x78\xb6\x1d\x4f\x54\xf9\x32\x36\x87\x3c\x9f\x99\x0a\xbc\x1c\x24\xe6\xb0\xe8\x54\x37\x6a\x4d\x31\x86\xd2\x32\x3c\x3a\xc6\x70\x0c\x07\x65\x67\x10\xfa\x5d\xa8\xe6\x02\x79\xd4\x48\x6f\x16\xe6\x9e\x8f\xd5\x8e\x14\x78\x03\xf7\x6c\x62\x29\x7e\x5c\x90\xd4\xba\x59\xc8\x31\x5c\x19\x7b\x77\x34\x84\x6c\x49\xa1\xc9\xda\x77\x85\x09\x7d\xe2\xd3\xd2\x65\x36\xdb\xd9\x49\xf5\x0d\xa4\xb9\xce\x3e\xf3\x5d\x06\xd2\x37\xc2\x58\xc5\x25\x06\x9b\xca\xfd\x1f\xf9\x10\x88\xa3\x8f\x22\x1d\xb9\x82\x14\xb1\xe8\x5d\x24\x96\x80\x8b\xc4\x8a\xfc\x78\x6a\x8d\x57\x59\xf3\xe0\xfc\x3a\xf1\xe3\xb4\x33\x7e\x8c\x09\x9c\xff\x1d\x21\xe3\x8e\xc0\xd4\x91\xf1\xb1\xe0\x98\x4c\x75\x44\xf2\xef\x39\x03\x45\x3c\x34\xc7\xe6\xd9\x23\xb6\xe1\x52\xd1\x36\xc8\x53\x63\x20\x63\xb1\x28\x56\xab\xd6\xb0\xcd\xf7\x1f\xff\x2d\xef\x93\xbf\xfb\xf8\x5c\x27\x39\xcc\x29\x22\x6c\x53\xfb\x24\x4c\x1b\x1b\x5f\xf9\xdb\x04\xd5\x4e\x14\x21\x9c\xf6\x89\x10\x5a\xdc\x01\x54\x43\x90\x8b\x6f\x73\xc3\xff\x08\x1d\x7e\x9b\xd0\x61\x63\x6e\xa4\xda\x43\xac\xc0\x9f\xcb\xb2\x03\xdc\xd1\xc3\x03\x89\x7c\x1c\xe3\x1b\xf4\x8a\x44\xdf\x32\xa1\xe2\x8c\x2d\x78\xf4\x02\xcc\x3e\x70\xfa\x1c\x1f\xa3\xd8\x93\xf0\xbe\xd3\x1b\xc1\xe0\x51\x19\x32\x2b\x33\x2a\x38\x19\x01\x92\xca\xbc\xa0\xcf\x12\x53\x0e\x1a\x8e\x2b\xcc\x56\xc7\xde\x69\x7d\xad\xc4\x33\x33\xa7\xc1\x28\x84\x96\x04\xd3\x03\x94\xfb\x6f\x48\xb5\xd9\xe3\x50\x5d\x75\x6d\x2a\x56\x3c\x8d\x01\xfd\x4c\x5b\x32\xe1\xd1\xa3\xf9\x6f\xe8\x1f\x3d\x91\xe0\x2f\x96\xfd\x13\x21\x59\xbe\x35\xa9\x22\x54\xd0\x25\xa4\x8d\xef\x1f\xfe\x3c\x63\x3c\x4a\x75\x86\xb7\x78\xa7\x2a\x05\xc5\x68\xe0\x20\x3e\xc9\xb8\xe0\x09\x3e\xb1\x35\xfa\xc7\xb3\xa3\xd8\x4c\x27\x01\xa9\xbc\xf8\xba\x4d\xb8\x2a\xef\x49\x7c\x5d\xa0\x93\x90\x1d\x2b\xdf\xb1\x22\x7d\x53\x76\xb7\x50\x89\xd5\x6f\x2b\xf4\x3e\x53\xc1\xe3\x5d\xc8\x1d\x23\x15\xc9\x2b\xf2\x78\x23\x95\x99\x7a\xab\x19\xe2\xec\x2b\x34\x1d\xf1\x04\x41\x60\x40\xad\x9d\x24\x95\xad\x9f\x31\x25\x8c\xcb\xc2\x53\x99\xec\xc0\x4b\xdd\xa6\xe2\x2c\x78\x4e\xb0\xbf\x09\x83\x2e\xb3\x99\xb2\x75\xce\x45\x26\x96\x45\x82\xbe\x2c\xdc\xf6\xdc\x0b\xd0\x3e\x7c\x98\x8e\xcc\x31\x96\x13\xa1\x6d\xf0\x60\x94\x89\x38\x05\x9e\xb7\x7e\xcf\xea\x15\xf3\xf6\x9c\x46\x29\xc0\x0d\xd7\xfa\xd9\x16\x1d\x3c\x73\x8f\x2a\x6b\x3b\x4b\x4e\x16\xe7\xec\xf6\x6a\xec\x7d\xc2\xee\x4a\x1c\xf4\xb2\x14\x32\x7d\x26\x62\xb7\x13\xa5\x82\xd7\x21\x85\x25\xc2\xa0\x88\x98\x15\x19\xd6\x2e\x98\x39\x04\x6b\x6d\xaf\xcd\x58\xcd\x61\xd5\xb9\x98\x7b\x3b\x99\x69\xc5\x66\xc5\x6f\x7e\xf3\x5b\xc1\x7e\x43\x72\x9b\x60\x65\x30\x42\x0d\xac\x46\xd8\x3a\x18\x28\xf7\x00\x81\x94\x47\xb5\x19\x61\x4d\x20\x2c\x5b\x48\x08\x30\x26\x1e\xad\x59\x56\x2c\x10\xa3\xc3\x29\xc8\xc9\x95\x23\x0d\xbc\xd2\x00\xb7\xc1\x73\xcc\xf6\x7e\x40\xb0\xe0\x23\x9d\x2f\x36\x10\x10\xe0\x04\x61\xa0\x43\x91\x1e\x18\x14\x7c\x49\x30\xe0\x1f\x41\xa9\x67\xc4\x7e\x96\x4f\x62\xc4\xee\xb6\x3c\x7d\x1c\xb1\x77\x18\x6e\xfd\x83\x5e\xec\xbd\xff\x9f\x22\x06\xe6\xdc\xd4\x63\x35\x29\x31\x9a\x34\x0a\xa8\x32\x83\x10\x7f\x3d\x5a\x63\x11\x16\xa0\x7d\x82\xa2\xcf\xfb\xf4\x48\x5a\xf9\x54\x4f\x75\x8b\x69\x87\xf5\xb5\xde\x69\xaa\x56\xda\x9f\xa7\x54\x35\xd5\x84\x34\x31\xe7\x18\xac\x44\xf3\xe2\x67\xe0\x99\xe8\x94\x6d\x13\x9e\x9b\xb5\x92\x51\xf8\x19\x57\x05\xe2\xef\xf0\x44\xae\xd4\xc2\xf5\x75\xbc\xec\x83\xe7\x5b\xad\x93\x46\xff\xeb\xa4\x03\x58\x8b\x76\xf6\x1d\xbc\x29\xd6\x10\x64\xa1\x57\x62\x47\xd1\x47\xce\x7c\x9c\x2d\x90\xce\x87\xd5\x14\x17\x90\x44\xf0\xc3\x11\xca\xc3\x18\xb3\x82\xa8\x47\x74\x44\xac\x9a\x18\xb7\x1e\xa2\x71\xa2\x28\x84\x18\xa2\xed\x6a\x31\xbd\xac\xfe\x9c\x16\xb7\x10\xda\x9d\xcb\xa6\x42\xf8\xa1\x9b\xeb\x7e\xdd\x18\xa8\xc7\x9e\x5b\x03\x6e\x71\xe7\xfb\x68\x00\x6d\x91\xdd\x3c\x4a\x78\xd6\x13\xc9\xd6\x68\x77\xa6\xd4\xd0\x05\xb4\xd3\xdf\x66\xfe\x0c\x31\xd5\x4d\xcf\x03\x73\xa6\x26\x8e\x06\xcf\xbb\x5a\xce\x3d\x44\x33\x8b\x8e\x71\x6d\x6a\x10\xcc\xee\x39\x13\x47\x2c\x2b\xa2\x35\xc0\xf5\xcb\x76\x2a\xb4\x5b\xf5\x1d\x3b\x9a\x29\xe3\xac\xa0\x8a\x04\x87\x84\xf0\x33\x10\x8e\xcb\xbf\x08\xe7\x0d\x11\x2a\x34\x74\x80\x16\xdc\x4c\x8d\x56\x8d\xce\xa2\xad\x9c\xe0\xe9\xa3\x88\x83\x50\x5f\xb1\x8d\x79\x6e\xbc\x67\x77\xc8\xc1\xfa\x75\xfc\xa1\xd6\xfb\xcc\xc2\x17\x0b\x9d\xe5\x8a\xa5\x4d\xe4\x52\x44\xbb\xa8\xc6\x0b\x52\x82\x61\x9c\x2e\xa6\x7c\x58\x48\xb5\x8b\x3f\xa2\xf9\xa6\xfc\xa9\x56\xef\xcc\xda\x72\xd7\xff\x3b\x11\x6b\x2d\x14\x06\x7f\xef\x51\xb1\x3d\x69\xe6\x7f\x80\xcf\xfe\x2e\x23\x48\xfd\xd8\x0b\x4a\xf6\xcb\xe2\xbb\xe0\xc6\x4a\x5e\x73\x23\xaa\xec\xfb\x2a\x50\x95\x71\xb8\x6f\x90\x74\xb2\x25\x11\xbf\x67\x2b\x50\x19\x70\xec\x4a\x94\x07\x80\xd2\xe9\xa7\x76\xbc\x2e\x12\x9d\x15\x69\xf7\xe6\xbf\x2d\xf7\xda\x3e\xbd\x81\xc1\x10\x16\xdb\x66\x21\xa0\xfa\xbc\x0b\x3e\xb2\xcf\x51\x30\xf7\xa5\xea\xef\x09\x6f\xf5\x2c\x58\x84\x50\xf9\x16\x4d\xa0\xda\xef\x82\x18\x08\x9c\xbc\x2b\x11\x7a\x01\x95\xc3\xb1\xb4\xb8\x4a\xf9\xbe\xef\x0a\xd3\xdd\x78\x07\xab\xb0\xe6\x94\xc2\x65\xbd\x32\xa4\xa7\xc8\x3e\x7c\xe4\xf9\x1a\x03\x39\x1b\x9d\x93\x38\x33\x68\x6d\x13\x8c\x07\x53\x12\x8b\x44\x2f\x40\xe6\x0b\x54\xb8\xdb\xd6\x39\x2d\xce\x5e\x43\x57\x9f\xb0\x3e\x6b\xdb\xec\x07\xa8\xf9\x4b\x45\x06\xd4\x0f\xf5\x9c\x5f\x5f\x84\xec\xb0\x60\x53\xbd\xbb\xc6\x6c\xbd\xab\x05\x9b\xea\xd4\xd9\xc6\xaa\x03\x5c\xf2\xf2\x80\x1a\x89\xcb\xb0\x6e\x0e\x64\xfb\x91\x45\x94\x92\xea\x48\x24\x58\x79\x5f\xab\xa3\x38\x53\x13\xfc\xa4\xa4\x3a\xee\x24\x22\x1c\x22\x91\x24\xb3\xdc\xfe\xc3\x42\x3a\x36\x09\x31\x70\xe4\xd7\x8f\xfc\x8d\x0b\xc2\x23\x23\xa8\x5b\x53\xb9\x4c\x8d\x3f\x9d\x81\xbb\x90\x15\x8b\x33\x4f\x91\xa0\x53\x70\x30\x80\x41\x63\xcb\x53\xd0\x23\x5c\xcb\x24\x3e\x6b\x38\x48\x30\x0e\xed\xa9\xde\x2d\xb3\x16\x4f\xc8\x7c\xc1\xbd\x10\x6b\x74\xdd\xbb\xbb\x76\x8c\x7b\x0f\x51\x24\x5b\x1f\x8a\xe6\xba\xcb\x5e\x94\x2e\x4b\xbf\x36\x40\xa9\x07\x02\xa8\x45\x22\xe8\xef\xdf\x4e\x94\xc6\xac\x8f\x9d\xb8\x2f\x5f\xad\xec\xae\x31\x97\x43\xb2\x1c\xed\x28\xce\x6f\x0b\x34\x85\x09\xcc\xb6\xfc\x59\x11\x35\x41\x37\xd5\xe1\x41\xf6\xa1\x59\x67\xd5\xd8\x87\x1a\x34\xcb\x5b\x0a\x45\x24\x3f\xb9\x74\x7a\x3a\xa3\x40\x45\x8f\x27\x49\xc8\x1a\xed\x43\x41\x33\xe5\x03\x06\xe6\xf8\x4f\x12\xf3\xbf\x51\xd5\x70\x13\x11\x05\xa8\xff\xe7\x62\x64\xeb\xe8\x89\x81\x8a\xd2\x48\x67\x78\x31\xf7\xd7\xe7\x7d\xbb\xf9\x54\xfe\xe4\x77\x56\x42\xb8\x27\x61\x8b\x8f\x9d\x3f\x8a\xdd\xe0\xbe\x36\xa7\x4c\xbc\xcc\x1a\xa8\x92\xbb\x5a\xee\x88\xa7\xa9\x05\xec\xd2\x53\x19\x4f\x73\xb9\xe4\x51\x29\x82\xde\xd2\xcf\xb5\x88\x1e\xb7\x5a\xaa\xc1\xb6\x28\xe8\x8f\x39\x91\x72\x91\xe5\xcc\xb7\xe6\xe0\xc8\xbd\xe8\x0c\x4b\x07\x33\xbe\x48\x06\xa8\x04\x8b\x58\xf4\xfc\x3a\x9c\x39\x1d\xb9\xf6\x65\x77\xea\xab\x8c\xf0\x67\xc3\x0b\x84\x65\xba\xe3\x95\x68\x35\xea\x47\x73\x29\xa0\xcd\x6b\x85\x1c\x3d\x07\x9b\xb3\x12\x2b\x55\xe3\x90\x82\x1a\x0b\xc8\x88\x1f\x33\x86\x07\x16\xcc\x0d\x23\x32\xc6\x6e\x0e\xa4\x94\xaf\xe9\x3d\x91\x66\x3a\xdc\x74\x62\xa2\xf6\xc9\xab\x6c\x14\x30\x84\x58\xb6\xf2\x64\x79\xb8\x2b\x32\x08\x16\x1b\xbf\x11\xb1\x2c\xaa\x2a\x22\xa5\x12\xab\x7f\x5c\xc1\xff\xff\xbb\x82\x03\xea\xe4\x25\xef\xdf\xcd\xc5\x7b\xff\x38\x81\xbf\xaf\x13\x18\x39\xb0\xb0\x2a\x61\xc8\xd0\x52\x57\x6f\xfd\xcf\x8f\x1b\x5c\xc1\x82\x9e\x64\x03\xc6\xf9\x1b\x7a\x10\xc1\x63\x69\x8b\x0c\x34\x1e\xbd\x8d\x6e\x77\xae\xd5\xfb\x28\xfe\xbe\x10\x14\xa6\xd5\xb6\x6f\x18\x70\xcb\xc3\xa5\x63\xae\x69\xbd\x83\xb5\xed\xb5\xbf\xdf\x55\xca\xa9\x8f\x0f\x62\x2c\xa3\x4b\x42\x5d\x5b\x8b\xa8\x04\x26\x63\x3b\x2c\x63\xc0\xb9\xc8\xf3\x57\x99\x1b\xf5\xb2\x05\xb4\xe8\xc7\x2b\x99\xe5\xbf\x54\x04\x6e\x0e\x53\xc8\x79\x31\xdc\x84\xed\x2a\x76\x33\xf8\x45\x67\xba\xff\xb6\x9c\x90\x37\xee\x08\xae\x39\x20\x65\xb2\x92\x06\xa6\xdf\x43\xce\xab\xcf\x6e\xbc\x3e\xa3\xab\xfd\x9c\xf2\xed\x56\xa4\x36\xcb\x5c\x03\x02\x80\x3e\x00\x3c\x05\x04\x3e\xd6\x02\x55\xc6\x2a\x47\xaa\x31\x25\x95\xa6\xe1\x6b\x30\x74\xe3\xe6\x99\xbb\x2e\x92\xa4\x75\xe6\xf6\xd3\x8e\x5f\x3f\x5c\x5d\xcd\x7f\x99\x5c\x3d\x5c\x76\xd2\x78\x07\x5f\x6b\x1d\x13\xd7\x13\x1a\x13\x2f\x14\x62\x1e\x2b\xac\xd2\x99\xf6\x6f\x8d\xf7\x95\x22\x49\xca\x14\xef\x33\xf5\x99\xda\x01\xc8\x1e\xca\xd7\x98\x71\x63\x9d\x03\x57\x7e\x3e\x7c\xed\xb3\x69\xfc\x33\xfe\xf6\x8c\xf9\x97\x78\x0b\x42\x24\x24\x70\xd0\x3c\xae\x84\x07\x3e\x62\x3b\x20\x40\xac\x6d\x3b\x9c\x5a\xc4\xe2\xb0\xed\xf1\xa0\x80\x2f\x50\xc4\x56\x7b\xe2\x24\xbb\x03\xc7\xee\x73\x39\x76\xeb\x6c\x79\x8c\x37\x02\x68\x77\x84\xd2\x03\x20\xa8\xe6\xd9\xf9\x67\x0a\xaf\xb3\xa6\x4f\xb9\x6e\xef\x13\x9b\x12\xf6\x22\xe1\x6a\x55\xf0\x95\xc8\x46\xcc\x3e\x7c\xa6\x36\x72\xb5\x06\x66\x46\x52\xbe\x77\x17\x40\x28\xe2\xad\x2c\xa1\x0a\x96\x50\xaa\x99\xa2\x77\x52\x2b\xdf\x3c\x22\xea\xfe\x70\xe7\x5e\x87\x80\x8a\xd8\x10\xa9\x27\xa8\x99\xc2\xc9\x45\xfa\x67\x1b\xd4\x02\x7f\x99\xe7\xd5\xa5\xcb\x41\x5d\x0b\x15\x06\x8d\x4d\x5f\x41\x78\x6d\xa6\x5c\x11\x10\x42\x1e\x43\xf5\x7e\xc4\x42\x63\x97\xf6\xdb\x13\x3b\x19\x76\x4f\x50\xdf\x9a\x57\xfd\xd1\x67\x80\xd9\x70\xf3\x01\x52\x69\x75\x33\xd6\xf3\x6a\xc2\x03\xc3\xd1\x56\x19\x0a\x95\x5f\xcd\xbd\xb1\xef\x85\xdf\x69\x05\x2c\xe8\x62\x91\x0c\xe8\x12\x7e\xbf\xb3\x53\x68\x92\xbb\x3b\xd5\x23\xa2\x7d\x5b\xd9\x5a\x66\x99\x76\x3d\x76\xa1\x75\xcb\xbc\x9c\x30\x36\x5c\xea\x14\xfd\x60\xdf\x60\x14\x51\x7e\xc8\x7a\xe9\x51\xae\x51\x1d\x22\x6b\x7d\xba\x3a\x94\xc8\xec\xa0\xee\x78\xff\xa9\x77\x8f\x9c\x87\x40\x87\xdd\x20\x0b\x4b\xe7\x5c\xc9\xc0\xb6\x98\x49\x0a\x0d\x5a\xcd\x31\x89\xe6\xc5\x6c\x1e\x14\x04\x33\xeb\x7f\xe4\x16\xd1\xc8\xcf\xdc\x08\x3a\x19\x15\x69\x66\xcc\x25\xd9\x3b\xb2\xda\x3a\x65\x7c\xa6\x2c\x5b\xaf\x35\xc7\x13\x0b\xb9\x48\xdd\x5f\xb1\x04\x66\x8b\x6c\x97\xe0\xb1\xe6\x4c\x2b\x61\xad\xe1\x4c\x59\xa1\xba\x11\xe3\x8b\xcc\xea\xbf\x71\xb5\x73\xa2\x6c\xd2\x29\x6e\x70\xc5\x00\xcb\xb2\xdf\xe6\x55\xdc\x80\xd2\x39\xff\x4f\xe6\xff\xfe\xf6\x4f\xff\x2f\x00\x00\xff\xff\xbf\x2a\xf3\x00\xa1\x8f\x04\x00") func adminSwaggerJsonBytes() ([]byte, error) { return bindataRead( @@ -93,7 +93,7 @@ func adminSwaggerJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "admin.swagger.json", size: 285895, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} + info := bindataFileInfo{name: "admin.swagger.json", size: 298913, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/flyteidl/gen/pb-java/flyteidl/admin/DescriptionEntityOuterClass.java b/flyteidl/gen/pb-java/flyteidl/admin/DescriptionEntityOuterClass.java new file mode 100644 index 00000000000..f70cf0204d5 --- /dev/null +++ b/flyteidl/gen/pb-java/flyteidl/admin/DescriptionEntityOuterClass.java @@ -0,0 +1,6299 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: flyteidl/admin/description_entity.proto + +package flyteidl.admin; + +public final class DescriptionEntityOuterClass { + private DescriptionEntityOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + /** + *
+   * The format of the long description
+   * 
+ * + * Protobuf enum {@code flyteidl.admin.DescriptionFormat} + */ + public enum DescriptionFormat + implements com.google.protobuf.ProtocolMessageEnum { + /** + * DESCRIPTION_FORMAT_UNKNOWN = 0; + */ + DESCRIPTION_FORMAT_UNKNOWN(0), + /** + * DESCRIPTION_FORMAT_MARKDOWN = 1; + */ + DESCRIPTION_FORMAT_MARKDOWN(1), + /** + * DESCRIPTION_FORMAT_HTML = 2; + */ + DESCRIPTION_FORMAT_HTML(2), + /** + *
+     * python default documentation - comments is rst
+     * 
+ * + * DESCRIPTION_FORMAT_RST = 3; + */ + DESCRIPTION_FORMAT_RST(3), + UNRECOGNIZED(-1), + ; + + /** + * DESCRIPTION_FORMAT_UNKNOWN = 0; + */ + public static final int DESCRIPTION_FORMAT_UNKNOWN_VALUE = 0; + /** + * DESCRIPTION_FORMAT_MARKDOWN = 1; + */ + public static final int DESCRIPTION_FORMAT_MARKDOWN_VALUE = 1; + /** + * DESCRIPTION_FORMAT_HTML = 2; + */ + public static final int DESCRIPTION_FORMAT_HTML_VALUE = 2; + /** + *
+     * python default documentation - comments is rst
+     * 
+ * + * DESCRIPTION_FORMAT_RST = 3; + */ + public static final int DESCRIPTION_FORMAT_RST_VALUE = 3; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static DescriptionFormat valueOf(int value) { + return forNumber(value); + } + + public static DescriptionFormat forNumber(int value) { + switch (value) { + case 0: return DESCRIPTION_FORMAT_UNKNOWN; + case 1: return DESCRIPTION_FORMAT_MARKDOWN; + case 2: return DESCRIPTION_FORMAT_HTML; + case 3: return DESCRIPTION_FORMAT_RST; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + DescriptionFormat> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public DescriptionFormat findValueByNumber(int number) { + return DescriptionFormat.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return flyteidl.admin.DescriptionEntityOuterClass.getDescriptor().getEnumTypes().get(0); + } + + private static final DescriptionFormat[] VALUES = values(); + + public static DescriptionFormat valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private DescriptionFormat(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:flyteidl.admin.DescriptionFormat) + } + + public interface DescriptionEntityOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.admin.DescriptionEntity) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * id represents the unique identifier of the description entity.
+     * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + boolean hasId(); + /** + *
+     * id represents the unique identifier of the description entity.
+     * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + flyteidl.core.IdentifierOuterClass.Identifier getId(); + /** + *
+     * id represents the unique identifier of the description entity.
+     * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + flyteidl.core.IdentifierOuterClass.IdentifierOrBuilder getIdOrBuilder(); + + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 2; + */ + java.lang.String getShortDescription(); + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 2; + */ + com.google.protobuf.ByteString + getShortDescriptionBytes(); + + /** + *
+     * Full user description with formatting preserved.
+     * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + boolean hasLongDescription(); + /** + *
+     * Full user description with formatting preserved.
+     * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + flyteidl.admin.DescriptionEntityOuterClass.Description getLongDescription(); + /** + *
+     * Full user description with formatting preserved.
+     * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + flyteidl.admin.DescriptionEntityOuterClass.DescriptionOrBuilder getLongDescriptionOrBuilder(); + + /** + *
+     * Optional link to source code used to define this entity.
+     * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + boolean hasSourceCode(); + /** + *
+     * Optional link to source code used to define this entity.
+     * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + flyteidl.admin.DescriptionEntityOuterClass.SourceCode getSourceCode(); + /** + *
+     * Optional link to source code used to define this entity.
+     * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + flyteidl.admin.DescriptionEntityOuterClass.SourceCodeOrBuilder getSourceCodeOrBuilder(); + + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering tasks.
+     * 
+ * + * repeated string tags = 5; + */ + java.util.List + getTagsList(); + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering tasks.
+     * 
+ * + * repeated string tags = 5; + */ + int getTagsCount(); + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering tasks.
+     * 
+ * + * repeated string tags = 5; + */ + java.lang.String getTags(int index); + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering tasks.
+     * 
+ * + * repeated string tags = 5; + */ + com.google.protobuf.ByteString + getTagsBytes(int index); + } + /** + *
+   * DescriptionEntity contains detailed description for the task/workflow.
+   * Documentation could provide insight into the algorithms, business use case, etc.
+   * 
+ * + * Protobuf type {@code flyteidl.admin.DescriptionEntity} + */ + public static final class DescriptionEntity extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.admin.DescriptionEntity) + DescriptionEntityOrBuilder { + private static final long serialVersionUID = 0L; + // Use DescriptionEntity.newBuilder() to construct. + private DescriptionEntity(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DescriptionEntity() { + shortDescription_ = ""; + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private DescriptionEntity( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + flyteidl.core.IdentifierOuterClass.Identifier.Builder subBuilder = null; + if (id_ != null) { + subBuilder = id_.toBuilder(); + } + id_ = input.readMessage(flyteidl.core.IdentifierOuterClass.Identifier.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(id_); + id_ = subBuilder.buildPartial(); + } + + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + shortDescription_ = s; + break; + } + case 26: { + flyteidl.admin.DescriptionEntityOuterClass.Description.Builder subBuilder = null; + if (longDescription_ != null) { + subBuilder = longDescription_.toBuilder(); + } + longDescription_ = input.readMessage(flyteidl.admin.DescriptionEntityOuterClass.Description.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(longDescription_); + longDescription_ = subBuilder.buildPartial(); + } + + break; + } + case 34: { + flyteidl.admin.DescriptionEntityOuterClass.SourceCode.Builder subBuilder = null; + if (sourceCode_ != null) { + subBuilder = sourceCode_.toBuilder(); + } + sourceCode_ = input.readMessage(flyteidl.admin.DescriptionEntityOuterClass.SourceCode.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(sourceCode_); + sourceCode_ = subBuilder.buildPartial(); + } + + break; + } + case 42: { + java.lang.String s = input.readStringRequireUtf8(); + if (!((mutable_bitField0_ & 0x00000010) != 0)) { + tags_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000010; + } + tags_.add(s); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000010) != 0)) { + tags_ = tags_.getUnmodifiableView(); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntity_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntity_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.class, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder.class); + } + + private int bitField0_; + public static final int ID_FIELD_NUMBER = 1; + private flyteidl.core.IdentifierOuterClass.Identifier id_; + /** + *
+     * id represents the unique identifier of the description entity.
+     * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + public boolean hasId() { + return id_ != null; + } + /** + *
+     * id represents the unique identifier of the description entity.
+     * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.Identifier getId() { + return id_ == null ? flyteidl.core.IdentifierOuterClass.Identifier.getDefaultInstance() : id_; + } + /** + *
+     * id represents the unique identifier of the description entity.
+     * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.IdentifierOrBuilder getIdOrBuilder() { + return getId(); + } + + public static final int SHORT_DESCRIPTION_FIELD_NUMBER = 2; + private volatile java.lang.Object shortDescription_; + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 2; + */ + public java.lang.String getShortDescription() { + java.lang.Object ref = shortDescription_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + shortDescription_ = s; + return s; + } + } + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 2; + */ + public com.google.protobuf.ByteString + getShortDescriptionBytes() { + java.lang.Object ref = shortDescription_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + shortDescription_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LONG_DESCRIPTION_FIELD_NUMBER = 3; + private flyteidl.admin.DescriptionEntityOuterClass.Description longDescription_; + /** + *
+     * Full user description with formatting preserved.
+     * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + public boolean hasLongDescription() { + return longDescription_ != null; + } + /** + *
+     * Full user description with formatting preserved.
+     * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + public flyteidl.admin.DescriptionEntityOuterClass.Description getLongDescription() { + return longDescription_ == null ? flyteidl.admin.DescriptionEntityOuterClass.Description.getDefaultInstance() : longDescription_; + } + /** + *
+     * Full user description with formatting preserved.
+     * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionOrBuilder getLongDescriptionOrBuilder() { + return getLongDescription(); + } + + public static final int SOURCE_CODE_FIELD_NUMBER = 4; + private flyteidl.admin.DescriptionEntityOuterClass.SourceCode sourceCode_; + /** + *
+     * Optional link to source code used to define this entity.
+     * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + public boolean hasSourceCode() { + return sourceCode_ != null; + } + /** + *
+     * Optional link to source code used to define this entity.
+     * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + public flyteidl.admin.DescriptionEntityOuterClass.SourceCode getSourceCode() { + return sourceCode_ == null ? flyteidl.admin.DescriptionEntityOuterClass.SourceCode.getDefaultInstance() : sourceCode_; + } + /** + *
+     * Optional link to source code used to define this entity.
+     * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + public flyteidl.admin.DescriptionEntityOuterClass.SourceCodeOrBuilder getSourceCodeOrBuilder() { + return getSourceCode(); + } + + public static final int TAGS_FIELD_NUMBER = 5; + private com.google.protobuf.LazyStringList tags_; + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering tasks.
+     * 
+ * + * repeated string tags = 5; + */ + public com.google.protobuf.ProtocolStringList + getTagsList() { + return tags_; + } + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering tasks.
+     * 
+ * + * repeated string tags = 5; + */ + public int getTagsCount() { + return tags_.size(); + } + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering tasks.
+     * 
+ * + * repeated string tags = 5; + */ + public java.lang.String getTags(int index) { + return tags_.get(index); + } + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering tasks.
+     * 
+ * + * repeated string tags = 5; + */ + public com.google.protobuf.ByteString + getTagsBytes(int index) { + return tags_.getByteString(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (id_ != null) { + output.writeMessage(1, getId()); + } + if (!getShortDescriptionBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, shortDescription_); + } + if (longDescription_ != null) { + output.writeMessage(3, getLongDescription()); + } + if (sourceCode_ != null) { + output.writeMessage(4, getSourceCode()); + } + for (int i = 0; i < tags_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, tags_.getRaw(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (id_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getId()); + } + if (!getShortDescriptionBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, shortDescription_); + } + if (longDescription_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, getLongDescription()); + } + if (sourceCode_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, getSourceCode()); + } + { + int dataSize = 0; + for (int i = 0; i < tags_.size(); i++) { + dataSize += computeStringSizeNoTag(tags_.getRaw(i)); + } + size += dataSize; + size += 1 * getTagsList().size(); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity)) { + return super.equals(obj); + } + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity other = (flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity) obj; + + if (hasId() != other.hasId()) return false; + if (hasId()) { + if (!getId() + .equals(other.getId())) return false; + } + if (!getShortDescription() + .equals(other.getShortDescription())) return false; + if (hasLongDescription() != other.hasLongDescription()) return false; + if (hasLongDescription()) { + if (!getLongDescription() + .equals(other.getLongDescription())) return false; + } + if (hasSourceCode() != other.hasSourceCode()) return false; + if (hasSourceCode()) { + if (!getSourceCode() + .equals(other.getSourceCode())) return false; + } + if (!getTagsList() + .equals(other.getTagsList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasId()) { + hash = (37 * hash) + ID_FIELD_NUMBER; + hash = (53 * hash) + getId().hashCode(); + } + hash = (37 * hash) + SHORT_DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getShortDescription().hashCode(); + if (hasLongDescription()) { + hash = (37 * hash) + LONG_DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getLongDescription().hashCode(); + } + if (hasSourceCode()) { + hash = (37 * hash) + SOURCE_CODE_FIELD_NUMBER; + hash = (53 * hash) + getSourceCode().hashCode(); + } + if (getTagsCount() > 0) { + hash = (37 * hash) + TAGS_FIELD_NUMBER; + hash = (53 * hash) + getTagsList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * DescriptionEntity contains detailed description for the task/workflow.
+     * Documentation could provide insight into the algorithms, business use case, etc.
+     * 
+ * + * Protobuf type {@code flyteidl.admin.DescriptionEntity} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.admin.DescriptionEntity) + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntity_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntity_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.class, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder.class); + } + + // Construct using flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (idBuilder_ == null) { + id_ = null; + } else { + id_ = null; + idBuilder_ = null; + } + shortDescription_ = ""; + + if (longDescriptionBuilder_ == null) { + longDescription_ = null; + } else { + longDescription_ = null; + longDescriptionBuilder_ = null; + } + if (sourceCodeBuilder_ == null) { + sourceCode_ = null; + } else { + sourceCode_ = null; + sourceCodeBuilder_ = null; + } + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntity_descriptor; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity getDefaultInstanceForType() { + return flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity build() { + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity buildPartial() { + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity result = new flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (idBuilder_ == null) { + result.id_ = id_; + } else { + result.id_ = idBuilder_.build(); + } + result.shortDescription_ = shortDescription_; + if (longDescriptionBuilder_ == null) { + result.longDescription_ = longDescription_; + } else { + result.longDescription_ = longDescriptionBuilder_.build(); + } + if (sourceCodeBuilder_ == null) { + result.sourceCode_ = sourceCode_; + } else { + result.sourceCode_ = sourceCodeBuilder_.build(); + } + if (((bitField0_ & 0x00000010) != 0)) { + tags_ = tags_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000010); + } + result.tags_ = tags_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity) { + return mergeFrom((flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity other) { + if (other == flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.getDefaultInstance()) return this; + if (other.hasId()) { + mergeId(other.getId()); + } + if (!other.getShortDescription().isEmpty()) { + shortDescription_ = other.shortDescription_; + onChanged(); + } + if (other.hasLongDescription()) { + mergeLongDescription(other.getLongDescription()); + } + if (other.hasSourceCode()) { + mergeSourceCode(other.getSourceCode()); + } + if (!other.tags_.isEmpty()) { + if (tags_.isEmpty()) { + tags_ = other.tags_; + bitField0_ = (bitField0_ & ~0x00000010); + } else { + ensureTagsIsMutable(); + tags_.addAll(other.tags_); + } + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private flyteidl.core.IdentifierOuterClass.Identifier id_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.Identifier, flyteidl.core.IdentifierOuterClass.Identifier.Builder, flyteidl.core.IdentifierOuterClass.IdentifierOrBuilder> idBuilder_; + /** + *
+       * id represents the unique identifier of the description entity.
+       * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + public boolean hasId() { + return idBuilder_ != null || id_ != null; + } + /** + *
+       * id represents the unique identifier of the description entity.
+       * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.Identifier getId() { + if (idBuilder_ == null) { + return id_ == null ? flyteidl.core.IdentifierOuterClass.Identifier.getDefaultInstance() : id_; + } else { + return idBuilder_.getMessage(); + } + } + /** + *
+       * id represents the unique identifier of the description entity.
+       * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + public Builder setId(flyteidl.core.IdentifierOuterClass.Identifier value) { + if (idBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + id_ = value; + onChanged(); + } else { + idBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * id represents the unique identifier of the description entity.
+       * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + public Builder setId( + flyteidl.core.IdentifierOuterClass.Identifier.Builder builderForValue) { + if (idBuilder_ == null) { + id_ = builderForValue.build(); + onChanged(); + } else { + idBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * id represents the unique identifier of the description entity.
+       * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + public Builder mergeId(flyteidl.core.IdentifierOuterClass.Identifier value) { + if (idBuilder_ == null) { + if (id_ != null) { + id_ = + flyteidl.core.IdentifierOuterClass.Identifier.newBuilder(id_).mergeFrom(value).buildPartial(); + } else { + id_ = value; + } + onChanged(); + } else { + idBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * id represents the unique identifier of the description entity.
+       * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + public Builder clearId() { + if (idBuilder_ == null) { + id_ = null; + onChanged(); + } else { + id_ = null; + idBuilder_ = null; + } + + return this; + } + /** + *
+       * id represents the unique identifier of the description entity.
+       * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.Identifier.Builder getIdBuilder() { + + onChanged(); + return getIdFieldBuilder().getBuilder(); + } + /** + *
+       * id represents the unique identifier of the description entity.
+       * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.IdentifierOrBuilder getIdOrBuilder() { + if (idBuilder_ != null) { + return idBuilder_.getMessageOrBuilder(); + } else { + return id_ == null ? + flyteidl.core.IdentifierOuterClass.Identifier.getDefaultInstance() : id_; + } + } + /** + *
+       * id represents the unique identifier of the description entity.
+       * 
+ * + * .flyteidl.core.Identifier id = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.Identifier, flyteidl.core.IdentifierOuterClass.Identifier.Builder, flyteidl.core.IdentifierOuterClass.IdentifierOrBuilder> + getIdFieldBuilder() { + if (idBuilder_ == null) { + idBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.Identifier, flyteidl.core.IdentifierOuterClass.Identifier.Builder, flyteidl.core.IdentifierOuterClass.IdentifierOrBuilder>( + getId(), + getParentForChildren(), + isClean()); + id_ = null; + } + return idBuilder_; + } + + private java.lang.Object shortDescription_ = ""; + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 2; + */ + public java.lang.String getShortDescription() { + java.lang.Object ref = shortDescription_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + shortDescription_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 2; + */ + public com.google.protobuf.ByteString + getShortDescriptionBytes() { + java.lang.Object ref = shortDescription_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + shortDescription_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 2; + */ + public Builder setShortDescription( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + shortDescription_ = value; + onChanged(); + return this; + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 2; + */ + public Builder clearShortDescription() { + + shortDescription_ = getDefaultInstance().getShortDescription(); + onChanged(); + return this; + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 2; + */ + public Builder setShortDescriptionBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + shortDescription_ = value; + onChanged(); + return this; + } + + private flyteidl.admin.DescriptionEntityOuterClass.Description longDescription_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.Description, flyteidl.admin.DescriptionEntityOuterClass.Description.Builder, flyteidl.admin.DescriptionEntityOuterClass.DescriptionOrBuilder> longDescriptionBuilder_; + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + public boolean hasLongDescription() { + return longDescriptionBuilder_ != null || longDescription_ != null; + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + public flyteidl.admin.DescriptionEntityOuterClass.Description getLongDescription() { + if (longDescriptionBuilder_ == null) { + return longDescription_ == null ? flyteidl.admin.DescriptionEntityOuterClass.Description.getDefaultInstance() : longDescription_; + } else { + return longDescriptionBuilder_.getMessage(); + } + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + public Builder setLongDescription(flyteidl.admin.DescriptionEntityOuterClass.Description value) { + if (longDescriptionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + longDescription_ = value; + onChanged(); + } else { + longDescriptionBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + public Builder setLongDescription( + flyteidl.admin.DescriptionEntityOuterClass.Description.Builder builderForValue) { + if (longDescriptionBuilder_ == null) { + longDescription_ = builderForValue.build(); + onChanged(); + } else { + longDescriptionBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + public Builder mergeLongDescription(flyteidl.admin.DescriptionEntityOuterClass.Description value) { + if (longDescriptionBuilder_ == null) { + if (longDescription_ != null) { + longDescription_ = + flyteidl.admin.DescriptionEntityOuterClass.Description.newBuilder(longDescription_).mergeFrom(value).buildPartial(); + } else { + longDescription_ = value; + } + onChanged(); + } else { + longDescriptionBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + public Builder clearLongDescription() { + if (longDescriptionBuilder_ == null) { + longDescription_ = null; + onChanged(); + } else { + longDescription_ = null; + longDescriptionBuilder_ = null; + } + + return this; + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + public flyteidl.admin.DescriptionEntityOuterClass.Description.Builder getLongDescriptionBuilder() { + + onChanged(); + return getLongDescriptionFieldBuilder().getBuilder(); + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionOrBuilder getLongDescriptionOrBuilder() { + if (longDescriptionBuilder_ != null) { + return longDescriptionBuilder_.getMessageOrBuilder(); + } else { + return longDescription_ == null ? + flyteidl.admin.DescriptionEntityOuterClass.Description.getDefaultInstance() : longDescription_; + } + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.Description long_description = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.Description, flyteidl.admin.DescriptionEntityOuterClass.Description.Builder, flyteidl.admin.DescriptionEntityOuterClass.DescriptionOrBuilder> + getLongDescriptionFieldBuilder() { + if (longDescriptionBuilder_ == null) { + longDescriptionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.Description, flyteidl.admin.DescriptionEntityOuterClass.Description.Builder, flyteidl.admin.DescriptionEntityOuterClass.DescriptionOrBuilder>( + getLongDescription(), + getParentForChildren(), + isClean()); + longDescription_ = null; + } + return longDescriptionBuilder_; + } + + private flyteidl.admin.DescriptionEntityOuterClass.SourceCode sourceCode_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.SourceCode, flyteidl.admin.DescriptionEntityOuterClass.SourceCode.Builder, flyteidl.admin.DescriptionEntityOuterClass.SourceCodeOrBuilder> sourceCodeBuilder_; + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + public boolean hasSourceCode() { + return sourceCodeBuilder_ != null || sourceCode_ != null; + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + public flyteidl.admin.DescriptionEntityOuterClass.SourceCode getSourceCode() { + if (sourceCodeBuilder_ == null) { + return sourceCode_ == null ? flyteidl.admin.DescriptionEntityOuterClass.SourceCode.getDefaultInstance() : sourceCode_; + } else { + return sourceCodeBuilder_.getMessage(); + } + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + public Builder setSourceCode(flyteidl.admin.DescriptionEntityOuterClass.SourceCode value) { + if (sourceCodeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + sourceCode_ = value; + onChanged(); + } else { + sourceCodeBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + public Builder setSourceCode( + flyteidl.admin.DescriptionEntityOuterClass.SourceCode.Builder builderForValue) { + if (sourceCodeBuilder_ == null) { + sourceCode_ = builderForValue.build(); + onChanged(); + } else { + sourceCodeBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + public Builder mergeSourceCode(flyteidl.admin.DescriptionEntityOuterClass.SourceCode value) { + if (sourceCodeBuilder_ == null) { + if (sourceCode_ != null) { + sourceCode_ = + flyteidl.admin.DescriptionEntityOuterClass.SourceCode.newBuilder(sourceCode_).mergeFrom(value).buildPartial(); + } else { + sourceCode_ = value; + } + onChanged(); + } else { + sourceCodeBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + public Builder clearSourceCode() { + if (sourceCodeBuilder_ == null) { + sourceCode_ = null; + onChanged(); + } else { + sourceCode_ = null; + sourceCodeBuilder_ = null; + } + + return this; + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + public flyteidl.admin.DescriptionEntityOuterClass.SourceCode.Builder getSourceCodeBuilder() { + + onChanged(); + return getSourceCodeFieldBuilder().getBuilder(); + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + public flyteidl.admin.DescriptionEntityOuterClass.SourceCodeOrBuilder getSourceCodeOrBuilder() { + if (sourceCodeBuilder_ != null) { + return sourceCodeBuilder_.getMessageOrBuilder(); + } else { + return sourceCode_ == null ? + flyteidl.admin.DescriptionEntityOuterClass.SourceCode.getDefaultInstance() : sourceCode_; + } + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source_code = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.SourceCode, flyteidl.admin.DescriptionEntityOuterClass.SourceCode.Builder, flyteidl.admin.DescriptionEntityOuterClass.SourceCodeOrBuilder> + getSourceCodeFieldBuilder() { + if (sourceCodeBuilder_ == null) { + sourceCodeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.SourceCode, flyteidl.admin.DescriptionEntityOuterClass.SourceCode.Builder, flyteidl.admin.DescriptionEntityOuterClass.SourceCodeOrBuilder>( + getSourceCode(), + getParentForChildren(), + isClean()); + sourceCode_ = null; + } + return sourceCodeBuilder_; + } + + private com.google.protobuf.LazyStringList tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureTagsIsMutable() { + if (!((bitField0_ & 0x00000010) != 0)) { + tags_ = new com.google.protobuf.LazyStringArrayList(tags_); + bitField0_ |= 0x00000010; + } + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering tasks.
+       * 
+ * + * repeated string tags = 5; + */ + public com.google.protobuf.ProtocolStringList + getTagsList() { + return tags_.getUnmodifiableView(); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering tasks.
+       * 
+ * + * repeated string tags = 5; + */ + public int getTagsCount() { + return tags_.size(); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering tasks.
+       * 
+ * + * repeated string tags = 5; + */ + public java.lang.String getTags(int index) { + return tags_.get(index); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering tasks.
+       * 
+ * + * repeated string tags = 5; + */ + public com.google.protobuf.ByteString + getTagsBytes(int index) { + return tags_.getByteString(index); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering tasks.
+       * 
+ * + * repeated string tags = 5; + */ + public Builder setTags( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagsIsMutable(); + tags_.set(index, value); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering tasks.
+       * 
+ * + * repeated string tags = 5; + */ + public Builder addTags( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagsIsMutable(); + tags_.add(value); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering tasks.
+       * 
+ * + * repeated string tags = 5; + */ + public Builder addAllTags( + java.lang.Iterable values) { + ensureTagsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, tags_); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering tasks.
+       * 
+ * + * repeated string tags = 5; + */ + public Builder clearTags() { + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering tasks.
+       * 
+ * + * repeated string tags = 5; + */ + public Builder addTagsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureTagsIsMutable(); + tags_.add(value); + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.admin.DescriptionEntity) + } + + // @@protoc_insertion_point(class_scope:flyteidl.admin.DescriptionEntity) + private static final flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity(); + } + + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DescriptionEntity parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new DescriptionEntity(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface DescriptionOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.admin.Description) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * long description - no more than 4KB
+     * 
+ * + * string value = 1; + */ + java.lang.String getValue(); + /** + *
+     * long description - no more than 4KB
+     * 
+ * + * string value = 1; + */ + com.google.protobuf.ByteString + getValueBytes(); + + /** + *
+     * if the description sizes exceed some threshold we can offload the entire
+     * description proto altogether to an external data store, like S3 rather than store inline in the db
+     * 
+ * + * string uri = 2; + */ + java.lang.String getUri(); + /** + *
+     * if the description sizes exceed some threshold we can offload the entire
+     * description proto altogether to an external data store, like S3 rather than store inline in the db
+     * 
+ * + * string uri = 2; + */ + com.google.protobuf.ByteString + getUriBytes(); + + /** + *
+     * Format of the long description
+     * 
+ * + * .flyteidl.admin.DescriptionFormat format = 3; + */ + int getFormatValue(); + /** + *
+     * Format of the long description
+     * 
+ * + * .flyteidl.admin.DescriptionFormat format = 3; + */ + flyteidl.admin.DescriptionEntityOuterClass.DescriptionFormat getFormat(); + + /** + *
+     * Optional link to an icon for the entity
+     * 
+ * + * string icon_link = 4; + */ + java.lang.String getIconLink(); + /** + *
+     * Optional link to an icon for the entity
+     * 
+ * + * string icon_link = 4; + */ + com.google.protobuf.ByteString + getIconLinkBytes(); + + public flyteidl.admin.DescriptionEntityOuterClass.Description.ContentCase getContentCase(); + } + /** + *
+   * Full user description with formatting preserved. This can be rendered
+   * by clients, such as the console or command line tools with in-tact
+   * formatting.
+   * 
+ * + * Protobuf type {@code flyteidl.admin.Description} + */ + public static final class Description extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.admin.Description) + DescriptionOrBuilder { + private static final long serialVersionUID = 0L; + // Use Description.newBuilder() to construct. + private Description(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Description() { + format_ = 0; + iconLink_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Description( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + contentCase_ = 1; + content_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + contentCase_ = 2; + content_ = s; + break; + } + case 24: { + int rawValue = input.readEnum(); + + format_ = rawValue; + break; + } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + + iconLink_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_Description_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_Description_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.DescriptionEntityOuterClass.Description.class, flyteidl.admin.DescriptionEntityOuterClass.Description.Builder.class); + } + + private int contentCase_ = 0; + private java.lang.Object content_; + public enum ContentCase + implements com.google.protobuf.Internal.EnumLite { + VALUE(1), + URI(2), + CONTENT_NOT_SET(0); + private final int value; + private ContentCase(int value) { + this.value = value; + } + /** + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static ContentCase valueOf(int value) { + return forNumber(value); + } + + public static ContentCase forNumber(int value) { + switch (value) { + case 1: return VALUE; + case 2: return URI; + case 0: return CONTENT_NOT_SET; + default: return null; + } + } + public int getNumber() { + return this.value; + } + }; + + public ContentCase + getContentCase() { + return ContentCase.forNumber( + contentCase_); + } + + public static final int VALUE_FIELD_NUMBER = 1; + /** + *
+     * long description - no more than 4KB
+     * 
+ * + * string value = 1; + */ + public java.lang.String getValue() { + java.lang.Object ref = ""; + if (contentCase_ == 1) { + ref = content_; + } + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (contentCase_ == 1) { + content_ = s; + } + return s; + } + } + /** + *
+     * long description - no more than 4KB
+     * 
+ * + * string value = 1; + */ + public com.google.protobuf.ByteString + getValueBytes() { + java.lang.Object ref = ""; + if (contentCase_ == 1) { + ref = content_; + } + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + if (contentCase_ == 1) { + content_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int URI_FIELD_NUMBER = 2; + /** + *
+     * if the description sizes exceed some threshold we can offload the entire
+     * description proto altogether to an external data store, like S3 rather than store inline in the db
+     * 
+ * + * string uri = 2; + */ + public java.lang.String getUri() { + java.lang.Object ref = ""; + if (contentCase_ == 2) { + ref = content_; + } + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (contentCase_ == 2) { + content_ = s; + } + return s; + } + } + /** + *
+     * if the description sizes exceed some threshold we can offload the entire
+     * description proto altogether to an external data store, like S3 rather than store inline in the db
+     * 
+ * + * string uri = 2; + */ + public com.google.protobuf.ByteString + getUriBytes() { + java.lang.Object ref = ""; + if (contentCase_ == 2) { + ref = content_; + } + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + if (contentCase_ == 2) { + content_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int FORMAT_FIELD_NUMBER = 3; + private int format_; + /** + *
+     * Format of the long description
+     * 
+ * + * .flyteidl.admin.DescriptionFormat format = 3; + */ + public int getFormatValue() { + return format_; + } + /** + *
+     * Format of the long description
+     * 
+ * + * .flyteidl.admin.DescriptionFormat format = 3; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionFormat getFormat() { + @SuppressWarnings("deprecation") + flyteidl.admin.DescriptionEntityOuterClass.DescriptionFormat result = flyteidl.admin.DescriptionEntityOuterClass.DescriptionFormat.valueOf(format_); + return result == null ? flyteidl.admin.DescriptionEntityOuterClass.DescriptionFormat.UNRECOGNIZED : result; + } + + public static final int ICON_LINK_FIELD_NUMBER = 4; + private volatile java.lang.Object iconLink_; + /** + *
+     * Optional link to an icon for the entity
+     * 
+ * + * string icon_link = 4; + */ + public java.lang.String getIconLink() { + java.lang.Object ref = iconLink_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + iconLink_ = s; + return s; + } + } + /** + *
+     * Optional link to an icon for the entity
+     * 
+ * + * string icon_link = 4; + */ + public com.google.protobuf.ByteString + getIconLinkBytes() { + java.lang.Object ref = iconLink_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + iconLink_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (contentCase_ == 1) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, content_); + } + if (contentCase_ == 2) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, content_); + } + if (format_ != flyteidl.admin.DescriptionEntityOuterClass.DescriptionFormat.DESCRIPTION_FORMAT_UNKNOWN.getNumber()) { + output.writeEnum(3, format_); + } + if (!getIconLinkBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, iconLink_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (contentCase_ == 1) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, content_); + } + if (contentCase_ == 2) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, content_); + } + if (format_ != flyteidl.admin.DescriptionEntityOuterClass.DescriptionFormat.DESCRIPTION_FORMAT_UNKNOWN.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(3, format_); + } + if (!getIconLinkBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, iconLink_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.admin.DescriptionEntityOuterClass.Description)) { + return super.equals(obj); + } + flyteidl.admin.DescriptionEntityOuterClass.Description other = (flyteidl.admin.DescriptionEntityOuterClass.Description) obj; + + if (format_ != other.format_) return false; + if (!getIconLink() + .equals(other.getIconLink())) return false; + if (!getContentCase().equals(other.getContentCase())) return false; + switch (contentCase_) { + case 1: + if (!getValue() + .equals(other.getValue())) return false; + break; + case 2: + if (!getUri() + .equals(other.getUri())) return false; + break; + case 0: + default: + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + FORMAT_FIELD_NUMBER; + hash = (53 * hash) + format_; + hash = (37 * hash) + ICON_LINK_FIELD_NUMBER; + hash = (53 * hash) + getIconLink().hashCode(); + switch (contentCase_) { + case 1: + hash = (37 * hash) + VALUE_FIELD_NUMBER; + hash = (53 * hash) + getValue().hashCode(); + break; + case 2: + hash = (37 * hash) + URI_FIELD_NUMBER; + hash = (53 * hash) + getUri().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.admin.DescriptionEntityOuterClass.Description parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.Description parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.Description parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.Description parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.Description parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.Description parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.Description parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.Description parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.Description parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.Description parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.Description parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.Description parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.admin.DescriptionEntityOuterClass.Description prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Full user description with formatting preserved. This can be rendered
+     * by clients, such as the console or command line tools with in-tact
+     * formatting.
+     * 
+ * + * Protobuf type {@code flyteidl.admin.Description} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.admin.Description) + flyteidl.admin.DescriptionEntityOuterClass.DescriptionOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_Description_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_Description_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.DescriptionEntityOuterClass.Description.class, flyteidl.admin.DescriptionEntityOuterClass.Description.Builder.class); + } + + // Construct using flyteidl.admin.DescriptionEntityOuterClass.Description.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + format_ = 0; + + iconLink_ = ""; + + contentCase_ = 0; + content_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_Description_descriptor; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.Description getDefaultInstanceForType() { + return flyteidl.admin.DescriptionEntityOuterClass.Description.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.Description build() { + flyteidl.admin.DescriptionEntityOuterClass.Description result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.Description buildPartial() { + flyteidl.admin.DescriptionEntityOuterClass.Description result = new flyteidl.admin.DescriptionEntityOuterClass.Description(this); + if (contentCase_ == 1) { + result.content_ = content_; + } + if (contentCase_ == 2) { + result.content_ = content_; + } + result.format_ = format_; + result.iconLink_ = iconLink_; + result.contentCase_ = contentCase_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.admin.DescriptionEntityOuterClass.Description) { + return mergeFrom((flyteidl.admin.DescriptionEntityOuterClass.Description)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.admin.DescriptionEntityOuterClass.Description other) { + if (other == flyteidl.admin.DescriptionEntityOuterClass.Description.getDefaultInstance()) return this; + if (other.format_ != 0) { + setFormatValue(other.getFormatValue()); + } + if (!other.getIconLink().isEmpty()) { + iconLink_ = other.iconLink_; + onChanged(); + } + switch (other.getContentCase()) { + case VALUE: { + contentCase_ = 1; + content_ = other.content_; + onChanged(); + break; + } + case URI: { + contentCase_ = 2; + content_ = other.content_; + onChanged(); + break; + } + case CONTENT_NOT_SET: { + break; + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.admin.DescriptionEntityOuterClass.Description parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.admin.DescriptionEntityOuterClass.Description) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int contentCase_ = 0; + private java.lang.Object content_; + public ContentCase + getContentCase() { + return ContentCase.forNumber( + contentCase_); + } + + public Builder clearContent() { + contentCase_ = 0; + content_ = null; + onChanged(); + return this; + } + + + /** + *
+       * long description - no more than 4KB
+       * 
+ * + * string value = 1; + */ + public java.lang.String getValue() { + java.lang.Object ref = ""; + if (contentCase_ == 1) { + ref = content_; + } + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (contentCase_ == 1) { + content_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * long description - no more than 4KB
+       * 
+ * + * string value = 1; + */ + public com.google.protobuf.ByteString + getValueBytes() { + java.lang.Object ref = ""; + if (contentCase_ == 1) { + ref = content_; + } + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + if (contentCase_ == 1) { + content_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * long description - no more than 4KB
+       * 
+ * + * string value = 1; + */ + public Builder setValue( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + contentCase_ = 1; + content_ = value; + onChanged(); + return this; + } + /** + *
+       * long description - no more than 4KB
+       * 
+ * + * string value = 1; + */ + public Builder clearValue() { + if (contentCase_ == 1) { + contentCase_ = 0; + content_ = null; + onChanged(); + } + return this; + } + /** + *
+       * long description - no more than 4KB
+       * 
+ * + * string value = 1; + */ + public Builder setValueBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + contentCase_ = 1; + content_ = value; + onChanged(); + return this; + } + + /** + *
+       * if the description sizes exceed some threshold we can offload the entire
+       * description proto altogether to an external data store, like S3 rather than store inline in the db
+       * 
+ * + * string uri = 2; + */ + public java.lang.String getUri() { + java.lang.Object ref = ""; + if (contentCase_ == 2) { + ref = content_; + } + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (contentCase_ == 2) { + content_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * if the description sizes exceed some threshold we can offload the entire
+       * description proto altogether to an external data store, like S3 rather than store inline in the db
+       * 
+ * + * string uri = 2; + */ + public com.google.protobuf.ByteString + getUriBytes() { + java.lang.Object ref = ""; + if (contentCase_ == 2) { + ref = content_; + } + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + if (contentCase_ == 2) { + content_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * if the description sizes exceed some threshold we can offload the entire
+       * description proto altogether to an external data store, like S3 rather than store inline in the db
+       * 
+ * + * string uri = 2; + */ + public Builder setUri( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + contentCase_ = 2; + content_ = value; + onChanged(); + return this; + } + /** + *
+       * if the description sizes exceed some threshold we can offload the entire
+       * description proto altogether to an external data store, like S3 rather than store inline in the db
+       * 
+ * + * string uri = 2; + */ + public Builder clearUri() { + if (contentCase_ == 2) { + contentCase_ = 0; + content_ = null; + onChanged(); + } + return this; + } + /** + *
+       * if the description sizes exceed some threshold we can offload the entire
+       * description proto altogether to an external data store, like S3 rather than store inline in the db
+       * 
+ * + * string uri = 2; + */ + public Builder setUriBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + contentCase_ = 2; + content_ = value; + onChanged(); + return this; + } + + private int format_ = 0; + /** + *
+       * Format of the long description
+       * 
+ * + * .flyteidl.admin.DescriptionFormat format = 3; + */ + public int getFormatValue() { + return format_; + } + /** + *
+       * Format of the long description
+       * 
+ * + * .flyteidl.admin.DescriptionFormat format = 3; + */ + public Builder setFormatValue(int value) { + format_ = value; + onChanged(); + return this; + } + /** + *
+       * Format of the long description
+       * 
+ * + * .flyteidl.admin.DescriptionFormat format = 3; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionFormat getFormat() { + @SuppressWarnings("deprecation") + flyteidl.admin.DescriptionEntityOuterClass.DescriptionFormat result = flyteidl.admin.DescriptionEntityOuterClass.DescriptionFormat.valueOf(format_); + return result == null ? flyteidl.admin.DescriptionEntityOuterClass.DescriptionFormat.UNRECOGNIZED : result; + } + /** + *
+       * Format of the long description
+       * 
+ * + * .flyteidl.admin.DescriptionFormat format = 3; + */ + public Builder setFormat(flyteidl.admin.DescriptionEntityOuterClass.DescriptionFormat value) { + if (value == null) { + throw new NullPointerException(); + } + + format_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * Format of the long description
+       * 
+ * + * .flyteidl.admin.DescriptionFormat format = 3; + */ + public Builder clearFormat() { + + format_ = 0; + onChanged(); + return this; + } + + private java.lang.Object iconLink_ = ""; + /** + *
+       * Optional link to an icon for the entity
+       * 
+ * + * string icon_link = 4; + */ + public java.lang.String getIconLink() { + java.lang.Object ref = iconLink_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + iconLink_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * Optional link to an icon for the entity
+       * 
+ * + * string icon_link = 4; + */ + public com.google.protobuf.ByteString + getIconLinkBytes() { + java.lang.Object ref = iconLink_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + iconLink_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * Optional link to an icon for the entity
+       * 
+ * + * string icon_link = 4; + */ + public Builder setIconLink( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + iconLink_ = value; + onChanged(); + return this; + } + /** + *
+       * Optional link to an icon for the entity
+       * 
+ * + * string icon_link = 4; + */ + public Builder clearIconLink() { + + iconLink_ = getDefaultInstance().getIconLink(); + onChanged(); + return this; + } + /** + *
+       * Optional link to an icon for the entity
+       * 
+ * + * string icon_link = 4; + */ + public Builder setIconLinkBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + iconLink_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.admin.Description) + } + + // @@protoc_insertion_point(class_scope:flyteidl.admin.Description) + private static final flyteidl.admin.DescriptionEntityOuterClass.Description DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.admin.DescriptionEntityOuterClass.Description(); + } + + public static flyteidl.admin.DescriptionEntityOuterClass.Description getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Description parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Description(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.Description getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SourceCodeOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.admin.SourceCode) + com.google.protobuf.MessageOrBuilder { + + /** + * string link = 1; + */ + java.lang.String getLink(); + /** + * string link = 1; + */ + com.google.protobuf.ByteString + getLinkBytes(); + } + /** + *
+   * Link to source code used to define this entity
+   * 
+ * + * Protobuf type {@code flyteidl.admin.SourceCode} + */ + public static final class SourceCode extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.admin.SourceCode) + SourceCodeOrBuilder { + private static final long serialVersionUID = 0L; + // Use SourceCode.newBuilder() to construct. + private SourceCode(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SourceCode() { + link_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private SourceCode( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + link_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_SourceCode_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_SourceCode_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.DescriptionEntityOuterClass.SourceCode.class, flyteidl.admin.DescriptionEntityOuterClass.SourceCode.Builder.class); + } + + public static final int LINK_FIELD_NUMBER = 1; + private volatile java.lang.Object link_; + /** + * string link = 1; + */ + public java.lang.String getLink() { + java.lang.Object ref = link_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + link_ = s; + return s; + } + } + /** + * string link = 1; + */ + public com.google.protobuf.ByteString + getLinkBytes() { + java.lang.Object ref = link_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + link_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getLinkBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, link_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getLinkBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, link_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.admin.DescriptionEntityOuterClass.SourceCode)) { + return super.equals(obj); + } + flyteidl.admin.DescriptionEntityOuterClass.SourceCode other = (flyteidl.admin.DescriptionEntityOuterClass.SourceCode) obj; + + if (!getLink() + .equals(other.getLink())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + LINK_FIELD_NUMBER; + hash = (53 * hash) + getLink().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.admin.DescriptionEntityOuterClass.SourceCode parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.SourceCode parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.SourceCode parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.SourceCode parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.SourceCode parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.SourceCode parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.SourceCode parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.SourceCode parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.SourceCode parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.SourceCode parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.SourceCode parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.SourceCode parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.admin.DescriptionEntityOuterClass.SourceCode prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Link to source code used to define this entity
+     * 
+ * + * Protobuf type {@code flyteidl.admin.SourceCode} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.admin.SourceCode) + flyteidl.admin.DescriptionEntityOuterClass.SourceCodeOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_SourceCode_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_SourceCode_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.DescriptionEntityOuterClass.SourceCode.class, flyteidl.admin.DescriptionEntityOuterClass.SourceCode.Builder.class); + } + + // Construct using flyteidl.admin.DescriptionEntityOuterClass.SourceCode.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + link_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_SourceCode_descriptor; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.SourceCode getDefaultInstanceForType() { + return flyteidl.admin.DescriptionEntityOuterClass.SourceCode.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.SourceCode build() { + flyteidl.admin.DescriptionEntityOuterClass.SourceCode result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.SourceCode buildPartial() { + flyteidl.admin.DescriptionEntityOuterClass.SourceCode result = new flyteidl.admin.DescriptionEntityOuterClass.SourceCode(this); + result.link_ = link_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.admin.DescriptionEntityOuterClass.SourceCode) { + return mergeFrom((flyteidl.admin.DescriptionEntityOuterClass.SourceCode)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.admin.DescriptionEntityOuterClass.SourceCode other) { + if (other == flyteidl.admin.DescriptionEntityOuterClass.SourceCode.getDefaultInstance()) return this; + if (!other.getLink().isEmpty()) { + link_ = other.link_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.admin.DescriptionEntityOuterClass.SourceCode parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.admin.DescriptionEntityOuterClass.SourceCode) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object link_ = ""; + /** + * string link = 1; + */ + public java.lang.String getLink() { + java.lang.Object ref = link_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + link_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string link = 1; + */ + public com.google.protobuf.ByteString + getLinkBytes() { + java.lang.Object ref = link_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + link_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string link = 1; + */ + public Builder setLink( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + link_ = value; + onChanged(); + return this; + } + /** + * string link = 1; + */ + public Builder clearLink() { + + link_ = getDefaultInstance().getLink(); + onChanged(); + return this; + } + /** + * string link = 1; + */ + public Builder setLinkBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + link_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.admin.SourceCode) + } + + // @@protoc_insertion_point(class_scope:flyteidl.admin.SourceCode) + private static final flyteidl.admin.DescriptionEntityOuterClass.SourceCode DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.admin.DescriptionEntityOuterClass.SourceCode(); + } + + public static flyteidl.admin.DescriptionEntityOuterClass.SourceCode getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SourceCode parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new SourceCode(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.SourceCode getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface DescriptionEntityListOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.admin.DescriptionEntityList) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * A list of DescriptionEntities returned based on the request.
+     * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + java.util.List + getDescriptionEntitiesList(); + /** + *
+     * A list of DescriptionEntities returned based on the request.
+     * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity getDescriptionEntities(int index); + /** + *
+     * A list of DescriptionEntities returned based on the request.
+     * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + int getDescriptionEntitiesCount(); + /** + *
+     * A list of DescriptionEntities returned based on the request.
+     * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + java.util.List + getDescriptionEntitiesOrBuilderList(); + /** + *
+     * A list of DescriptionEntities returned based on the request.
+     * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder getDescriptionEntitiesOrBuilder( + int index); + + /** + *
+     * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+     * in a query. If there are no more results, this value will be empty.
+     * 
+ * + * string token = 2; + */ + java.lang.String getToken(); + /** + *
+     * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+     * in a query. If there are no more results, this value will be empty.
+     * 
+ * + * string token = 2; + */ + com.google.protobuf.ByteString + getTokenBytes(); + } + /** + *
+   * Represents a list of DescriptionEntities returned from the admin.
+   * See :ref:`ref_flyteidl.admin.DescriptionEntity` for more details
+   * 
+ * + * Protobuf type {@code flyteidl.admin.DescriptionEntityList} + */ + public static final class DescriptionEntityList extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.admin.DescriptionEntityList) + DescriptionEntityListOrBuilder { + private static final long serialVersionUID = 0L; + // Use DescriptionEntityList.newBuilder() to construct. + private DescriptionEntityList(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DescriptionEntityList() { + descriptionEntities_ = java.util.Collections.emptyList(); + token_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private DescriptionEntityList( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + descriptionEntities_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + descriptionEntities_.add( + input.readMessage(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.parser(), extensionRegistry)); + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + token_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + descriptionEntities_ = java.util.Collections.unmodifiableList(descriptionEntities_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntityList_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntityList_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList.class, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList.Builder.class); + } + + private int bitField0_; + public static final int DESCRIPTIONENTITIES_FIELD_NUMBER = 1; + private java.util.List descriptionEntities_; + /** + *
+     * A list of DescriptionEntities returned based on the request.
+     * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public java.util.List getDescriptionEntitiesList() { + return descriptionEntities_; + } + /** + *
+     * A list of DescriptionEntities returned based on the request.
+     * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public java.util.List + getDescriptionEntitiesOrBuilderList() { + return descriptionEntities_; + } + /** + *
+     * A list of DescriptionEntities returned based on the request.
+     * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public int getDescriptionEntitiesCount() { + return descriptionEntities_.size(); + } + /** + *
+     * A list of DescriptionEntities returned based on the request.
+     * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity getDescriptionEntities(int index) { + return descriptionEntities_.get(index); + } + /** + *
+     * A list of DescriptionEntities returned based on the request.
+     * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder getDescriptionEntitiesOrBuilder( + int index) { + return descriptionEntities_.get(index); + } + + public static final int TOKEN_FIELD_NUMBER = 2; + private volatile java.lang.Object token_; + /** + *
+     * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+     * in a query. If there are no more results, this value will be empty.
+     * 
+ * + * string token = 2; + */ + public java.lang.String getToken() { + java.lang.Object ref = token_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + token_ = s; + return s; + } + } + /** + *
+     * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+     * in a query. If there are no more results, this value will be empty.
+     * 
+ * + * string token = 2; + */ + public com.google.protobuf.ByteString + getTokenBytes() { + java.lang.Object ref = token_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + token_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + for (int i = 0; i < descriptionEntities_.size(); i++) { + output.writeMessage(1, descriptionEntities_.get(i)); + } + if (!getTokenBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, token_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < descriptionEntities_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, descriptionEntities_.get(i)); + } + if (!getTokenBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, token_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList)) { + return super.equals(obj); + } + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList other = (flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList) obj; + + if (!getDescriptionEntitiesList() + .equals(other.getDescriptionEntitiesList())) return false; + if (!getToken() + .equals(other.getToken())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getDescriptionEntitiesCount() > 0) { + hash = (37 * hash) + DESCRIPTIONENTITIES_FIELD_NUMBER; + hash = (53 * hash) + getDescriptionEntitiesList().hashCode(); + } + hash = (37 * hash) + TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getToken().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Represents a list of DescriptionEntities returned from the admin.
+     * See :ref:`ref_flyteidl.admin.DescriptionEntity` for more details
+     * 
+ * + * Protobuf type {@code flyteidl.admin.DescriptionEntityList} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.admin.DescriptionEntityList) + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntityList_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntityList_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList.class, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList.Builder.class); + } + + // Construct using flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getDescriptionEntitiesFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (descriptionEntitiesBuilder_ == null) { + descriptionEntities_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + descriptionEntitiesBuilder_.clear(); + } + token_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntityList_descriptor; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList getDefaultInstanceForType() { + return flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList build() { + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList buildPartial() { + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList result = new flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (descriptionEntitiesBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + descriptionEntities_ = java.util.Collections.unmodifiableList(descriptionEntities_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.descriptionEntities_ = descriptionEntities_; + } else { + result.descriptionEntities_ = descriptionEntitiesBuilder_.build(); + } + result.token_ = token_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList) { + return mergeFrom((flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList other) { + if (other == flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList.getDefaultInstance()) return this; + if (descriptionEntitiesBuilder_ == null) { + if (!other.descriptionEntities_.isEmpty()) { + if (descriptionEntities_.isEmpty()) { + descriptionEntities_ = other.descriptionEntities_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureDescriptionEntitiesIsMutable(); + descriptionEntities_.addAll(other.descriptionEntities_); + } + onChanged(); + } + } else { + if (!other.descriptionEntities_.isEmpty()) { + if (descriptionEntitiesBuilder_.isEmpty()) { + descriptionEntitiesBuilder_.dispose(); + descriptionEntitiesBuilder_ = null; + descriptionEntities_ = other.descriptionEntities_; + bitField0_ = (bitField0_ & ~0x00000001); + descriptionEntitiesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getDescriptionEntitiesFieldBuilder() : null; + } else { + descriptionEntitiesBuilder_.addAllMessages(other.descriptionEntities_); + } + } + } + if (!other.getToken().isEmpty()) { + token_ = other.token_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.util.List descriptionEntities_ = + java.util.Collections.emptyList(); + private void ensureDescriptionEntitiesIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + descriptionEntities_ = new java.util.ArrayList(descriptionEntities_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder> descriptionEntitiesBuilder_; + + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public java.util.List getDescriptionEntitiesList() { + if (descriptionEntitiesBuilder_ == null) { + return java.util.Collections.unmodifiableList(descriptionEntities_); + } else { + return descriptionEntitiesBuilder_.getMessageList(); + } + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public int getDescriptionEntitiesCount() { + if (descriptionEntitiesBuilder_ == null) { + return descriptionEntities_.size(); + } else { + return descriptionEntitiesBuilder_.getCount(); + } + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity getDescriptionEntities(int index) { + if (descriptionEntitiesBuilder_ == null) { + return descriptionEntities_.get(index); + } else { + return descriptionEntitiesBuilder_.getMessage(index); + } + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public Builder setDescriptionEntities( + int index, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity value) { + if (descriptionEntitiesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDescriptionEntitiesIsMutable(); + descriptionEntities_.set(index, value); + onChanged(); + } else { + descriptionEntitiesBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public Builder setDescriptionEntities( + int index, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder builderForValue) { + if (descriptionEntitiesBuilder_ == null) { + ensureDescriptionEntitiesIsMutable(); + descriptionEntities_.set(index, builderForValue.build()); + onChanged(); + } else { + descriptionEntitiesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public Builder addDescriptionEntities(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity value) { + if (descriptionEntitiesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDescriptionEntitiesIsMutable(); + descriptionEntities_.add(value); + onChanged(); + } else { + descriptionEntitiesBuilder_.addMessage(value); + } + return this; + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public Builder addDescriptionEntities( + int index, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity value) { + if (descriptionEntitiesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDescriptionEntitiesIsMutable(); + descriptionEntities_.add(index, value); + onChanged(); + } else { + descriptionEntitiesBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public Builder addDescriptionEntities( + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder builderForValue) { + if (descriptionEntitiesBuilder_ == null) { + ensureDescriptionEntitiesIsMutable(); + descriptionEntities_.add(builderForValue.build()); + onChanged(); + } else { + descriptionEntitiesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public Builder addDescriptionEntities( + int index, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder builderForValue) { + if (descriptionEntitiesBuilder_ == null) { + ensureDescriptionEntitiesIsMutable(); + descriptionEntities_.add(index, builderForValue.build()); + onChanged(); + } else { + descriptionEntitiesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public Builder addAllDescriptionEntities( + java.lang.Iterable values) { + if (descriptionEntitiesBuilder_ == null) { + ensureDescriptionEntitiesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, descriptionEntities_); + onChanged(); + } else { + descriptionEntitiesBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public Builder clearDescriptionEntities() { + if (descriptionEntitiesBuilder_ == null) { + descriptionEntities_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + descriptionEntitiesBuilder_.clear(); + } + return this; + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public Builder removeDescriptionEntities(int index) { + if (descriptionEntitiesBuilder_ == null) { + ensureDescriptionEntitiesIsMutable(); + descriptionEntities_.remove(index); + onChanged(); + } else { + descriptionEntitiesBuilder_.remove(index); + } + return this; + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder getDescriptionEntitiesBuilder( + int index) { + return getDescriptionEntitiesFieldBuilder().getBuilder(index); + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder getDescriptionEntitiesOrBuilder( + int index) { + if (descriptionEntitiesBuilder_ == null) { + return descriptionEntities_.get(index); } else { + return descriptionEntitiesBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public java.util.List + getDescriptionEntitiesOrBuilderList() { + if (descriptionEntitiesBuilder_ != null) { + return descriptionEntitiesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(descriptionEntities_); + } + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder addDescriptionEntitiesBuilder() { + return getDescriptionEntitiesFieldBuilder().addBuilder( + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.getDefaultInstance()); + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder addDescriptionEntitiesBuilder( + int index) { + return getDescriptionEntitiesFieldBuilder().addBuilder( + index, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.getDefaultInstance()); + } + /** + *
+       * A list of DescriptionEntities returned based on the request.
+       * 
+ * + * repeated .flyteidl.admin.DescriptionEntity descriptionEntities = 1; + */ + public java.util.List + getDescriptionEntitiesBuilderList() { + return getDescriptionEntitiesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder> + getDescriptionEntitiesFieldBuilder() { + if (descriptionEntitiesBuilder_ == null) { + descriptionEntitiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder>( + descriptionEntities_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + descriptionEntities_ = null; + } + return descriptionEntitiesBuilder_; + } + + private java.lang.Object token_ = ""; + /** + *
+       * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+       * in a query. If there are no more results, this value will be empty.
+       * 
+ * + * string token = 2; + */ + public java.lang.String getToken() { + java.lang.Object ref = token_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + token_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+       * in a query. If there are no more results, this value will be empty.
+       * 
+ * + * string token = 2; + */ + public com.google.protobuf.ByteString + getTokenBytes() { + java.lang.Object ref = token_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + token_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+       * in a query. If there are no more results, this value will be empty.
+       * 
+ * + * string token = 2; + */ + public Builder setToken( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + token_ = value; + onChanged(); + return this; + } + /** + *
+       * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+       * in a query. If there are no more results, this value will be empty.
+       * 
+ * + * string token = 2; + */ + public Builder clearToken() { + + token_ = getDefaultInstance().getToken(); + onChanged(); + return this; + } + /** + *
+       * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+       * in a query. If there are no more results, this value will be empty.
+       * 
+ * + * string token = 2; + */ + public Builder setTokenBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + token_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.admin.DescriptionEntityList) + } + + // @@protoc_insertion_point(class_scope:flyteidl.admin.DescriptionEntityList) + private static final flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList(); + } + + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DescriptionEntityList parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new DescriptionEntityList(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityList getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface DescriptionEntityListRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.admin.DescriptionEntityListRequest) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * Identifies the specific type of resource that this identifier corresponds to.
+     * 
+ * + * .flyteidl.core.ResourceType resource_type = 1; + */ + int getResourceTypeValue(); + /** + *
+     * Identifies the specific type of resource that this identifier corresponds to.
+     * 
+ * + * .flyteidl.core.ResourceType resource_type = 1; + */ + flyteidl.core.IdentifierOuterClass.ResourceType getResourceType(); + + /** + *
+     * The identifier for the description entity.
+     * +required
+     * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + boolean hasId(); + /** + *
+     * The identifier for the description entity.
+     * +required
+     * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + flyteidl.admin.Common.NamedEntityIdentifier getId(); + /** + *
+     * The identifier for the description entity.
+     * +required
+     * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + flyteidl.admin.Common.NamedEntityIdentifierOrBuilder getIdOrBuilder(); + + /** + *
+     * Indicates the number of resources to be returned.
+     * +required
+     * 
+ * + * uint32 limit = 3; + */ + int getLimit(); + + /** + *
+     * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+     * in a query.
+     * +optional
+     * 
+ * + * string token = 4; + */ + java.lang.String getToken(); + /** + *
+     * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+     * in a query.
+     * +optional
+     * 
+ * + * string token = 4; + */ + com.google.protobuf.ByteString + getTokenBytes(); + + /** + *
+     * Indicates a list of filters passed as string.
+     * More info on constructing filters : <Link>
+     * +optional
+     * 
+ * + * string filters = 5; + */ + java.lang.String getFilters(); + /** + *
+     * Indicates a list of filters passed as string.
+     * More info on constructing filters : <Link>
+     * +optional
+     * 
+ * + * string filters = 5; + */ + com.google.protobuf.ByteString + getFiltersBytes(); + + /** + *
+     * Sort ordering for returned list.
+     * +optional
+     * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + boolean hasSortBy(); + /** + *
+     * Sort ordering for returned list.
+     * +optional
+     * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + flyteidl.admin.Common.Sort getSortBy(); + /** + *
+     * Sort ordering for returned list.
+     * +optional
+     * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + flyteidl.admin.Common.SortOrBuilder getSortByOrBuilder(); + } + /** + *
+   * Represents a request structure to retrieve a list of DescriptionEntities.
+   * See :ref:`ref_flyteidl.admin.DescriptionEntity` for more details
+   * 
+ * + * Protobuf type {@code flyteidl.admin.DescriptionEntityListRequest} + */ + public static final class DescriptionEntityListRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.admin.DescriptionEntityListRequest) + DescriptionEntityListRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use DescriptionEntityListRequest.newBuilder() to construct. + private DescriptionEntityListRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DescriptionEntityListRequest() { + resourceType_ = 0; + token_ = ""; + filters_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private DescriptionEntityListRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + int rawValue = input.readEnum(); + + resourceType_ = rawValue; + break; + } + case 18: { + flyteidl.admin.Common.NamedEntityIdentifier.Builder subBuilder = null; + if (id_ != null) { + subBuilder = id_.toBuilder(); + } + id_ = input.readMessage(flyteidl.admin.Common.NamedEntityIdentifier.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(id_); + id_ = subBuilder.buildPartial(); + } + + break; + } + case 24: { + + limit_ = input.readUInt32(); + break; + } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + + token_ = s; + break; + } + case 42: { + java.lang.String s = input.readStringRequireUtf8(); + + filters_ = s; + break; + } + case 50: { + flyteidl.admin.Common.Sort.Builder subBuilder = null; + if (sortBy_ != null) { + subBuilder = sortBy_.toBuilder(); + } + sortBy_ = input.readMessage(flyteidl.admin.Common.Sort.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(sortBy_); + sortBy_ = subBuilder.buildPartial(); + } + + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntityListRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntityListRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest.class, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest.Builder.class); + } + + public static final int RESOURCE_TYPE_FIELD_NUMBER = 1; + private int resourceType_; + /** + *
+     * Identifies the specific type of resource that this identifier corresponds to.
+     * 
+ * + * .flyteidl.core.ResourceType resource_type = 1; + */ + public int getResourceTypeValue() { + return resourceType_; + } + /** + *
+     * Identifies the specific type of resource that this identifier corresponds to.
+     * 
+ * + * .flyteidl.core.ResourceType resource_type = 1; + */ + public flyteidl.core.IdentifierOuterClass.ResourceType getResourceType() { + @SuppressWarnings("deprecation") + flyteidl.core.IdentifierOuterClass.ResourceType result = flyteidl.core.IdentifierOuterClass.ResourceType.valueOf(resourceType_); + return result == null ? flyteidl.core.IdentifierOuterClass.ResourceType.UNRECOGNIZED : result; + } + + public static final int ID_FIELD_NUMBER = 2; + private flyteidl.admin.Common.NamedEntityIdentifier id_; + /** + *
+     * The identifier for the description entity.
+     * +required
+     * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + public boolean hasId() { + return id_ != null; + } + /** + *
+     * The identifier for the description entity.
+     * +required
+     * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + public flyteidl.admin.Common.NamedEntityIdentifier getId() { + return id_ == null ? flyteidl.admin.Common.NamedEntityIdentifier.getDefaultInstance() : id_; + } + /** + *
+     * The identifier for the description entity.
+     * +required
+     * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + public flyteidl.admin.Common.NamedEntityIdentifierOrBuilder getIdOrBuilder() { + return getId(); + } + + public static final int LIMIT_FIELD_NUMBER = 3; + private int limit_; + /** + *
+     * Indicates the number of resources to be returned.
+     * +required
+     * 
+ * + * uint32 limit = 3; + */ + public int getLimit() { + return limit_; + } + + public static final int TOKEN_FIELD_NUMBER = 4; + private volatile java.lang.Object token_; + /** + *
+     * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+     * in a query.
+     * +optional
+     * 
+ * + * string token = 4; + */ + public java.lang.String getToken() { + java.lang.Object ref = token_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + token_ = s; + return s; + } + } + /** + *
+     * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+     * in a query.
+     * +optional
+     * 
+ * + * string token = 4; + */ + public com.google.protobuf.ByteString + getTokenBytes() { + java.lang.Object ref = token_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + token_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int FILTERS_FIELD_NUMBER = 5; + private volatile java.lang.Object filters_; + /** + *
+     * Indicates a list of filters passed as string.
+     * More info on constructing filters : <Link>
+     * +optional
+     * 
+ * + * string filters = 5; + */ + public java.lang.String getFilters() { + java.lang.Object ref = filters_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + filters_ = s; + return s; + } + } + /** + *
+     * Indicates a list of filters passed as string.
+     * More info on constructing filters : <Link>
+     * +optional
+     * 
+ * + * string filters = 5; + */ + public com.google.protobuf.ByteString + getFiltersBytes() { + java.lang.Object ref = filters_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + filters_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SORT_BY_FIELD_NUMBER = 6; + private flyteidl.admin.Common.Sort sortBy_; + /** + *
+     * Sort ordering for returned list.
+     * +optional
+     * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + public boolean hasSortBy() { + return sortBy_ != null; + } + /** + *
+     * Sort ordering for returned list.
+     * +optional
+     * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + public flyteidl.admin.Common.Sort getSortBy() { + return sortBy_ == null ? flyteidl.admin.Common.Sort.getDefaultInstance() : sortBy_; + } + /** + *
+     * Sort ordering for returned list.
+     * +optional
+     * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + public flyteidl.admin.Common.SortOrBuilder getSortByOrBuilder() { + return getSortBy(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (resourceType_ != flyteidl.core.IdentifierOuterClass.ResourceType.UNSPECIFIED.getNumber()) { + output.writeEnum(1, resourceType_); + } + if (id_ != null) { + output.writeMessage(2, getId()); + } + if (limit_ != 0) { + output.writeUInt32(3, limit_); + } + if (!getTokenBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, token_); + } + if (!getFiltersBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, filters_); + } + if (sortBy_ != null) { + output.writeMessage(6, getSortBy()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (resourceType_ != flyteidl.core.IdentifierOuterClass.ResourceType.UNSPECIFIED.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, resourceType_); + } + if (id_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getId()); + } + if (limit_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, limit_); + } + if (!getTokenBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, token_); + } + if (!getFiltersBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, filters_); + } + if (sortBy_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(6, getSortBy()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest)) { + return super.equals(obj); + } + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest other = (flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest) obj; + + if (resourceType_ != other.resourceType_) return false; + if (hasId() != other.hasId()) return false; + if (hasId()) { + if (!getId() + .equals(other.getId())) return false; + } + if (getLimit() + != other.getLimit()) return false; + if (!getToken() + .equals(other.getToken())) return false; + if (!getFilters() + .equals(other.getFilters())) return false; + if (hasSortBy() != other.hasSortBy()) return false; + if (hasSortBy()) { + if (!getSortBy() + .equals(other.getSortBy())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + RESOURCE_TYPE_FIELD_NUMBER; + hash = (53 * hash) + resourceType_; + if (hasId()) { + hash = (37 * hash) + ID_FIELD_NUMBER; + hash = (53 * hash) + getId().hashCode(); + } + hash = (37 * hash) + LIMIT_FIELD_NUMBER; + hash = (53 * hash) + getLimit(); + hash = (37 * hash) + TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getToken().hashCode(); + hash = (37 * hash) + FILTERS_FIELD_NUMBER; + hash = (53 * hash) + getFilters().hashCode(); + if (hasSortBy()) { + hash = (37 * hash) + SORT_BY_FIELD_NUMBER; + hash = (53 * hash) + getSortBy().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Represents a request structure to retrieve a list of DescriptionEntities.
+     * See :ref:`ref_flyteidl.admin.DescriptionEntity` for more details
+     * 
+ * + * Protobuf type {@code flyteidl.admin.DescriptionEntityListRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.admin.DescriptionEntityListRequest) + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntityListRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntityListRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest.class, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest.Builder.class); + } + + // Construct using flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + resourceType_ = 0; + + if (idBuilder_ == null) { + id_ = null; + } else { + id_ = null; + idBuilder_ = null; + } + limit_ = 0; + + token_ = ""; + + filters_ = ""; + + if (sortByBuilder_ == null) { + sortBy_ = null; + } else { + sortBy_ = null; + sortByBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.admin.DescriptionEntityOuterClass.internal_static_flyteidl_admin_DescriptionEntityListRequest_descriptor; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest getDefaultInstanceForType() { + return flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest build() { + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest buildPartial() { + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest result = new flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest(this); + result.resourceType_ = resourceType_; + if (idBuilder_ == null) { + result.id_ = id_; + } else { + result.id_ = idBuilder_.build(); + } + result.limit_ = limit_; + result.token_ = token_; + result.filters_ = filters_; + if (sortByBuilder_ == null) { + result.sortBy_ = sortBy_; + } else { + result.sortBy_ = sortByBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest) { + return mergeFrom((flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest other) { + if (other == flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest.getDefaultInstance()) return this; + if (other.resourceType_ != 0) { + setResourceTypeValue(other.getResourceTypeValue()); + } + if (other.hasId()) { + mergeId(other.getId()); + } + if (other.getLimit() != 0) { + setLimit(other.getLimit()); + } + if (!other.getToken().isEmpty()) { + token_ = other.token_; + onChanged(); + } + if (!other.getFilters().isEmpty()) { + filters_ = other.filters_; + onChanged(); + } + if (other.hasSortBy()) { + mergeSortBy(other.getSortBy()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int resourceType_ = 0; + /** + *
+       * Identifies the specific type of resource that this identifier corresponds to.
+       * 
+ * + * .flyteidl.core.ResourceType resource_type = 1; + */ + public int getResourceTypeValue() { + return resourceType_; + } + /** + *
+       * Identifies the specific type of resource that this identifier corresponds to.
+       * 
+ * + * .flyteidl.core.ResourceType resource_type = 1; + */ + public Builder setResourceTypeValue(int value) { + resourceType_ = value; + onChanged(); + return this; + } + /** + *
+       * Identifies the specific type of resource that this identifier corresponds to.
+       * 
+ * + * .flyteidl.core.ResourceType resource_type = 1; + */ + public flyteidl.core.IdentifierOuterClass.ResourceType getResourceType() { + @SuppressWarnings("deprecation") + flyteidl.core.IdentifierOuterClass.ResourceType result = flyteidl.core.IdentifierOuterClass.ResourceType.valueOf(resourceType_); + return result == null ? flyteidl.core.IdentifierOuterClass.ResourceType.UNRECOGNIZED : result; + } + /** + *
+       * Identifies the specific type of resource that this identifier corresponds to.
+       * 
+ * + * .flyteidl.core.ResourceType resource_type = 1; + */ + public Builder setResourceType(flyteidl.core.IdentifierOuterClass.ResourceType value) { + if (value == null) { + throw new NullPointerException(); + } + + resourceType_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * Identifies the specific type of resource that this identifier corresponds to.
+       * 
+ * + * .flyteidl.core.ResourceType resource_type = 1; + */ + public Builder clearResourceType() { + + resourceType_ = 0; + onChanged(); + return this; + } + + private flyteidl.admin.Common.NamedEntityIdentifier id_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.Common.NamedEntityIdentifier, flyteidl.admin.Common.NamedEntityIdentifier.Builder, flyteidl.admin.Common.NamedEntityIdentifierOrBuilder> idBuilder_; + /** + *
+       * The identifier for the description entity.
+       * +required
+       * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + public boolean hasId() { + return idBuilder_ != null || id_ != null; + } + /** + *
+       * The identifier for the description entity.
+       * +required
+       * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + public flyteidl.admin.Common.NamedEntityIdentifier getId() { + if (idBuilder_ == null) { + return id_ == null ? flyteidl.admin.Common.NamedEntityIdentifier.getDefaultInstance() : id_; + } else { + return idBuilder_.getMessage(); + } + } + /** + *
+       * The identifier for the description entity.
+       * +required
+       * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + public Builder setId(flyteidl.admin.Common.NamedEntityIdentifier value) { + if (idBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + id_ = value; + onChanged(); + } else { + idBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * The identifier for the description entity.
+       * +required
+       * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + public Builder setId( + flyteidl.admin.Common.NamedEntityIdentifier.Builder builderForValue) { + if (idBuilder_ == null) { + id_ = builderForValue.build(); + onChanged(); + } else { + idBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * The identifier for the description entity.
+       * +required
+       * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + public Builder mergeId(flyteidl.admin.Common.NamedEntityIdentifier value) { + if (idBuilder_ == null) { + if (id_ != null) { + id_ = + flyteidl.admin.Common.NamedEntityIdentifier.newBuilder(id_).mergeFrom(value).buildPartial(); + } else { + id_ = value; + } + onChanged(); + } else { + idBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * The identifier for the description entity.
+       * +required
+       * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + public Builder clearId() { + if (idBuilder_ == null) { + id_ = null; + onChanged(); + } else { + id_ = null; + idBuilder_ = null; + } + + return this; + } + /** + *
+       * The identifier for the description entity.
+       * +required
+       * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + public flyteidl.admin.Common.NamedEntityIdentifier.Builder getIdBuilder() { + + onChanged(); + return getIdFieldBuilder().getBuilder(); + } + /** + *
+       * The identifier for the description entity.
+       * +required
+       * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + public flyteidl.admin.Common.NamedEntityIdentifierOrBuilder getIdOrBuilder() { + if (idBuilder_ != null) { + return idBuilder_.getMessageOrBuilder(); + } else { + return id_ == null ? + flyteidl.admin.Common.NamedEntityIdentifier.getDefaultInstance() : id_; + } + } + /** + *
+       * The identifier for the description entity.
+       * +required
+       * 
+ * + * .flyteidl.admin.NamedEntityIdentifier id = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.Common.NamedEntityIdentifier, flyteidl.admin.Common.NamedEntityIdentifier.Builder, flyteidl.admin.Common.NamedEntityIdentifierOrBuilder> + getIdFieldBuilder() { + if (idBuilder_ == null) { + idBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.Common.NamedEntityIdentifier, flyteidl.admin.Common.NamedEntityIdentifier.Builder, flyteidl.admin.Common.NamedEntityIdentifierOrBuilder>( + getId(), + getParentForChildren(), + isClean()); + id_ = null; + } + return idBuilder_; + } + + private int limit_ ; + /** + *
+       * Indicates the number of resources to be returned.
+       * +required
+       * 
+ * + * uint32 limit = 3; + */ + public int getLimit() { + return limit_; + } + /** + *
+       * Indicates the number of resources to be returned.
+       * +required
+       * 
+ * + * uint32 limit = 3; + */ + public Builder setLimit(int value) { + + limit_ = value; + onChanged(); + return this; + } + /** + *
+       * Indicates the number of resources to be returned.
+       * +required
+       * 
+ * + * uint32 limit = 3; + */ + public Builder clearLimit() { + + limit_ = 0; + onChanged(); + return this; + } + + private java.lang.Object token_ = ""; + /** + *
+       * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+       * in a query.
+       * +optional
+       * 
+ * + * string token = 4; + */ + public java.lang.String getToken() { + java.lang.Object ref = token_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + token_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+       * in a query.
+       * +optional
+       * 
+ * + * string token = 4; + */ + public com.google.protobuf.ByteString + getTokenBytes() { + java.lang.Object ref = token_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + token_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+       * in a query.
+       * +optional
+       * 
+ * + * string token = 4; + */ + public Builder setToken( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + token_ = value; + onChanged(); + return this; + } + /** + *
+       * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+       * in a query.
+       * +optional
+       * 
+ * + * string token = 4; + */ + public Builder clearToken() { + + token_ = getDefaultInstance().getToken(); + onChanged(); + return this; + } + /** + *
+       * In the case of multiple pages of results, the server-provided token can be used to fetch the next page
+       * in a query.
+       * +optional
+       * 
+ * + * string token = 4; + */ + public Builder setTokenBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + token_ = value; + onChanged(); + return this; + } + + private java.lang.Object filters_ = ""; + /** + *
+       * Indicates a list of filters passed as string.
+       * More info on constructing filters : <Link>
+       * +optional
+       * 
+ * + * string filters = 5; + */ + public java.lang.String getFilters() { + java.lang.Object ref = filters_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + filters_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * Indicates a list of filters passed as string.
+       * More info on constructing filters : <Link>
+       * +optional
+       * 
+ * + * string filters = 5; + */ + public com.google.protobuf.ByteString + getFiltersBytes() { + java.lang.Object ref = filters_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + filters_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * Indicates a list of filters passed as string.
+       * More info on constructing filters : <Link>
+       * +optional
+       * 
+ * + * string filters = 5; + */ + public Builder setFilters( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + filters_ = value; + onChanged(); + return this; + } + /** + *
+       * Indicates a list of filters passed as string.
+       * More info on constructing filters : <Link>
+       * +optional
+       * 
+ * + * string filters = 5; + */ + public Builder clearFilters() { + + filters_ = getDefaultInstance().getFilters(); + onChanged(); + return this; + } + /** + *
+       * Indicates a list of filters passed as string.
+       * More info on constructing filters : <Link>
+       * +optional
+       * 
+ * + * string filters = 5; + */ + public Builder setFiltersBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + filters_ = value; + onChanged(); + return this; + } + + private flyteidl.admin.Common.Sort sortBy_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.Common.Sort, flyteidl.admin.Common.Sort.Builder, flyteidl.admin.Common.SortOrBuilder> sortByBuilder_; + /** + *
+       * Sort ordering for returned list.
+       * +optional
+       * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + public boolean hasSortBy() { + return sortByBuilder_ != null || sortBy_ != null; + } + /** + *
+       * Sort ordering for returned list.
+       * +optional
+       * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + public flyteidl.admin.Common.Sort getSortBy() { + if (sortByBuilder_ == null) { + return sortBy_ == null ? flyteidl.admin.Common.Sort.getDefaultInstance() : sortBy_; + } else { + return sortByBuilder_.getMessage(); + } + } + /** + *
+       * Sort ordering for returned list.
+       * +optional
+       * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + public Builder setSortBy(flyteidl.admin.Common.Sort value) { + if (sortByBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + sortBy_ = value; + onChanged(); + } else { + sortByBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Sort ordering for returned list.
+       * +optional
+       * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + public Builder setSortBy( + flyteidl.admin.Common.Sort.Builder builderForValue) { + if (sortByBuilder_ == null) { + sortBy_ = builderForValue.build(); + onChanged(); + } else { + sortByBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Sort ordering for returned list.
+       * +optional
+       * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + public Builder mergeSortBy(flyteidl.admin.Common.Sort value) { + if (sortByBuilder_ == null) { + if (sortBy_ != null) { + sortBy_ = + flyteidl.admin.Common.Sort.newBuilder(sortBy_).mergeFrom(value).buildPartial(); + } else { + sortBy_ = value; + } + onChanged(); + } else { + sortByBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Sort ordering for returned list.
+       * +optional
+       * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + public Builder clearSortBy() { + if (sortByBuilder_ == null) { + sortBy_ = null; + onChanged(); + } else { + sortBy_ = null; + sortByBuilder_ = null; + } + + return this; + } + /** + *
+       * Sort ordering for returned list.
+       * +optional
+       * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + public flyteidl.admin.Common.Sort.Builder getSortByBuilder() { + + onChanged(); + return getSortByFieldBuilder().getBuilder(); + } + /** + *
+       * Sort ordering for returned list.
+       * +optional
+       * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + public flyteidl.admin.Common.SortOrBuilder getSortByOrBuilder() { + if (sortByBuilder_ != null) { + return sortByBuilder_.getMessageOrBuilder(); + } else { + return sortBy_ == null ? + flyteidl.admin.Common.Sort.getDefaultInstance() : sortBy_; + } + } + /** + *
+       * Sort ordering for returned list.
+       * +optional
+       * 
+ * + * .flyteidl.admin.Sort sort_by = 6; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.Common.Sort, flyteidl.admin.Common.Sort.Builder, flyteidl.admin.Common.SortOrBuilder> + getSortByFieldBuilder() { + if (sortByBuilder_ == null) { + sortByBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.Common.Sort, flyteidl.admin.Common.Sort.Builder, flyteidl.admin.Common.SortOrBuilder>( + getSortBy(), + getParentForChildren(), + isClean()); + sortBy_ = null; + } + return sortByBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.admin.DescriptionEntityListRequest) + } + + // @@protoc_insertion_point(class_scope:flyteidl.admin.DescriptionEntityListRequest) + private static final flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest(); + } + + public static flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DescriptionEntityListRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new DescriptionEntityListRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityListRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_admin_DescriptionEntity_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_admin_DescriptionEntity_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_admin_Description_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_admin_Description_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_admin_SourceCode_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_admin_SourceCode_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_admin_DescriptionEntityList_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_admin_DescriptionEntityList_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_admin_DescriptionEntityListRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_admin_DescriptionEntityListRequest_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\'flyteidl/admin/description_entity.prot" + + "o\022\016flyteidl.admin\032\036flyteidl/core/identif" + + "ier.proto\032\033flyteidl/admin/common.proto\"\313" + + "\001\n\021DescriptionEntity\022%\n\002id\030\001 \001(\0132\031.flyte" + + "idl.core.Identifier\022\031\n\021short_description" + + "\030\002 \001(\t\0225\n\020long_description\030\003 \001(\0132\033.flyte" + + "idl.admin.Description\022/\n\013source_code\030\004 \001" + + "(\0132\032.flyteidl.admin.SourceCode\022\014\n\004tags\030\005" + + " \003(\t\"~\n\013Description\022\017\n\005value\030\001 \001(\tH\000\022\r\n\003" + + "uri\030\002 \001(\tH\000\0221\n\006format\030\003 \001(\0162!.flyteidl.a" + + "dmin.DescriptionFormat\022\021\n\ticon_link\030\004 \001(" + + "\tB\t\n\007content\"\032\n\nSourceCode\022\014\n\004link\030\001 \001(\t" + + "\"f\n\025DescriptionEntityList\022>\n\023description" + + "Entities\030\001 \003(\0132!.flyteidl.admin.Descript" + + "ionEntity\022\r\n\005token\030\002 \001(\t\"\333\001\n\034Description" + + "EntityListRequest\0222\n\rresource_type\030\001 \001(\016" + + "2\033.flyteidl.core.ResourceType\0221\n\002id\030\002 \001(" + + "\0132%.flyteidl.admin.NamedEntityIdentifier" + + "\022\r\n\005limit\030\003 \001(\r\022\r\n\005token\030\004 \001(\t\022\017\n\007filter" + + "s\030\005 \001(\t\022%\n\007sort_by\030\006 \001(\0132\024.flyteidl.admi" + + "n.Sort*\215\001\n\021DescriptionFormat\022\036\n\032DESCRIPT" + + "ION_FORMAT_UNKNOWN\020\000\022\037\n\033DESCRIPTION_FORM" + + "AT_MARKDOWN\020\001\022\033\n\027DESCRIPTION_FORMAT_HTML" + + "\020\002\022\032\n\026DESCRIPTION_FORMAT_RST\020\003B7Z5github" + + ".com/flyteorg/flyteidl/gen/pb-go/flyteid" + + "l/adminb\006proto3" + }; + com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = + new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { + public com.google.protobuf.ExtensionRegistry assignDescriptors( + com.google.protobuf.Descriptors.FileDescriptor root) { + descriptor = root; + return null; + } + }; + com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + flyteidl.core.IdentifierOuterClass.getDescriptor(), + flyteidl.admin.Common.getDescriptor(), + }, assigner); + internal_static_flyteidl_admin_DescriptionEntity_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_flyteidl_admin_DescriptionEntity_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_admin_DescriptionEntity_descriptor, + new java.lang.String[] { "Id", "ShortDescription", "LongDescription", "SourceCode", "Tags", }); + internal_static_flyteidl_admin_Description_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_flyteidl_admin_Description_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_admin_Description_descriptor, + new java.lang.String[] { "Value", "Uri", "Format", "IconLink", "Content", }); + internal_static_flyteidl_admin_SourceCode_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_flyteidl_admin_SourceCode_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_admin_SourceCode_descriptor, + new java.lang.String[] { "Link", }); + internal_static_flyteidl_admin_DescriptionEntityList_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_flyteidl_admin_DescriptionEntityList_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_admin_DescriptionEntityList_descriptor, + new java.lang.String[] { "DescriptionEntities", "Token", }); + internal_static_flyteidl_admin_DescriptionEntityListRequest_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_flyteidl_admin_DescriptionEntityListRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_admin_DescriptionEntityListRequest_descriptor, + new java.lang.String[] { "ResourceType", "Id", "Limit", "Token", "Filters", "SortBy", }); + flyteidl.core.IdentifierOuterClass.getDescriptor(); + flyteidl.admin.Common.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/flyteidl/gen/pb-java/flyteidl/admin/TaskOuterClass.java b/flyteidl/gen/pb-java/flyteidl/admin/TaskOuterClass.java index 1c86850c92d..dbdefaa61d5 100644 --- a/flyteidl/gen/pb-java/flyteidl/admin/TaskOuterClass.java +++ b/flyteidl/gen/pb-java/flyteidl/admin/TaskOuterClass.java @@ -1446,6 +1446,24 @@ public interface TaskOrBuilder extends * .flyteidl.admin.TaskClosure closure = 2; */ flyteidl.admin.TaskOuterClass.TaskClosureOrBuilder getClosureOrBuilder(); + + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 3; + */ + java.lang.String getShortDescription(); + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 3; + */ + com.google.protobuf.ByteString + getShortDescriptionBytes(); } /** *
@@ -1466,6 +1484,7 @@ private Task(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private Task() {
+      shortDescription_ = "";
     }
 
     @java.lang.Override
@@ -1518,6 +1537,12 @@ private Task(
 
               break;
             }
+            case 26: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              shortDescription_ = s;
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -1616,6 +1641,48 @@ public flyteidl.admin.TaskOuterClass.TaskClosureOrBuilder getClosureOrBuilder()
       return getClosure();
     }
 
+    public static final int SHORT_DESCRIPTION_FIELD_NUMBER = 3;
+    private volatile java.lang.Object shortDescription_;
+    /**
+     * 
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 3; + */ + public java.lang.String getShortDescription() { + java.lang.Object ref = shortDescription_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + shortDescription_ = s; + return s; + } + } + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 3; + */ + public com.google.protobuf.ByteString + getShortDescriptionBytes() { + java.lang.Object ref = shortDescription_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + shortDescription_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -1636,6 +1703,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (closure_ != null) { output.writeMessage(2, getClosure()); } + if (!getShortDescriptionBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, shortDescription_); + } unknownFields.writeTo(output); } @@ -1653,6 +1723,9 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(2, getClosure()); } + if (!getShortDescriptionBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, shortDescription_); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -1678,6 +1751,8 @@ public boolean equals(final java.lang.Object obj) { if (!getClosure() .equals(other.getClosure())) return false; } + if (!getShortDescription() + .equals(other.getShortDescription())) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -1697,6 +1772,8 @@ public int hashCode() { hash = (37 * hash) + CLOSURE_FIELD_NUMBER; hash = (53 * hash) + getClosure().hashCode(); } + hash = (37 * hash) + SHORT_DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getShortDescription().hashCode(); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -1848,6 +1925,8 @@ public Builder clear() { closure_ = null; closureBuilder_ = null; } + shortDescription_ = ""; + return this; } @@ -1884,6 +1963,7 @@ public flyteidl.admin.TaskOuterClass.Task buildPartial() { } else { result.closure_ = closureBuilder_.build(); } + result.shortDescription_ = shortDescription_; onBuilt(); return result; } @@ -1938,6 +2018,10 @@ public Builder mergeFrom(flyteidl.admin.TaskOuterClass.Task other) { if (other.hasClosure()) { mergeClosure(other.getClosure()); } + if (!other.getShortDescription().isEmpty()) { + shortDescription_ = other.shortDescription_; + onChanged(); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -2272,6 +2356,95 @@ public flyteidl.admin.TaskOuterClass.TaskClosureOrBuilder getClosureOrBuilder() } return closureBuilder_; } + + private java.lang.Object shortDescription_ = ""; + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 3; + */ + public java.lang.String getShortDescription() { + java.lang.Object ref = shortDescription_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + shortDescription_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 3; + */ + public com.google.protobuf.ByteString + getShortDescriptionBytes() { + java.lang.Object ref = shortDescription_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + shortDescription_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 3; + */ + public Builder setShortDescription( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + shortDescription_ = value; + onChanged(); + return this; + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 3; + */ + public Builder clearShortDescription() { + + shortDescription_ = getDefaultInstance().getShortDescription(); + onChanged(); + return this; + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 3; + */ + public Builder setShortDescriptionBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + shortDescription_ = value; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -3441,6 +3614,31 @@ public interface TaskSpecOrBuilder extends * .flyteidl.core.TaskTemplate template = 1; */ flyteidl.core.Tasks.TaskTemplateOrBuilder getTemplateOrBuilder(); + + /** + *
+     * Represents the specification for description entity.
+     * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + boolean hasDescription(); + /** + *
+     * Represents the specification for description entity.
+     * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity getDescription(); + /** + *
+     * Represents the specification for description entity.
+     * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder getDescriptionOrBuilder(); } /** *
@@ -3498,6 +3696,19 @@ private TaskSpec(
 
               break;
             }
+            case 18: {
+              flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder subBuilder = null;
+              if (description_ != null) {
+                subBuilder = description_.toBuilder();
+              }
+              description_ = input.readMessage(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(description_);
+                description_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -3563,6 +3774,39 @@ public flyteidl.core.Tasks.TaskTemplateOrBuilder getTemplateOrBuilder() {
       return getTemplate();
     }
 
+    public static final int DESCRIPTION_FIELD_NUMBER = 2;
+    private flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity description_;
+    /**
+     * 
+     * Represents the specification for description entity.
+     * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + public boolean hasDescription() { + return description_ != null; + } + /** + *
+     * Represents the specification for description entity.
+     * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity getDescription() { + return description_ == null ? flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.getDefaultInstance() : description_; + } + /** + *
+     * Represents the specification for description entity.
+     * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder getDescriptionOrBuilder() { + return getDescription(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -3580,6 +3824,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (template_ != null) { output.writeMessage(1, getTemplate()); } + if (description_ != null) { + output.writeMessage(2, getDescription()); + } unknownFields.writeTo(output); } @@ -3593,6 +3840,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(1, getTemplate()); } + if (description_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getDescription()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -3613,6 +3864,11 @@ public boolean equals(final java.lang.Object obj) { if (!getTemplate() .equals(other.getTemplate())) return false; } + if (hasDescription() != other.hasDescription()) return false; + if (hasDescription()) { + if (!getDescription() + .equals(other.getDescription())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -3628,6 +3884,10 @@ public int hashCode() { hash = (37 * hash) + TEMPLATE_FIELD_NUMBER; hash = (53 * hash) + getTemplate().hashCode(); } + if (hasDescription()) { + hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getDescription().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -3771,6 +4031,12 @@ public Builder clear() { template_ = null; templateBuilder_ = null; } + if (descriptionBuilder_ == null) { + description_ = null; + } else { + description_ = null; + descriptionBuilder_ = null; + } return this; } @@ -3802,6 +4068,11 @@ public flyteidl.admin.TaskOuterClass.TaskSpec buildPartial() { } else { result.template_ = templateBuilder_.build(); } + if (descriptionBuilder_ == null) { + result.description_ = description_; + } else { + result.description_ = descriptionBuilder_.build(); + } onBuilt(); return result; } @@ -3853,6 +4124,9 @@ public Builder mergeFrom(flyteidl.admin.TaskOuterClass.TaskSpec other) { if (other.hasTemplate()) { mergeTemplate(other.getTemplate()); } + if (other.hasDescription()) { + mergeDescription(other.getDescription()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -4034,6 +4308,159 @@ public flyteidl.core.Tasks.TaskTemplateOrBuilder getTemplateOrBuilder() { } return templateBuilder_; } + + private flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity description_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder> descriptionBuilder_; + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + public boolean hasDescription() { + return descriptionBuilder_ != null || description_ != null; + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity getDescription() { + if (descriptionBuilder_ == null) { + return description_ == null ? flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.getDefaultInstance() : description_; + } else { + return descriptionBuilder_.getMessage(); + } + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + public Builder setDescription(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity value) { + if (descriptionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + description_ = value; + onChanged(); + } else { + descriptionBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + public Builder setDescription( + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder builderForValue) { + if (descriptionBuilder_ == null) { + description_ = builderForValue.build(); + onChanged(); + } else { + descriptionBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + public Builder mergeDescription(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity value) { + if (descriptionBuilder_ == null) { + if (description_ != null) { + description_ = + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.newBuilder(description_).mergeFrom(value).buildPartial(); + } else { + description_ = value; + } + onChanged(); + } else { + descriptionBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + public Builder clearDescription() { + if (descriptionBuilder_ == null) { + description_ = null; + onChanged(); + } else { + description_ = null; + descriptionBuilder_ = null; + } + + return this; + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder getDescriptionBuilder() { + + onChanged(); + return getDescriptionFieldBuilder().getBuilder(); + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder getDescriptionOrBuilder() { + if (descriptionBuilder_ != null) { + return descriptionBuilder_.getMessageOrBuilder(); + } else { + return description_ == null ? + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.getDefaultInstance() : description_; + } + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder> + getDescriptionFieldBuilder() { + if (descriptionBuilder_ == null) { + descriptionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder>( + getDescription(), + getParentForChildren(), + isClean()); + description_ = null; + } + return descriptionBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -5059,21 +5486,24 @@ public flyteidl.admin.TaskOuterClass.TaskClosure getDefaultInstanceForType() { "\n\031flyteidl/admin/task.proto\022\016flyteidl.ad" + "min\032\036flyteidl/core/identifier.proto\032\031fly" + "teidl/core/tasks.proto\032\034flyteidl/core/co" + - "mpiler.proto\032\037google/protobuf/timestamp." + - "proto\"b\n\021TaskCreateRequest\022%\n\002id\030\001 \001(\0132\031" + - ".flyteidl.core.Identifier\022&\n\004spec\030\002 \001(\0132" + - "\030.flyteidl.admin.TaskSpec\"\024\n\022TaskCreateR" + - "esponse\"[\n\004Task\022%\n\002id\030\001 \001(\0132\031.flyteidl.c" + - "ore.Identifier\022,\n\007closure\030\002 \001(\0132\033.flytei" + - "dl.admin.TaskClosure\">\n\010TaskList\022#\n\005task" + - "s\030\001 \003(\0132\024.flyteidl.admin.Task\022\r\n\005token\030\002" + - " \001(\t\"9\n\010TaskSpec\022-\n\010template\030\001 \001(\0132\033.fly" + - "teidl.core.TaskTemplate\"q\n\013TaskClosure\0222" + - "\n\rcompiled_task\030\001 \001(\0132\033.flyteidl.core.Co" + - "mpiledTask\022.\n\ncreated_at\030\002 \001(\0132\032.google." + - "protobuf.TimestampB7Z5github.com/flyteor" + - "g/flyteidl/gen/pb-go/flyteidl/adminb\006pro" + - "to3" + "mpiler.proto\032\'flyteidl/admin/description" + + "_entity.proto\032\037google/protobuf/timestamp" + + ".proto\"b\n\021TaskCreateRequest\022%\n\002id\030\001 \001(\0132" + + "\031.flyteidl.core.Identifier\022&\n\004spec\030\002 \001(\013" + + "2\030.flyteidl.admin.TaskSpec\"\024\n\022TaskCreate" + + "Response\"v\n\004Task\022%\n\002id\030\001 \001(\0132\031.flyteidl." + + "core.Identifier\022,\n\007closure\030\002 \001(\0132\033.flyte" + + "idl.admin.TaskClosure\022\031\n\021short_descripti" + + "on\030\003 \001(\t\">\n\010TaskList\022#\n\005tasks\030\001 \003(\0132\024.fl" + + "yteidl.admin.Task\022\r\n\005token\030\002 \001(\t\"q\n\010Task" + + "Spec\022-\n\010template\030\001 \001(\0132\033.flyteidl.core.T" + + "askTemplate\0226\n\013description\030\002 \001(\0132!.flyte" + + "idl.admin.DescriptionEntity\"q\n\013TaskClosu" + + "re\0222\n\rcompiled_task\030\001 \001(\0132\033.flyteidl.cor" + + "e.CompiledTask\022.\n\ncreated_at\030\002 \001(\0132\032.goo" + + "gle.protobuf.TimestampB7Z5github.com/fly" + + "teorg/flyteidl/gen/pb-go/flyteidl/adminb" + + "\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -5089,6 +5519,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.core.IdentifierOuterClass.getDescriptor(), flyteidl.core.Tasks.getDescriptor(), flyteidl.core.Compiler.getDescriptor(), + flyteidl.admin.DescriptionEntityOuterClass.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), }, assigner); internal_static_flyteidl_admin_TaskCreateRequest_descriptor = @@ -5108,7 +5539,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_Task_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_Task_descriptor, - new java.lang.String[] { "Id", "Closure", }); + new java.lang.String[] { "Id", "Closure", "ShortDescription", }); internal_static_flyteidl_admin_TaskList_descriptor = getDescriptor().getMessageTypes().get(3); internal_static_flyteidl_admin_TaskList_fieldAccessorTable = new @@ -5120,7 +5551,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_TaskSpec_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_TaskSpec_descriptor, - new java.lang.String[] { "Template", }); + new java.lang.String[] { "Template", "Description", }); internal_static_flyteidl_admin_TaskClosure_descriptor = getDescriptor().getMessageTypes().get(5); internal_static_flyteidl_admin_TaskClosure_fieldAccessorTable = new @@ -5130,6 +5561,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.core.IdentifierOuterClass.getDescriptor(); flyteidl.core.Tasks.getDescriptor(); flyteidl.core.Compiler.getDescriptor(); + flyteidl.admin.DescriptionEntityOuterClass.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); } diff --git a/flyteidl/gen/pb-java/flyteidl/admin/WorkflowOuterClass.java b/flyteidl/gen/pb-java/flyteidl/admin/WorkflowOuterClass.java index eb37c37b976..c7b891b02bd 100644 --- a/flyteidl/gen/pb-java/flyteidl/admin/WorkflowOuterClass.java +++ b/flyteidl/gen/pb-java/flyteidl/admin/WorkflowOuterClass.java @@ -1446,6 +1446,24 @@ public interface WorkflowOrBuilder extends * .flyteidl.admin.WorkflowClosure closure = 2; */ flyteidl.admin.WorkflowOuterClass.WorkflowClosureOrBuilder getClosureOrBuilder(); + + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 3; + */ + java.lang.String getShortDescription(); + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 3; + */ + com.google.protobuf.ByteString + getShortDescriptionBytes(); } /** *
@@ -1466,6 +1484,7 @@ private Workflow(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
     private Workflow() {
+      shortDescription_ = "";
     }
 
     @java.lang.Override
@@ -1518,6 +1537,12 @@ private Workflow(
 
               break;
             }
+            case 26: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              shortDescription_ = s;
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -1616,6 +1641,48 @@ public flyteidl.admin.WorkflowOuterClass.WorkflowClosureOrBuilder getClosureOrBu
       return getClosure();
     }
 
+    public static final int SHORT_DESCRIPTION_FIELD_NUMBER = 3;
+    private volatile java.lang.Object shortDescription_;
+    /**
+     * 
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 3; + */ + public java.lang.String getShortDescription() { + java.lang.Object ref = shortDescription_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + shortDescription_ = s; + return s; + } + } + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 3; + */ + public com.google.protobuf.ByteString + getShortDescriptionBytes() { + java.lang.Object ref = shortDescription_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + shortDescription_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -1636,6 +1703,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (closure_ != null) { output.writeMessage(2, getClosure()); } + if (!getShortDescriptionBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, shortDescription_); + } unknownFields.writeTo(output); } @@ -1653,6 +1723,9 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(2, getClosure()); } + if (!getShortDescriptionBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, shortDescription_); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -1678,6 +1751,8 @@ public boolean equals(final java.lang.Object obj) { if (!getClosure() .equals(other.getClosure())) return false; } + if (!getShortDescription() + .equals(other.getShortDescription())) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -1697,6 +1772,8 @@ public int hashCode() { hash = (37 * hash) + CLOSURE_FIELD_NUMBER; hash = (53 * hash) + getClosure().hashCode(); } + hash = (37 * hash) + SHORT_DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getShortDescription().hashCode(); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -1848,6 +1925,8 @@ public Builder clear() { closure_ = null; closureBuilder_ = null; } + shortDescription_ = ""; + return this; } @@ -1884,6 +1963,7 @@ public flyteidl.admin.WorkflowOuterClass.Workflow buildPartial() { } else { result.closure_ = closureBuilder_.build(); } + result.shortDescription_ = shortDescription_; onBuilt(); return result; } @@ -1938,6 +2018,10 @@ public Builder mergeFrom(flyteidl.admin.WorkflowOuterClass.Workflow other) { if (other.hasClosure()) { mergeClosure(other.getClosure()); } + if (!other.getShortDescription().isEmpty()) { + shortDescription_ = other.shortDescription_; + onChanged(); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -2272,6 +2356,95 @@ public flyteidl.admin.WorkflowOuterClass.WorkflowClosureOrBuilder getClosureOrBu } return closureBuilder_; } + + private java.lang.Object shortDescription_ = ""; + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 3; + */ + public java.lang.String getShortDescription() { + java.lang.Object ref = shortDescription_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + shortDescription_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 3; + */ + public com.google.protobuf.ByteString + getShortDescriptionBytes() { + java.lang.Object ref = shortDescription_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + shortDescription_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 3; + */ + public Builder setShortDescription( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + shortDescription_ = value; + onChanged(); + return this; + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 3; + */ + public Builder clearShortDescription() { + + shortDescription_ = getDefaultInstance().getShortDescription(); + onChanged(); + return this; + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 3; + */ + public Builder setShortDescriptionBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + shortDescription_ = value; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -3495,6 +3668,31 @@ public interface WorkflowSpecOrBuilder extends */ flyteidl.core.Workflow.WorkflowTemplateOrBuilder getSubWorkflowsOrBuilder( int index); + + /** + *
+     * Represents the specification for description entity.
+     * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + boolean hasDescription(); + /** + *
+     * Represents the specification for description entity.
+     * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity getDescription(); + /** + *
+     * Represents the specification for description entity.
+     * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder getDescriptionOrBuilder(); } /** *
@@ -3562,6 +3760,19 @@ private WorkflowSpec(
                   input.readMessage(flyteidl.core.Workflow.WorkflowTemplate.parser(), extensionRegistry));
               break;
             }
+            case 26: {
+              flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder subBuilder = null;
+              if (description_ != null) {
+                subBuilder = description_.toBuilder();
+              }
+              description_ = input.readMessage(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(description_);
+                description_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -3696,6 +3907,39 @@ public flyteidl.core.Workflow.WorkflowTemplateOrBuilder getSubWorkflowsOrBuilder
       return subWorkflows_.get(index);
     }
 
+    public static final int DESCRIPTION_FIELD_NUMBER = 3;
+    private flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity description_;
+    /**
+     * 
+     * Represents the specification for description entity.
+     * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + public boolean hasDescription() { + return description_ != null; + } + /** + *
+     * Represents the specification for description entity.
+     * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity getDescription() { + return description_ == null ? flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.getDefaultInstance() : description_; + } + /** + *
+     * Represents the specification for description entity.
+     * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder getDescriptionOrBuilder() { + return getDescription(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -3716,6 +3960,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) for (int i = 0; i < subWorkflows_.size(); i++) { output.writeMessage(2, subWorkflows_.get(i)); } + if (description_ != null) { + output.writeMessage(3, getDescription()); + } unknownFields.writeTo(output); } @@ -3733,6 +3980,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(2, subWorkflows_.get(i)); } + if (description_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, getDescription()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -3755,6 +4006,11 @@ public boolean equals(final java.lang.Object obj) { } if (!getSubWorkflowsList() .equals(other.getSubWorkflowsList())) return false; + if (hasDescription() != other.hasDescription()) return false; + if (hasDescription()) { + if (!getDescription() + .equals(other.getDescription())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -3774,6 +4030,10 @@ public int hashCode() { hash = (37 * hash) + SUB_WORKFLOWS_FIELD_NUMBER; hash = (53 * hash) + getSubWorkflowsList().hashCode(); } + if (hasDescription()) { + hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getDescription().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -3924,6 +4184,12 @@ public Builder clear() { } else { subWorkflowsBuilder_.clear(); } + if (descriptionBuilder_ == null) { + description_ = null; + } else { + description_ = null; + descriptionBuilder_ = null; + } return this; } @@ -3966,6 +4232,11 @@ public flyteidl.admin.WorkflowOuterClass.WorkflowSpec buildPartial() { } else { result.subWorkflows_ = subWorkflowsBuilder_.build(); } + if (descriptionBuilder_ == null) { + result.description_ = description_; + } else { + result.description_ = descriptionBuilder_.build(); + } result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -4044,6 +4315,9 @@ public Builder mergeFrom(flyteidl.admin.WorkflowOuterClass.WorkflowSpec other) { } } } + if (other.hasDescription()) { + mergeDescription(other.getDescription()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -4574,6 +4848,159 @@ public flyteidl.core.Workflow.WorkflowTemplate.Builder addSubWorkflowsBuilder( } return subWorkflowsBuilder_; } + + private flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity description_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder> descriptionBuilder_; + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + public boolean hasDescription() { + return descriptionBuilder_ != null || description_ != null; + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity getDescription() { + if (descriptionBuilder_ == null) { + return description_ == null ? flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.getDefaultInstance() : description_; + } else { + return descriptionBuilder_.getMessage(); + } + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + public Builder setDescription(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity value) { + if (descriptionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + description_ = value; + onChanged(); + } else { + descriptionBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + public Builder setDescription( + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder builderForValue) { + if (descriptionBuilder_ == null) { + description_ = builderForValue.build(); + onChanged(); + } else { + descriptionBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + public Builder mergeDescription(flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity value) { + if (descriptionBuilder_ == null) { + if (description_ != null) { + description_ = + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.newBuilder(description_).mergeFrom(value).buildPartial(); + } else { + description_ = value; + } + onChanged(); + } else { + descriptionBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + public Builder clearDescription() { + if (descriptionBuilder_ == null) { + description_ = null; + onChanged(); + } else { + description_ = null; + descriptionBuilder_ = null; + } + + return this; + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder getDescriptionBuilder() { + + onChanged(); + return getDescriptionFieldBuilder().getBuilder(); + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + public flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder getDescriptionOrBuilder() { + if (descriptionBuilder_ != null) { + return descriptionBuilder_.getMessageOrBuilder(); + } else { + return description_ == null ? + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.getDefaultInstance() : description_; + } + } + /** + *
+       * Represents the specification for description entity.
+       * 
+ * + * .flyteidl.admin.DescriptionEntity description = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder> + getDescriptionFieldBuilder() { + if (descriptionBuilder_ == null) { + descriptionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntity.Builder, flyteidl.admin.DescriptionEntityOuterClass.DescriptionEntityOrBuilder>( + getDescription(), + getParentForChildren(), + isClean()); + description_ = null; + } + return descriptionBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -7762,33 +8189,36 @@ public flyteidl.admin.WorkflowOuterClass.CreateWorkflowFailureReason getDefaultI "\n\035flyteidl/admin/workflow.proto\022\016flyteid" + "l.admin\032\034flyteidl/core/compiler.proto\032\036f" + "lyteidl/core/identifier.proto\032\034flyteidl/" + - "core/workflow.proto\032\037google/protobuf/tim" + - "estamp.proto\"j\n\025WorkflowCreateRequest\022%\n" + - "\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\022*\n\004" + - "spec\030\002 \001(\0132\034.flyteidl.admin.WorkflowSpec" + - "\"\030\n\026WorkflowCreateResponse\"c\n\010Workflow\022%" + - "\n\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\0220\n" + - "\007closure\030\002 \001(\0132\037.flyteidl.admin.Workflow" + - "Closure\"J\n\014WorkflowList\022+\n\tworkflows\030\001 \003" + - "(\0132\030.flyteidl.admin.Workflow\022\r\n\005token\030\002 " + - "\001(\t\"y\n\014WorkflowSpec\0221\n\010template\030\001 \001(\0132\037." + - "flyteidl.core.WorkflowTemplate\0226\n\rsub_wo" + - "rkflows\030\002 \003(\0132\037.flyteidl.core.WorkflowTe" + - "mplate\"\204\001\n\017WorkflowClosure\022A\n\021compiled_w" + - "orkflow\030\001 \001(\0132&.flyteidl.core.CompiledWo" + - "rkflowClosure\022.\n\ncreated_at\030\002 \001(\0132\032.goog" + - "le.protobuf.Timestamp\"N\n%WorkflowErrorEx" + - "istsDifferentStructure\022%\n\002id\030\001 \001(\0132\031.fly" + - "teidl.core.Identifier\"N\n%WorkflowErrorEx" + - "istsIdenticalStructure\022%\n\002id\030\001 \001(\0132\031.fly" + - "teidl.core.Identifier\"\341\001\n\033CreateWorkflow" + - "FailureReason\022[\n\032exists_different_struct" + - "ure\030\001 \001(\01325.flyteidl.admin.WorkflowError" + - "ExistsDifferentStructureH\000\022[\n\032exists_ide" + - "ntical_structure\030\002 \001(\01325.flyteidl.admin." + - "WorkflowErrorExistsIdenticalStructureH\000B" + - "\010\n\006reasonB7Z5github.com/flyteorg/flyteid" + - "l/gen/pb-go/flyteidl/adminb\006proto3" + "core/workflow.proto\032\'flyteidl/admin/desc" + + "ription_entity.proto\032\037google/protobuf/ti" + + "mestamp.proto\"j\n\025WorkflowCreateRequest\022%" + + "\n\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\022*\n" + + "\004spec\030\002 \001(\0132\034.flyteidl.admin.WorkflowSpe" + + "c\"\030\n\026WorkflowCreateResponse\"~\n\010Workflow\022" + + "%\n\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\0220" + + "\n\007closure\030\002 \001(\0132\037.flyteidl.admin.Workflo" + + "wClosure\022\031\n\021short_description\030\003 \001(\t\"J\n\014W" + + "orkflowList\022+\n\tworkflows\030\001 \003(\0132\030.flyteid" + + "l.admin.Workflow\022\r\n\005token\030\002 \001(\t\"\261\001\n\014Work" + + "flowSpec\0221\n\010template\030\001 \001(\0132\037.flyteidl.co" + + "re.WorkflowTemplate\0226\n\rsub_workflows\030\002 \003" + + "(\0132\037.flyteidl.core.WorkflowTemplate\0226\n\013d" + + "escription\030\003 \001(\0132!.flyteidl.admin.Descri" + + "ptionEntity\"\204\001\n\017WorkflowClosure\022A\n\021compi" + + "led_workflow\030\001 \001(\0132&.flyteidl.core.Compi" + + "ledWorkflowClosure\022.\n\ncreated_at\030\002 \001(\0132\032" + + ".google.protobuf.Timestamp\"N\n%WorkflowEr" + + "rorExistsDifferentStructure\022%\n\002id\030\001 \001(\0132" + + "\031.flyteidl.core.Identifier\"N\n%WorkflowEr" + + "rorExistsIdenticalStructure\022%\n\002id\030\001 \001(\0132" + + "\031.flyteidl.core.Identifier\"\341\001\n\033CreateWor" + + "kflowFailureReason\022[\n\032exists_different_s" + + "tructure\030\001 \001(\01325.flyteidl.admin.Workflow" + + "ErrorExistsDifferentStructureH\000\022[\n\032exist" + + "s_identical_structure\030\002 \001(\01325.flyteidl.a" + + "dmin.WorkflowErrorExistsIdenticalStructu" + + "reH\000B\010\n\006reasonB7Z5github.com/flyteorg/fl" + + "yteidl/gen/pb-go/flyteidl/adminb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -7804,6 +8234,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.core.Compiler.getDescriptor(), flyteidl.core.IdentifierOuterClass.getDescriptor(), flyteidl.core.Workflow.getDescriptor(), + flyteidl.admin.DescriptionEntityOuterClass.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), }, assigner); internal_static_flyteidl_admin_WorkflowCreateRequest_descriptor = @@ -7823,7 +8254,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_Workflow_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_Workflow_descriptor, - new java.lang.String[] { "Id", "Closure", }); + new java.lang.String[] { "Id", "Closure", "ShortDescription", }); internal_static_flyteidl_admin_WorkflowList_descriptor = getDescriptor().getMessageTypes().get(3); internal_static_flyteidl_admin_WorkflowList_fieldAccessorTable = new @@ -7835,7 +8266,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_WorkflowSpec_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_WorkflowSpec_descriptor, - new java.lang.String[] { "Template", "SubWorkflows", }); + new java.lang.String[] { "Template", "SubWorkflows", "Description", }); internal_static_flyteidl_admin_WorkflowClosure_descriptor = getDescriptor().getMessageTypes().get(5); internal_static_flyteidl_admin_WorkflowClosure_fieldAccessorTable = new @@ -7863,6 +8294,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.core.Compiler.getDescriptor(); flyteidl.core.IdentifierOuterClass.getDescriptor(); flyteidl.core.Workflow.getDescriptor(); + flyteidl.admin.DescriptionEntityOuterClass.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); } diff --git a/flyteidl/gen/pb-java/flyteidl/service/Admin.java b/flyteidl/gen/pb-java/flyteidl/service/Admin.java index b62780ba141..f3948da0c67 100644 --- a/flyteidl/gen/pb-java/flyteidl/service/Admin.java +++ b/flyteidl/gen/pb-java/flyteidl/service/Admin.java @@ -37,362 +37,379 @@ public static void registerAllExtensions( "dl/admin/node_execution.proto\032#flyteidl/" + "admin/task_execution.proto\032\034flyteidl/adm" + "in/version.proto\032\033flyteidl/admin/common." + - "proto\032,protoc-gen-swagger/options/annota" + - "tions.proto2\202n\n\014AdminService\022\305\002\n\nCreateT" + - "ask\022!.flyteidl.admin.TaskCreateRequest\032\"" + - ".flyteidl.admin.TaskCreateResponse\"\357\001\202\323\344" + - "\223\002\022\"\r/api/v1/tasks:\001*\222A\323\001\032&Create and re" + - "gister a task definition.JB\n\003400\022;\n9Retu" + + "proto\032\'flyteidl/admin/description_entity" + + ".proto\032\036flyteidl/core/identifier.proto\032," + + "protoc-gen-swagger/options/annotations.p" + + "roto2\342r\n\014AdminService\022\305\002\n\nCreateTask\022!.f" + + "lyteidl.admin.TaskCreateRequest\032\".flytei" + + "dl.admin.TaskCreateResponse\"\357\001\202\323\344\223\002\022\"\r/a" + + "pi/v1/tasks:\001*\222A\323\001\032&Create and register " + + "a task definition.JB\n\003400\022;\n9Returned fo" + + "r bad request that may have failed valid" + + "ation.Je\n\003409\022^\n\\Returned for a request " + + "that references an identical entity that" + + " has already been registered.\022\262\001\n\007GetTas" + + "k\022 .flyteidl.admin.ObjectGetRequest\032\024.fl" + + "yteidl.admin.Task\"o\202\323\344\223\002?\022=/api/v1/tasks" + + "/{id.project}/{id.domain}/{id.name}/{id." + + "version}\222A\'\032%Retrieve an existing task d" + + "efinition.\022\336\001\n\013ListTaskIds\0220.flyteidl.ad" + + "min.NamedEntityIdentifierListRequest\032).f" + + "lyteidl.admin.NamedEntityIdentifierList\"" + + "r\202\323\344\223\002%\022#/api/v1/task_ids/{project}/{dom" + + "ain}\222AD\032BFetch existing task definition " + + "identifiers matching input filters.\022\353\001\n\t" + + "ListTasks\022#.flyteidl.admin.ResourceListR" + + "equest\032\030.flyteidl.admin.TaskList\"\236\001\202\323\344\223\002" + + "\\\0220/api/v1/tasks/{id.project}/{id.domain" + + "}/{id.name}Z(\022&/api/v1/tasks/{id.project" + + "}/{id.domain}\222A9\0327Fetch existing task de" + + "finitions matching input filters.\022\331\002\n\016Cr" + + "eateWorkflow\022%.flyteidl.admin.WorkflowCr" + + "eateRequest\032&.flyteidl.admin.WorkflowCre" + + "ateResponse\"\367\001\202\323\344\223\002\026\"\021/api/v1/workflows:" + + "\001*\222A\327\001\032*Create and register a workflow d" + + "efinition.JB\n\003400\022;\n9Returned for bad re" + + "quest that may have failed validation.Je" + + "\n\003409\022^\n\\Returned for a request that ref" + + "erences an identical entity that has alr" + + "eady been registered.\022\302\001\n\013GetWorkflow\022 ." + + "flyteidl.admin.ObjectGetRequest\032\030.flytei" + + "dl.admin.Workflow\"w\202\323\344\223\002C\022A/api/v1/workf" + + "lows/{id.project}/{id.domain}/{id.name}/" + + "{id.version}\222A+\032)Retrieve an existing wo" + + "rkflow definition.\022\355\001\n\017ListWorkflowIds\0220" + + ".flyteidl.admin.NamedEntityIdentifierLis" + + "tRequest\032).flyteidl.admin.NamedEntityIde" + + "ntifierList\"}\202\323\344\223\002)\022\'/api/v1/workflow_id" + + "s/{project}/{domain}\222AK\032IFetch an existi" + + "ng workflow definition identifiers match" + + "ing input filters.\022\377\001\n\rListWorkflows\022#.f" + + "lyteidl.admin.ResourceListRequest\032\034.flyt" + + "eidl.admin.WorkflowList\"\252\001\202\323\344\223\002d\0224/api/v" + + "1/workflows/{id.project}/{id.domain}/{id" + + ".name}Z,\022*/api/v1/workflows/{id.project}" + + "/{id.domain}\222A=\032;Fetch existing workflow" + + " definitions matching input filters.\022\345\002\n" + + "\020CreateLaunchPlan\022\'.flyteidl.admin.Launc" + + "hPlanCreateRequest\032(.flyteidl.admin.Laun" + + "chPlanCreateResponse\"\375\001\202\323\344\223\002\031\"\024/api/v1/l" + + "aunch_plans:\001*\222A\332\001\032-Create and register " + + "a launch plan definition.JB\n\003400\022;\n9Retu" + "rned for bad request that may have faile" + "d validation.Je\n\003409\022^\n\\Returned for a r" + "equest that references an identical enti" + - "ty that has already been registered.\022\262\001\n" + - "\007GetTask\022 .flyteidl.admin.ObjectGetReque" + - "st\032\024.flyteidl.admin.Task\"o\202\323\344\223\002?\022=/api/v" + - "1/tasks/{id.project}/{id.domain}/{id.nam" + - "e}/{id.version}\222A\'\032%Retrieve an existing" + - " task definition.\022\336\001\n\013ListTaskIds\0220.flyt" + - "eidl.admin.NamedEntityIdentifierListRequ" + - "est\032).flyteidl.admin.NamedEntityIdentifi" + - "erList\"r\202\323\344\223\002%\022#/api/v1/task_ids/{projec" + - "t}/{domain}\222AD\032BFetch existing task defi" + - "nition identifiers matching input filter" + - "s.\022\353\001\n\tListTasks\022#.flyteidl.admin.Resour" + - "ceListRequest\032\030.flyteidl.admin.TaskList\"" + - "\236\001\202\323\344\223\002\\\0220/api/v1/tasks/{id.project}/{id" + - ".domain}/{id.name}Z(\022&/api/v1/tasks/{id." + - "project}/{id.domain}\222A9\0327Fetch existing " + - "task definitions matching input filters." + - "\022\331\002\n\016CreateWorkflow\022%.flyteidl.admin.Wor" + - "kflowCreateRequest\032&.flyteidl.admin.Work" + - "flowCreateResponse\"\367\001\202\323\344\223\002\026\"\021/api/v1/wor" + - "kflows:\001*\222A\327\001\032*Create and register a wor" + - "kflow definition.JB\n\003400\022;\n9Returned for" + - " bad request that may have failed valida" + - "tion.Je\n\003409\022^\n\\Returned for a request t" + - "hat references an identical entity that " + - "has already been registered.\022\302\001\n\013GetWork" + - "flow\022 .flyteidl.admin.ObjectGetRequest\032\030" + - ".flyteidl.admin.Workflow\"w\202\323\344\223\002C\022A/api/v" + - "1/workflows/{id.project}/{id.domain}/{id" + - ".name}/{id.version}\222A+\032)Retrieve an exis" + - "ting workflow definition.\022\355\001\n\017ListWorkfl" + - "owIds\0220.flyteidl.admin.NamedEntityIdenti" + - "fierListRequest\032).flyteidl.admin.NamedEn" + - "tityIdentifierList\"}\202\323\344\223\002)\022\'/api/v1/work" + - "flow_ids/{project}/{domain}\222AK\032IFetch an" + - " existing workflow definition identifier" + - "s matching input filters.\022\377\001\n\rListWorkfl" + - "ows\022#.flyteidl.admin.ResourceListRequest" + - "\032\034.flyteidl.admin.WorkflowList\"\252\001\202\323\344\223\002d\022" + - "4/api/v1/workflows/{id.project}/{id.doma" + - "in}/{id.name}Z,\022*/api/v1/workflows/{id.p" + - "roject}/{id.domain}\222A=\032;Fetch existing w" + - "orkflow definitions matching input filte" + - "rs.\022\345\002\n\020CreateLaunchPlan\022\'.flyteidl.admi" + - "n.LaunchPlanCreateRequest\032(.flyteidl.adm" + - "in.LaunchPlanCreateResponse\"\375\001\202\323\344\223\002\031\"\024/a" + - "pi/v1/launch_plans:\001*\222A\332\001\032-Create and re" + - "gister a launch plan definition.JB\n\003400\022" + - ";\n9Returned for bad request that may hav" + - "e failed validation.Je\n\003409\022^\n\\Returned " + - "for a request that references an identic" + - "al entity that has already been register" + - "ed.\022\314\001\n\rGetLaunchPlan\022 .flyteidl.admin.O" + - "bjectGetRequest\032\032.flyteidl.admin.LaunchP" + - "lan\"}\202\323\344\223\002F\022D/api/v1/launch_plans/{id.pr" + - "oject}/{id.domain}/{id.name}/{id.version" + - "}\222A.\032,Retrieve an existing launch plan d" + - "efinition.\022\363\001\n\023GetActiveLaunchPlan\022\'.fly" + - "teidl.admin.ActiveLaunchPlanRequest\032\032.fl" + - "yteidl.admin.LaunchPlan\"\226\001\202\323\344\223\002@\022>/api/v" + - "1/active_launch_plans/{id.project}/{id.d" + - "omain}/{id.name}\222AM\032KRetrieve the active" + - " launch plan version specified by input " + - "request filters.\022\353\001\n\025ListActiveLaunchPla" + - "ns\022+.flyteidl.admin.ActiveLaunchPlanList" + - "Request\032\036.flyteidl.admin.LaunchPlanList\"" + - "\204\001\202\323\344\223\0020\022./api/v1/active_launch_plans/{p" + - "roject}/{domain}\222AK\032IFetch the active la" + - "unch plan versions specified by input re" + - "quest filters.\022\363\001\n\021ListLaunchPlanIds\0220.f" + - "lyteidl.admin.NamedEntityIdentifierListR" + - "equest\032).flyteidl.admin.NamedEntityIdent" + - "ifierList\"\200\001\202\323\344\223\002,\022*/api/v1/launch_plan_" + - "ids/{project}/{domain}\222AK\032IFetch existin" + - "g launch plan definition identifiers mat" + - "ching input filters.\022\214\002\n\017ListLaunchPlans" + - "\022#.flyteidl.admin.ResourceListRequest\032\036." + - "flyteidl.admin.LaunchPlanList\"\263\001\202\323\344\223\002j\0227" + - "/api/v1/launch_plans/{id.project}/{id.do" + - "main}/{id.name}Z/\022-/api/v1/launch_plans/" + - "{id.project}/{id.domain}\222A@\032>Fetch exist" + - "ing launch plan definitions matching inp" + - "ut filters.\022\300\006\n\020UpdateLaunchPlan\022\'.flyte" + - "idl.admin.LaunchPlanUpdateRequest\032(.flyt" + - "eidl.admin.LaunchPlanUpdateResponse\"\330\005\202\323" + - "\344\223\002I\032D/api/v1/launch_plans/{id.project}/" + - "{id.domain}/{id.name}/{id.version}:\001*\222A\205" + - "\005\032\202\005Update the status of an existing lau" + - "nch plan definition. At most one launch " + - "plan version for a given {project, domai" + - "n, name} can be active at a time. If thi" + - "s call sets a launch plan to active and " + - "existing version is already active, the " + - "result of this call will be that the for" + - "merly active launch plan will be made in" + - "active and specified launch plan in this" + - " request will be made active. In the eve" + - "nt that the formerly active launch plan " + - "had a schedule associated it with it, th" + - "is schedule will be disabled. If the ref" + - "erence launch plan in this request is be" + - "ing set to active and has a schedule ass" + - "ociated with it, the schedule will be en" + - "abled.\022\242\001\n\017CreateExecution\022&.flyteidl.ad" + - "min.ExecutionCreateRequest\032\'.flyteidl.ad" + - "min.ExecutionCreateResponse\">\202\323\344\223\002\027\"\022/ap" + - "i/v1/executions:\001*\222A\036\032\034Create a workflow" + - " execution.\022\261\001\n\021RelaunchExecution\022(.flyt" + - "eidl.admin.ExecutionRelaunchRequest\032\'.fl" + - "yteidl.admin.ExecutionCreateResponse\"I\202\323" + - "\344\223\002 \"\033/api/v1/executions/relaunch:\001*\222A \032" + - "\036Relaunch a workflow execution.\022\235\005\n\020Reco" + - "verExecution\022\'.flyteidl.admin.ExecutionR" + - "ecoverRequest\032\'.flyteidl.admin.Execution" + - "CreateResponse\"\266\004\202\323\344\223\002\037\"\032/api/v1/executi" + - "ons/recover:\001*\222A\215\004\032\212\004Recreates a previou" + - "sly-run workflow execution that will onl" + - "y start executing from the last known fa" + - "ilure point. In Recover mode, users cann" + - "ot change any input parameters or update" + - " the version of the execution. This is e" + - "xtremely useful to recover from system e" + - "rrors and byzantine faults like - Loss o" + - "f K8s cluster, bugs in platform or insta" + - "bility, machine failures, downstream sys" + - "tem failures (downstream services), or s" + - "imply to recover executions that failed " + - "because of retry exhaustion and should c" + - "omplete if tried again.\022\302\001\n\014GetExecution" + - "\022+.flyteidl.admin.WorkflowExecutionGetRe" + - "quest\032\031.flyteidl.admin.Execution\"j\202\323\344\223\0027" + - "\0225/api/v1/executions/{id.project}/{id.do" + - "main}/{id.name}\222A*\032(Retrieve an existing" + - " workflow execution.\022\326\001\n\017UpdateExecution" + - "\022&.flyteidl.admin.ExecutionUpdateRequest" + - "\032\'.flyteidl.admin.ExecutionUpdateRespons" + - "e\"r\202\323\344\223\002:\0325/api/v1/executions/{id.projec" + - "t}/{id.domain}/{id.name}:\001*\222A/\032-Update e" + - "xecution belonging to project domain.\022\202\002" + - "\n\020GetExecutionData\022/.flyteidl.admin.Work" + - "flowExecutionGetDataRequest\0320.flyteidl.a" + - "dmin.WorkflowExecutionGetDataResponse\"\212\001" + - "\202\323\344\223\002<\022:/api/v1/data/executions/{id.proj" + - "ect}/{id.domain}/{id.name}\222AE\032CRetrieve " + - "input and output data from an existing w" + - "orkflow execution.\022\310\001\n\016ListExecutions\022#." + - "flyteidl.admin.ResourceListRequest\032\035.fly" + - "teidl.admin.ExecutionList\"r\202\323\344\223\002-\022+/api/" + - "v1/executions/{id.project}/{id.domain}\222A" + - "<\032:Fetch existing workflow executions ma" + - "tching input filters.\022\364\001\n\022TerminateExecu" + - "tion\022).flyteidl.admin.ExecutionTerminate" + - "Request\032*.flyteidl.admin.ExecutionTermin" + - "ateResponse\"\206\001\202\323\344\223\002:*5/api/v1/executions" + - "/{id.project}/{id.domain}/{id.name}:\001*\222A" + - "C\032ATerminate the active workflow executi" + - "on specified in the request.\022\374\001\n\020GetNode" + - "Execution\022\'.flyteidl.admin.NodeExecution" + - "GetRequest\032\035.flyteidl.admin.NodeExecutio" + - "n\"\237\001\202\323\344\223\002p\022n/api/v1/node_executions/{id." + - "execution_id.project}/{id.execution_id.d" + - "omain}/{id.execution_id.name}/{id.node_i" + - "d}\222A&\032$Retrieve an existing node executi" + - "on.\022\232\002\n\022ListNodeExecutions\022(.flyteidl.ad" + - "min.NodeExecutionListRequest\032!.flyteidl." + - "admin.NodeExecutionList\"\266\001\202\323\344\223\002u\022s/api/v" + - "1/node_executions/{workflow_execution_id" + - ".project}/{workflow_execution_id.domain}" + - "/{workflow_execution_id.name}\222A8\0326Fetch " + - "existing node executions matching input " + - "filters.\022\357\004\n\031ListNodeExecutionsForTask\022/" + - ".flyteidl.admin.NodeExecutionForTaskList" + - "Request\032!.flyteidl.admin.NodeExecutionLi" + - "st\"\375\003\202\323\344\223\002\254\003\022\251\003/api/v1/children/task_exe" + - "cutions/{task_execution_id.node_executio" + - "n_id.execution_id.project}/{task_executi" + - "on_id.node_execution_id.execution_id.dom" + - "ain}/{task_execution_id.node_execution_i" + - "d.execution_id.name}/{task_execution_id." + - "node_execution_id.node_id}/{task_executi" + - "on_id.task_id.project}/{task_execution_i" + - "d.task_id.domain}/{task_execution_id.tas" + - "k_id.name}/{task_execution_id.task_id.ve" + - "rsion}/{task_execution_id.retry_attempt}" + - "\222AG\032EFetch child node executions launche" + - "d by the specified task execution.\022\263\002\n\024G" + - "etNodeExecutionData\022+.flyteidl.admin.Nod" + - "eExecutionGetDataRequest\032,.flyteidl.admi" + - "n.NodeExecutionGetDataResponse\"\277\001\202\323\344\223\002u\022" + - "s/api/v1/data/node_executions/{id.execut" + - "ion_id.project}/{id.execution_id.domain}" + - "/{id.execution_id.name}/{id.node_id}\222AA\032" + - "?Retrieve input and output data from an " + - "existing node execution.\022\227\001\n\017RegisterPro" + - "ject\022&.flyteidl.admin.ProjectRegisterReq" + - "uest\032\'.flyteidl.admin.ProjectRegisterRes" + - "ponse\"3\202\323\344\223\002\025\"\020/api/v1/projects:\001*\222A\025\032\023R" + - "egister a project.\022\207\001\n\rUpdateProject\022\027.f" + - "lyteidl.admin.Project\032%.flyteidl.admin.P" + - "rojectUpdateResponse\"6\202\323\344\223\002\032\032\025/api/v1/pr" + - "ojects/{id}:\001*\222A\023\032\021Update a project.\022\205\001\n" + - "\014ListProjects\022\".flyteidl.admin.ProjectLi" + - "stRequest\032\030.flyteidl.admin.Projects\"7\202\323\344" + - "\223\002\022\022\020/api/v1/projects\222A\034\032\032Fetch register" + - "ed projects.\022\335\001\n\023CreateWorkflowEvent\022-.f" + - "lyteidl.admin.WorkflowExecutionEventRequ" + - "est\032..flyteidl.admin.WorkflowExecutionEv" + - "entResponse\"g\202\323\344\223\002\035\"\030/api/v1/events/work" + - "flows:\001*\222AA\032?Create a workflow execution" + - " event recording a phase transition.\022\311\001\n" + - "\017CreateNodeEvent\022).flyteidl.admin.NodeEx" + - "ecutionEventRequest\032*.flyteidl.admin.Nod" + - "eExecutionEventResponse\"_\202\323\344\223\002\031\"\024/api/v1" + - "/events/nodes:\001*\222A=\032;Create a node execu" + - "tion event recording a phase transition." + - "\022\311\001\n\017CreateTaskEvent\022).flyteidl.admin.Ta" + - "skExecutionEventRequest\032*.flyteidl.admin" + - ".TaskExecutionEventResponse\"_\202\323\344\223\002\031\"\024/ap" + - "i/v1/events/tasks:\001*\222A=\032;Create a task e" + - "xecution event recording a phase transit" + - "ion.\022\251\003\n\020GetTaskExecution\022\'.flyteidl.adm" + - "in.TaskExecutionGetRequest\032\035.flyteidl.ad" + - "min.TaskExecution\"\314\002\202\323\344\223\002\234\002\022\231\002/api/v1/ta" + - "sk_executions/{id.node_execution_id.exec" + - "ution_id.project}/{id.node_execution_id." + - "execution_id.domain}/{id.node_execution_" + - "id.execution_id.name}/{id.node_execution" + - "_id.node_id}/{id.task_id.project}/{id.ta" + - "sk_id.domain}/{id.task_id.name}/{id.task" + - "_id.version}/{id.retry_attempt}\222A&\032$Retr" + - "ieve an existing task execution.\022\323\002\n\022Lis" + - "tTaskExecutions\022(.flyteidl.admin.TaskExe" + - "cutionListRequest\032!.flyteidl.admin.TaskE" + - "xecutionList\"\357\001\202\323\344\223\002\255\001\022\252\001/api/v1/task_ex" + - "ecutions/{node_execution_id.execution_id" + - ".project}/{node_execution_id.execution_i" + - "d.domain}/{node_execution_id.execution_i" + - "d.name}/{node_execution_id.node_id}\222A8\0326" + - "Fetch existing task executions matching " + - "input filters.\022\340\003\n\024GetTaskExecutionData\022" + - "+.flyteidl.admin.TaskExecutionGetDataReq" + - "uest\032,.flyteidl.admin.TaskExecutionGetDa" + - "taResponse\"\354\002\202\323\344\223\002\241\002\022\236\002/api/v1/data/task" + - "_executions/{id.node_execution_id.execut" + - "ion_id.project}/{id.node_execution_id.ex" + - "ecution_id.domain}/{id.node_execution_id" + - ".execution_id.name}/{id.node_execution_i" + - "d.node_id}/{id.task_id.project}/{id.task" + - "_id.domain}/{id.task_id.name}/{id.task_i" + - "d.version}/{id.retry_attempt}\222AA\032?Retrie" + + "ty that has already been registered.\022\314\001\n" + + "\rGetLaunchPlan\022 .flyteidl.admin.ObjectGe" + + "tRequest\032\032.flyteidl.admin.LaunchPlan\"}\202\323" + + "\344\223\002F\022D/api/v1/launch_plans/{id.project}/" + + "{id.domain}/{id.name}/{id.version}\222A.\032,R" + + "etrieve an existing launch plan definiti" + + "on.\022\363\001\n\023GetActiveLaunchPlan\022\'.flyteidl.a" + + "dmin.ActiveLaunchPlanRequest\032\032.flyteidl." + + "admin.LaunchPlan\"\226\001\202\323\344\223\002@\022>/api/v1/activ" + + "e_launch_plans/{id.project}/{id.domain}/" + + "{id.name}\222AM\032KRetrieve the active launch" + + " plan version specified by input request" + + " filters.\022\353\001\n\025ListActiveLaunchPlans\022+.fl" + + "yteidl.admin.ActiveLaunchPlanListRequest" + + "\032\036.flyteidl.admin.LaunchPlanList\"\204\001\202\323\344\223\002" + + "0\022./api/v1/active_launch_plans/{project}" + + "/{domain}\222AK\032IFetch the active launch pl" + + "an versions specified by input request f" + + "ilters.\022\363\001\n\021ListLaunchPlanIds\0220.flyteidl" + + ".admin.NamedEntityIdentifierListRequest\032" + + ").flyteidl.admin.NamedEntityIdentifierLi" + + "st\"\200\001\202\323\344\223\002,\022*/api/v1/launch_plan_ids/{pr" + + "oject}/{domain}\222AK\032IFetch existing launc" + + "h plan definition identifiers matching i" + + "nput filters.\022\214\002\n\017ListLaunchPlans\022#.flyt" + + "eidl.admin.ResourceListRequest\032\036.flyteid" + + "l.admin.LaunchPlanList\"\263\001\202\323\344\223\002j\0227/api/v1" + + "/launch_plans/{id.project}/{id.domain}/{" + + "id.name}Z/\022-/api/v1/launch_plans/{id.pro" + + "ject}/{id.domain}\222A@\032>Fetch existing lau" + + "nch plan definitions matching input filt" + + "ers.\022\300\006\n\020UpdateLaunchPlan\022\'.flyteidl.adm" + + "in.LaunchPlanUpdateRequest\032(.flyteidl.ad" + + "min.LaunchPlanUpdateResponse\"\330\005\202\323\344\223\002I\032D/" + + "api/v1/launch_plans/{id.project}/{id.dom" + + "ain}/{id.name}/{id.version}:\001*\222A\205\005\032\202\005Upd" + + "ate the status of an existing launch pla" + + "n definition. At most one launch plan ve" + + "rsion for a given {project, domain, name" + + "} can be active at a time. If this call " + + "sets a launch plan to active and existin" + + "g version is already active, the result " + + "of this call will be that the formerly a" + + "ctive launch plan will be made inactive " + + "and specified launch plan in this reques" + + "t will be made active. In the event that" + + " the formerly active launch plan had a s" + + "chedule associated it with it, this sche" + + "dule will be disabled. If the reference " + + "launch plan in this request is being set" + + " to active and has a schedule associated" + + " with it, the schedule will be enabled.\022" + + "\242\001\n\017CreateExecution\022&.flyteidl.admin.Exe" + + "cutionCreateRequest\032\'.flyteidl.admin.Exe" + + "cutionCreateResponse\">\202\323\344\223\002\027\"\022/api/v1/ex" + + "ecutions:\001*\222A\036\032\034Create a workflow execut" + + "ion.\022\261\001\n\021RelaunchExecution\022(.flyteidl.ad" + + "min.ExecutionRelaunchRequest\032\'.flyteidl." + + "admin.ExecutionCreateResponse\"I\202\323\344\223\002 \"\033/" + + "api/v1/executions/relaunch:\001*\222A \032\036Relaun" + + "ch a workflow execution.\022\235\005\n\020RecoverExec" + + "ution\022\'.flyteidl.admin.ExecutionRecoverR" + + "equest\032\'.flyteidl.admin.ExecutionCreateR" + + "esponse\"\266\004\202\323\344\223\002\037\"\032/api/v1/executions/rec" + + "over:\001*\222A\215\004\032\212\004Recreates a previously-run" + + " workflow execution that will only start" + + " executing from the last known failure p" + + "oint. In Recover mode, users cannot chan" + + "ge any input parameters or update the ve" + + "rsion of the execution. This is extremel" + + "y useful to recover from system errors a" + + "nd byzantine faults like - Loss of K8s c" + + "luster, bugs in platform or instability," + + " machine failures, downstream system fai" + + "lures (downstream services), or simply t" + + "o recover executions that failed because" + + " of retry exhaustion and should complete" + + " if tried again.\022\302\001\n\014GetExecution\022+.flyt" + + "eidl.admin.WorkflowExecutionGetRequest\032\031" + + ".flyteidl.admin.Execution\"j\202\323\344\223\0027\0225/api/" + + "v1/executions/{id.project}/{id.domain}/{" + + "id.name}\222A*\032(Retrieve an existing workfl" + + "ow execution.\022\326\001\n\017UpdateExecution\022&.flyt" + + "eidl.admin.ExecutionUpdateRequest\032\'.flyt" + + "eidl.admin.ExecutionUpdateResponse\"r\202\323\344\223" + + "\002:\0325/api/v1/executions/{id.project}/{id." + + "domain}/{id.name}:\001*\222A/\032-Update executio" + + "n belonging to project domain.\022\202\002\n\020GetEx" + + "ecutionData\022/.flyteidl.admin.WorkflowExe" + + "cutionGetDataRequest\0320.flyteidl.admin.Wo" + + "rkflowExecutionGetDataResponse\"\212\001\202\323\344\223\002<\022" + + ":/api/v1/data/executions/{id.project}/{i" + + "d.domain}/{id.name}\222AE\032CRetrieve input a" + + "nd output data from an existing workflow" + + " execution.\022\310\001\n\016ListExecutions\022#.flyteid" + + "l.admin.ResourceListRequest\032\035.flyteidl.a" + + "dmin.ExecutionList\"r\202\323\344\223\002-\022+/api/v1/exec" + + "utions/{id.project}/{id.domain}\222A<\032:Fetc" + + "h existing workflow executions matching " + + "input filters.\022\364\001\n\022TerminateExecution\022)." + + "flyteidl.admin.ExecutionTerminateRequest" + + "\032*.flyteidl.admin.ExecutionTerminateResp" + + "onse\"\206\001\202\323\344\223\002:*5/api/v1/executions/{id.pr" + + "oject}/{id.domain}/{id.name}:\001*\222AC\032ATerm" + + "inate the active workflow execution spec" + + "ified in the request.\022\374\001\n\020GetNodeExecuti" + + "on\022\'.flyteidl.admin.NodeExecutionGetRequ" + + "est\032\035.flyteidl.admin.NodeExecution\"\237\001\202\323\344" + + "\223\002p\022n/api/v1/node_executions/{id.executi" + + "on_id.project}/{id.execution_id.domain}/" + + "{id.execution_id.name}/{id.node_id}\222A&\032$" + + "Retrieve an existing node execution.\022\232\002\n" + + "\022ListNodeExecutions\022(.flyteidl.admin.Nod" + + "eExecutionListRequest\032!.flyteidl.admin.N" + + "odeExecutionList\"\266\001\202\323\344\223\002u\022s/api/v1/node_" + + "executions/{workflow_execution_id.projec" + + "t}/{workflow_execution_id.domain}/{workf" + + "low_execution_id.name}\222A8\0326Fetch existin" + + "g node executions matching input filters" + + ".\022\357\004\n\031ListNodeExecutionsForTask\022/.flytei" + + "dl.admin.NodeExecutionForTaskListRequest" + + "\032!.flyteidl.admin.NodeExecutionList\"\375\003\202\323" + + "\344\223\002\254\003\022\251\003/api/v1/children/task_executions" + + "/{task_execution_id.node_execution_id.ex" + + "ecution_id.project}/{task_execution_id.n" + + "ode_execution_id.execution_id.domain}/{t" + + "ask_execution_id.node_execution_id.execu" + + "tion_id.name}/{task_execution_id.node_ex" + + "ecution_id.node_id}/{task_execution_id.t" + + "ask_id.project}/{task_execution_id.task_" + + "id.domain}/{task_execution_id.task_id.na" + + "me}/{task_execution_id.task_id.version}/" + + "{task_execution_id.retry_attempt}\222AG\032EFe" + + "tch child node executions launched by th" + + "e specified task execution.\022\263\002\n\024GetNodeE" + + "xecutionData\022+.flyteidl.admin.NodeExecut" + + "ionGetDataRequest\032,.flyteidl.admin.NodeE" + + "xecutionGetDataResponse\"\277\001\202\323\344\223\002u\022s/api/v" + + "1/data/node_executions/{id.execution_id." + + "project}/{id.execution_id.domain}/{id.ex" + + "ecution_id.name}/{id.node_id}\222AA\032?Retrie" + "ve input and output data from an existin" + - "g task execution.\022\277\002\n\035UpdateProjectDomai" + - "nAttributes\0224.flyteidl.admin.ProjectDoma" + - "inAttributesUpdateRequest\0325.flyteidl.adm" + - "in.ProjectDomainAttributesUpdateResponse" + - "\"\260\001\202\323\344\223\002O\032J/api/v1/project_domain_attrib" + - "utes/{attributes.project}/{attributes.do" + - "main}:\001*\222AX\032VUpdate the customized resou" + - "rce attributes associated with a project" + - "-domain combination\022\237\002\n\032GetProjectDomain" + - "Attributes\0221.flyteidl.admin.ProjectDomai" + - "nAttributesGetRequest\0322.flyteidl.admin.P" + - "rojectDomainAttributesGetResponse\"\231\001\202\323\344\223" + - "\0026\0224/api/v1/project_domain_attributes/{p" + - "roject}/{domain}\222AZ\032XRetrieve the custom" + - "ized resource attributes associated with" + - " a project-domain combination\022\251\002\n\035Delete" + - "ProjectDomainAttributes\0224.flyteidl.admin" + - ".ProjectDomainAttributesDeleteRequest\0325." + - "flyteidl.admin.ProjectDomainAttributesDe" + - "leteResponse\"\232\001\202\323\344\223\0029*4/api/v1/project_d" + - "omain_attributes/{project}/{domain}:\001*\222A" + - "X\032VDelete the customized resource attrib" + - "utes associated with a project-domain co" + - "mbination\022\377\001\n\027UpdateProjectAttributes\022.." + - "flyteidl.admin.ProjectAttributesUpdateRe" + - "quest\032/.flyteidl.admin.ProjectAttributes" + - "UpdateResponse\"\202\001\202\323\344\223\0024\032//api/v1/project" + - "_attributes/{attributes.project}:\001*\222AE\032C" + - "Update the customized resource attribute" + - "s associated with a project\022\351\001\n\024GetProje" + - "ctAttributes\022+.flyteidl.admin.ProjectAtt" + - "ributesGetRequest\032,.flyteidl.admin.Proje" + - "ctAttributesGetResponse\"v\202\323\344\223\002&\022$/api/v1" + - "/project_attributes/{project}\222AG\032ERetrie" + - "ve the customized resource attributes as" + - "sociated with a project\022\363\001\n\027DeleteProjec" + - "tAttributes\022..flyteidl.admin.ProjectAttr" + - "ibutesDeleteRequest\032/.flyteidl.admin.Pro" + - "jectAttributesDeleteResponse\"w\202\323\344\223\002)*$/a" + - "pi/v1/project_attributes/{project}:\001*\222AE" + - "\032CDelete the customized resource attribu" + - "tes associated with a project\022\316\002\n\030Update" + - "WorkflowAttributes\022/.flyteidl.admin.Work" + - "flowAttributesUpdateRequest\0320.flyteidl.a" + - "dmin.WorkflowAttributesUpdateResponse\"\316\001" + - "\202\323\344\223\002_\032Z/api/v1/workflow_attributes/{att" + - "ributes.project}/{attributes.domain}/{at" + - "tributes.workflow}:\001*\222Af\032dUpdate the cus" + - "tomized resource attributes associated w" + - "ith a project, domain and workflow combi" + - "nation\022\243\002\n\025GetWorkflowAttributes\022,.flyte" + - "idl.admin.WorkflowAttributesGetRequest\032-" + - ".flyteidl.admin.WorkflowAttributesGetRes" + - "ponse\"\254\001\202\323\344\223\002;\0229/api/v1/workflow_attribu" + - "tes/{project}/{domain}/{workflow}\222Ah\032fRe" + - "trieve the customized resource attribute" + - "s associated with a project, domain and " + - "workflow combination\022\255\002\n\030DeleteWorkflowA" + - "ttributes\022/.flyteidl.admin.WorkflowAttri" + - "butesDeleteRequest\0320.flyteidl.admin.Work" + - "flowAttributesDeleteResponse\"\255\001\202\323\344\223\002>*9/" + - "api/v1/workflow_attributes/{project}/{do" + - "main}/{workflow}:\001*\222Af\032dDelete the custo" + - "mized resource attributes associated wit" + - "h a project, domain and workflow combina" + - "tion\022\341\001\n\027ListMatchableAttributes\022..flyte" + - "idl.admin.ListMatchableAttributesRequest" + - "\032/.flyteidl.admin.ListMatchableAttribute" + - "sResponse\"e\202\323\344\223\002\036\022\034/api/v1/matchable_att" + - "ributes\222A>\032*9/api/v1/" + + "workflow_attributes/{project}/{domain}/{" + + "workflow}:\001*\222Af\032dDelete the customized r" + + "esource attributes associated with a pro" + + "ject, domain and workflow combination\022\341\001" + + "\n\027ListMatchableAttributes\022..flyteidl.adm" + + "in.ListMatchableAttributesRequest\032/.flyt" + + "eidl.admin.ListMatchableAttributesRespon" + + "se\"e\202\323\344\223\002\036\022\034/api/v1/matchable_attributes" + + "\222A>\032; + + /** + * Calls GetDescriptionEntity. + * @param request ObjectGetRequest message or plain object + * @param callback Node-style callback called with the error, if any, and DescriptionEntity + */ + public getDescriptionEntity(request: flyteidl.admin.IObjectGetRequest, callback: flyteidl.service.AdminService.GetDescriptionEntityCallback): void; + + /** + * Calls GetDescriptionEntity. + * @param request ObjectGetRequest message or plain object + * @returns Promise + */ + public getDescriptionEntity(request: flyteidl.admin.IObjectGetRequest): Promise; + + /** + * Calls ListDescriptionEntities. + * @param request DescriptionEntityListRequest message or plain object + * @param callback Node-style callback called with the error, if any, and DescriptionEntityList + */ + public listDescriptionEntities(request: flyteidl.admin.IDescriptionEntityListRequest, callback: flyteidl.service.AdminService.ListDescriptionEntitiesCallback): void; + + /** + * Calls ListDescriptionEntities. + * @param request DescriptionEntityListRequest message or plain object + * @returns Promise + */ + public listDescriptionEntities(request: flyteidl.admin.IDescriptionEntityListRequest): Promise; } namespace AdminService { @@ -17836,6 +18237,20 @@ export namespace flyteidl { * @param [response] GetVersionResponse */ type GetVersionCallback = (error: (Error|null), response?: flyteidl.admin.GetVersionResponse) => void; + + /** + * Callback as used by {@link flyteidl.service.AdminService#getDescriptionEntity}. + * @param error Error, if any + * @param [response] DescriptionEntity + */ + type GetDescriptionEntityCallback = (error: (Error|null), response?: flyteidl.admin.DescriptionEntity) => void; + + /** + * Callback as used by {@link flyteidl.service.AdminService#listDescriptionEntities}. + * @param error Error, if any + * @param [response] DescriptionEntityList + */ + type ListDescriptionEntitiesCallback = (error: (Error|null), response?: flyteidl.admin.DescriptionEntityList) => void; } /** Properties of a OAuth2MetadataRequest. */ diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index 1db5c465bb1..85e0c75ef9d 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -21026,6 +21026,859 @@ return RawOutputDataConfig; })(); + admin.DescriptionEntity = (function() { + + /** + * Properties of a DescriptionEntity. + * @memberof flyteidl.admin + * @interface IDescriptionEntity + * @property {flyteidl.core.IIdentifier|null} [id] DescriptionEntity id + * @property {string|null} [shortDescription] DescriptionEntity shortDescription + * @property {flyteidl.admin.IDescription|null} [longDescription] DescriptionEntity longDescription + * @property {flyteidl.admin.ISourceCode|null} [sourceCode] DescriptionEntity sourceCode + * @property {Array.|null} [tags] DescriptionEntity tags + */ + + /** + * Constructs a new DescriptionEntity. + * @memberof flyteidl.admin + * @classdesc Represents a DescriptionEntity. + * @implements IDescriptionEntity + * @constructor + * @param {flyteidl.admin.IDescriptionEntity=} [properties] Properties to set + */ + function DescriptionEntity(properties) { + this.tags = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DescriptionEntity id. + * @member {flyteidl.core.IIdentifier|null|undefined} id + * @memberof flyteidl.admin.DescriptionEntity + * @instance + */ + DescriptionEntity.prototype.id = null; + + /** + * DescriptionEntity shortDescription. + * @member {string} shortDescription + * @memberof flyteidl.admin.DescriptionEntity + * @instance + */ + DescriptionEntity.prototype.shortDescription = ""; + + /** + * DescriptionEntity longDescription. + * @member {flyteidl.admin.IDescription|null|undefined} longDescription + * @memberof flyteidl.admin.DescriptionEntity + * @instance + */ + DescriptionEntity.prototype.longDescription = null; + + /** + * DescriptionEntity sourceCode. + * @member {flyteidl.admin.ISourceCode|null|undefined} sourceCode + * @memberof flyteidl.admin.DescriptionEntity + * @instance + */ + DescriptionEntity.prototype.sourceCode = null; + + /** + * DescriptionEntity tags. + * @member {Array.} tags + * @memberof flyteidl.admin.DescriptionEntity + * @instance + */ + DescriptionEntity.prototype.tags = $util.emptyArray; + + /** + * Creates a new DescriptionEntity instance using the specified properties. + * @function create + * @memberof flyteidl.admin.DescriptionEntity + * @static + * @param {flyteidl.admin.IDescriptionEntity=} [properties] Properties to set + * @returns {flyteidl.admin.DescriptionEntity} DescriptionEntity instance + */ + DescriptionEntity.create = function create(properties) { + return new DescriptionEntity(properties); + }; + + /** + * Encodes the specified DescriptionEntity message. Does not implicitly {@link flyteidl.admin.DescriptionEntity.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.DescriptionEntity + * @static + * @param {flyteidl.admin.IDescriptionEntity} message DescriptionEntity message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DescriptionEntity.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.shortDescription != null && message.hasOwnProperty("shortDescription")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.shortDescription); + if (message.longDescription != null && message.hasOwnProperty("longDescription")) + $root.flyteidl.admin.Description.encode(message.longDescription, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.sourceCode != null && message.hasOwnProperty("sourceCode")) + $root.flyteidl.admin.SourceCode.encode(message.sourceCode, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.tags != null && message.tags.length) + for (var i = 0; i < message.tags.length; ++i) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.tags[i]); + return writer; + }; + + /** + * Decodes a DescriptionEntity message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.DescriptionEntity + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.DescriptionEntity} DescriptionEntity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DescriptionEntity.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.DescriptionEntity(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); + break; + case 2: + message.shortDescription = reader.string(); + break; + case 3: + message.longDescription = $root.flyteidl.admin.Description.decode(reader, reader.uint32()); + break; + case 4: + message.sourceCode = $root.flyteidl.admin.SourceCode.decode(reader, reader.uint32()); + break; + case 5: + if (!(message.tags && message.tags.length)) + message.tags = []; + message.tags.push(reader.string()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a DescriptionEntity message. + * @function verify + * @memberof flyteidl.admin.DescriptionEntity + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DescriptionEntity.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) { + var error = $root.flyteidl.core.Identifier.verify(message.id); + if (error) + return "id." + error; + } + if (message.shortDescription != null && message.hasOwnProperty("shortDescription")) + if (!$util.isString(message.shortDescription)) + return "shortDescription: string expected"; + if (message.longDescription != null && message.hasOwnProperty("longDescription")) { + var error = $root.flyteidl.admin.Description.verify(message.longDescription); + if (error) + return "longDescription." + error; + } + if (message.sourceCode != null && message.hasOwnProperty("sourceCode")) { + var error = $root.flyteidl.admin.SourceCode.verify(message.sourceCode); + if (error) + return "sourceCode." + error; + } + if (message.tags != null && message.hasOwnProperty("tags")) { + if (!Array.isArray(message.tags)) + return "tags: array expected"; + for (var i = 0; i < message.tags.length; ++i) + if (!$util.isString(message.tags[i])) + return "tags: string[] expected"; + } + return null; + }; + + return DescriptionEntity; + })(); + + /** + * DescriptionFormat enum. + * @name flyteidl.admin.DescriptionFormat + * @enum {string} + * @property {number} DESCRIPTION_FORMAT_UNKNOWN=0 DESCRIPTION_FORMAT_UNKNOWN value + * @property {number} DESCRIPTION_FORMAT_MARKDOWN=1 DESCRIPTION_FORMAT_MARKDOWN value + * @property {number} DESCRIPTION_FORMAT_HTML=2 DESCRIPTION_FORMAT_HTML value + * @property {number} DESCRIPTION_FORMAT_RST=3 DESCRIPTION_FORMAT_RST value + */ + admin.DescriptionFormat = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "DESCRIPTION_FORMAT_UNKNOWN"] = 0; + values[valuesById[1] = "DESCRIPTION_FORMAT_MARKDOWN"] = 1; + values[valuesById[2] = "DESCRIPTION_FORMAT_HTML"] = 2; + values[valuesById[3] = "DESCRIPTION_FORMAT_RST"] = 3; + return values; + })(); + + admin.Description = (function() { + + /** + * Properties of a Description. + * @memberof flyteidl.admin + * @interface IDescription + * @property {string|null} [value] Description value + * @property {string|null} [uri] Description uri + * @property {flyteidl.admin.DescriptionFormat|null} [format] Description format + * @property {string|null} [iconLink] Description iconLink + */ + + /** + * Constructs a new Description. + * @memberof flyteidl.admin + * @classdesc Represents a Description. + * @implements IDescription + * @constructor + * @param {flyteidl.admin.IDescription=} [properties] Properties to set + */ + function Description(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Description value. + * @member {string} value + * @memberof flyteidl.admin.Description + * @instance + */ + Description.prototype.value = ""; + + /** + * Description uri. + * @member {string} uri + * @memberof flyteidl.admin.Description + * @instance + */ + Description.prototype.uri = ""; + + /** + * Description format. + * @member {flyteidl.admin.DescriptionFormat} format + * @memberof flyteidl.admin.Description + * @instance + */ + Description.prototype.format = 0; + + /** + * Description iconLink. + * @member {string} iconLink + * @memberof flyteidl.admin.Description + * @instance + */ + Description.prototype.iconLink = ""; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Description content. + * @member {"value"|"uri"|undefined} content + * @memberof flyteidl.admin.Description + * @instance + */ + Object.defineProperty(Description.prototype, "content", { + get: $util.oneOfGetter($oneOfFields = ["value", "uri"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Description instance using the specified properties. + * @function create + * @memberof flyteidl.admin.Description + * @static + * @param {flyteidl.admin.IDescription=} [properties] Properties to set + * @returns {flyteidl.admin.Description} Description instance + */ + Description.create = function create(properties) { + return new Description(properties); + }; + + /** + * Encodes the specified Description message. Does not implicitly {@link flyteidl.admin.Description.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.Description + * @static + * @param {flyteidl.admin.IDescription} message Description message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Description.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.value); + if (message.uri != null && message.hasOwnProperty("uri")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.uri); + if (message.format != null && message.hasOwnProperty("format")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.format); + if (message.iconLink != null && message.hasOwnProperty("iconLink")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.iconLink); + return writer; + }; + + /** + * Decodes a Description message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.Description + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.Description} Description + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Description.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.Description(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.string(); + break; + case 2: + message.uri = reader.string(); + break; + case 3: + message.format = reader.int32(); + break; + case 4: + message.iconLink = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a Description message. + * @function verify + * @memberof flyteidl.admin.Description + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Description.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.value != null && message.hasOwnProperty("value")) { + properties.content = 1; + if (!$util.isString(message.value)) + return "value: string expected"; + } + if (message.uri != null && message.hasOwnProperty("uri")) { + if (properties.content === 1) + return "content: multiple values"; + properties.content = 1; + if (!$util.isString(message.uri)) + return "uri: string expected"; + } + if (message.format != null && message.hasOwnProperty("format")) + switch (message.format) { + default: + return "format: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + if (message.iconLink != null && message.hasOwnProperty("iconLink")) + if (!$util.isString(message.iconLink)) + return "iconLink: string expected"; + return null; + }; + + return Description; + })(); + + admin.SourceCode = (function() { + + /** + * Properties of a SourceCode. + * @memberof flyteidl.admin + * @interface ISourceCode + * @property {string|null} [link] SourceCode link + */ + + /** + * Constructs a new SourceCode. + * @memberof flyteidl.admin + * @classdesc Represents a SourceCode. + * @implements ISourceCode + * @constructor + * @param {flyteidl.admin.ISourceCode=} [properties] Properties to set + */ + function SourceCode(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SourceCode link. + * @member {string} link + * @memberof flyteidl.admin.SourceCode + * @instance + */ + SourceCode.prototype.link = ""; + + /** + * Creates a new SourceCode instance using the specified properties. + * @function create + * @memberof flyteidl.admin.SourceCode + * @static + * @param {flyteidl.admin.ISourceCode=} [properties] Properties to set + * @returns {flyteidl.admin.SourceCode} SourceCode instance + */ + SourceCode.create = function create(properties) { + return new SourceCode(properties); + }; + + /** + * Encodes the specified SourceCode message. Does not implicitly {@link flyteidl.admin.SourceCode.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.SourceCode + * @static + * @param {flyteidl.admin.ISourceCode} message SourceCode message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SourceCode.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.link != null && message.hasOwnProperty("link")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.link); + return writer; + }; + + /** + * Decodes a SourceCode message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.SourceCode + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.SourceCode} SourceCode + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SourceCode.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.SourceCode(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.link = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a SourceCode message. + * @function verify + * @memberof flyteidl.admin.SourceCode + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SourceCode.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.link != null && message.hasOwnProperty("link")) + if (!$util.isString(message.link)) + return "link: string expected"; + return null; + }; + + return SourceCode; + })(); + + admin.DescriptionEntityList = (function() { + + /** + * Properties of a DescriptionEntityList. + * @memberof flyteidl.admin + * @interface IDescriptionEntityList + * @property {Array.|null} [descriptionEntities] DescriptionEntityList descriptionEntities + * @property {string|null} [token] DescriptionEntityList token + */ + + /** + * Constructs a new DescriptionEntityList. + * @memberof flyteidl.admin + * @classdesc Represents a DescriptionEntityList. + * @implements IDescriptionEntityList + * @constructor + * @param {flyteidl.admin.IDescriptionEntityList=} [properties] Properties to set + */ + function DescriptionEntityList(properties) { + this.descriptionEntities = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DescriptionEntityList descriptionEntities. + * @member {Array.} descriptionEntities + * @memberof flyteidl.admin.DescriptionEntityList + * @instance + */ + DescriptionEntityList.prototype.descriptionEntities = $util.emptyArray; + + /** + * DescriptionEntityList token. + * @member {string} token + * @memberof flyteidl.admin.DescriptionEntityList + * @instance + */ + DescriptionEntityList.prototype.token = ""; + + /** + * Creates a new DescriptionEntityList instance using the specified properties. + * @function create + * @memberof flyteidl.admin.DescriptionEntityList + * @static + * @param {flyteidl.admin.IDescriptionEntityList=} [properties] Properties to set + * @returns {flyteidl.admin.DescriptionEntityList} DescriptionEntityList instance + */ + DescriptionEntityList.create = function create(properties) { + return new DescriptionEntityList(properties); + }; + + /** + * Encodes the specified DescriptionEntityList message. Does not implicitly {@link flyteidl.admin.DescriptionEntityList.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.DescriptionEntityList + * @static + * @param {flyteidl.admin.IDescriptionEntityList} message DescriptionEntityList message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DescriptionEntityList.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.descriptionEntities != null && message.descriptionEntities.length) + for (var i = 0; i < message.descriptionEntities.length; ++i) + $root.flyteidl.admin.DescriptionEntity.encode(message.descriptionEntities[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.token != null && message.hasOwnProperty("token")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.token); + return writer; + }; + + /** + * Decodes a DescriptionEntityList message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.DescriptionEntityList + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.DescriptionEntityList} DescriptionEntityList + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DescriptionEntityList.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.DescriptionEntityList(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.descriptionEntities && message.descriptionEntities.length)) + message.descriptionEntities = []; + message.descriptionEntities.push($root.flyteidl.admin.DescriptionEntity.decode(reader, reader.uint32())); + break; + case 2: + message.token = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a DescriptionEntityList message. + * @function verify + * @memberof flyteidl.admin.DescriptionEntityList + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DescriptionEntityList.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.descriptionEntities != null && message.hasOwnProperty("descriptionEntities")) { + if (!Array.isArray(message.descriptionEntities)) + return "descriptionEntities: array expected"; + for (var i = 0; i < message.descriptionEntities.length; ++i) { + var error = $root.flyteidl.admin.DescriptionEntity.verify(message.descriptionEntities[i]); + if (error) + return "descriptionEntities." + error; + } + } + if (message.token != null && message.hasOwnProperty("token")) + if (!$util.isString(message.token)) + return "token: string expected"; + return null; + }; + + return DescriptionEntityList; + })(); + + admin.DescriptionEntityListRequest = (function() { + + /** + * Properties of a DescriptionEntityListRequest. + * @memberof flyteidl.admin + * @interface IDescriptionEntityListRequest + * @property {flyteidl.core.ResourceType|null} [resourceType] DescriptionEntityListRequest resourceType + * @property {flyteidl.admin.INamedEntityIdentifier|null} [id] DescriptionEntityListRequest id + * @property {number|null} [limit] DescriptionEntityListRequest limit + * @property {string|null} [token] DescriptionEntityListRequest token + * @property {string|null} [filters] DescriptionEntityListRequest filters + * @property {flyteidl.admin.ISort|null} [sortBy] DescriptionEntityListRequest sortBy + */ + + /** + * Constructs a new DescriptionEntityListRequest. + * @memberof flyteidl.admin + * @classdesc Represents a DescriptionEntityListRequest. + * @implements IDescriptionEntityListRequest + * @constructor + * @param {flyteidl.admin.IDescriptionEntityListRequest=} [properties] Properties to set + */ + function DescriptionEntityListRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DescriptionEntityListRequest resourceType. + * @member {flyteidl.core.ResourceType} resourceType + * @memberof flyteidl.admin.DescriptionEntityListRequest + * @instance + */ + DescriptionEntityListRequest.prototype.resourceType = 0; + + /** + * DescriptionEntityListRequest id. + * @member {flyteidl.admin.INamedEntityIdentifier|null|undefined} id + * @memberof flyteidl.admin.DescriptionEntityListRequest + * @instance + */ + DescriptionEntityListRequest.prototype.id = null; + + /** + * DescriptionEntityListRequest limit. + * @member {number} limit + * @memberof flyteidl.admin.DescriptionEntityListRequest + * @instance + */ + DescriptionEntityListRequest.prototype.limit = 0; + + /** + * DescriptionEntityListRequest token. + * @member {string} token + * @memberof flyteidl.admin.DescriptionEntityListRequest + * @instance + */ + DescriptionEntityListRequest.prototype.token = ""; + + /** + * DescriptionEntityListRequest filters. + * @member {string} filters + * @memberof flyteidl.admin.DescriptionEntityListRequest + * @instance + */ + DescriptionEntityListRequest.prototype.filters = ""; + + /** + * DescriptionEntityListRequest sortBy. + * @member {flyteidl.admin.ISort|null|undefined} sortBy + * @memberof flyteidl.admin.DescriptionEntityListRequest + * @instance + */ + DescriptionEntityListRequest.prototype.sortBy = null; + + /** + * Creates a new DescriptionEntityListRequest instance using the specified properties. + * @function create + * @memberof flyteidl.admin.DescriptionEntityListRequest + * @static + * @param {flyteidl.admin.IDescriptionEntityListRequest=} [properties] Properties to set + * @returns {flyteidl.admin.DescriptionEntityListRequest} DescriptionEntityListRequest instance + */ + DescriptionEntityListRequest.create = function create(properties) { + return new DescriptionEntityListRequest(properties); + }; + + /** + * Encodes the specified DescriptionEntityListRequest message. Does not implicitly {@link flyteidl.admin.DescriptionEntityListRequest.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.DescriptionEntityListRequest + * @static + * @param {flyteidl.admin.IDescriptionEntityListRequest} message DescriptionEntityListRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DescriptionEntityListRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.resourceType != null && message.hasOwnProperty("resourceType")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.resourceType); + if (message.id != null && message.hasOwnProperty("id")) + $root.flyteidl.admin.NamedEntityIdentifier.encode(message.id, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.limit != null && message.hasOwnProperty("limit")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.limit); + if (message.token != null && message.hasOwnProperty("token")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.token); + if (message.filters != null && message.hasOwnProperty("filters")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.filters); + if (message.sortBy != null && message.hasOwnProperty("sortBy")) + $root.flyteidl.admin.Sort.encode(message.sortBy, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + return writer; + }; + + /** + * Decodes a DescriptionEntityListRequest message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.DescriptionEntityListRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.DescriptionEntityListRequest} DescriptionEntityListRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DescriptionEntityListRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.DescriptionEntityListRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.resourceType = reader.int32(); + break; + case 2: + message.id = $root.flyteidl.admin.NamedEntityIdentifier.decode(reader, reader.uint32()); + break; + case 3: + message.limit = reader.uint32(); + break; + case 4: + message.token = reader.string(); + break; + case 5: + message.filters = reader.string(); + break; + case 6: + message.sortBy = $root.flyteidl.admin.Sort.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a DescriptionEntityListRequest message. + * @function verify + * @memberof flyteidl.admin.DescriptionEntityListRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DescriptionEntityListRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.resourceType != null && message.hasOwnProperty("resourceType")) + switch (message.resourceType) { + default: + return "resourceType: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } + if (message.id != null && message.hasOwnProperty("id")) { + var error = $root.flyteidl.admin.NamedEntityIdentifier.verify(message.id); + if (error) + return "id." + error; + } + if (message.limit != null && message.hasOwnProperty("limit")) + if (!$util.isInteger(message.limit)) + return "limit: integer expected"; + if (message.token != null && message.hasOwnProperty("token")) + if (!$util.isString(message.token)) + return "token: string expected"; + if (message.filters != null && message.hasOwnProperty("filters")) + if (!$util.isString(message.filters)) + return "filters: string expected"; + if (message.sortBy != null && message.hasOwnProperty("sortBy")) { + var error = $root.flyteidl.admin.Sort.verify(message.sortBy); + if (error) + return "sortBy." + error; + } + return null; + }; + + return DescriptionEntityListRequest; + })(); + admin.EventErrorAlreadyInTerminalState = (function() { /** @@ -35645,6 +36498,7 @@ * @interface ITask * @property {flyteidl.core.IIdentifier|null} [id] Task id * @property {flyteidl.admin.ITaskClosure|null} [closure] Task closure + * @property {string|null} [shortDescription] Task shortDescription */ /** @@ -35678,6 +36532,14 @@ */ Task.prototype.closure = null; + /** + * Task shortDescription. + * @member {string} shortDescription + * @memberof flyteidl.admin.Task + * @instance + */ + Task.prototype.shortDescription = ""; + /** * Creates a new Task instance using the specified properties. * @function create @@ -35706,6 +36568,8 @@ $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.closure != null && message.hasOwnProperty("closure")) $root.flyteidl.admin.TaskClosure.encode(message.closure, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.shortDescription != null && message.hasOwnProperty("shortDescription")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.shortDescription); return writer; }; @@ -35733,6 +36597,9 @@ case 2: message.closure = $root.flyteidl.admin.TaskClosure.decode(reader, reader.uint32()); break; + case 3: + message.shortDescription = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -35762,6 +36629,9 @@ if (error) return "closure." + error; } + if (message.shortDescription != null && message.hasOwnProperty("shortDescription")) + if (!$util.isString(message.shortDescription)) + return "shortDescription: string expected"; return null; }; @@ -35912,6 +36782,7 @@ * @memberof flyteidl.admin * @interface ITaskSpec * @property {flyteidl.core.ITaskTemplate|null} [template] TaskSpec template + * @property {flyteidl.admin.IDescriptionEntity|null} [description] TaskSpec description */ /** @@ -35937,6 +36808,14 @@ */ TaskSpec.prototype.template = null; + /** + * TaskSpec description. + * @member {flyteidl.admin.IDescriptionEntity|null|undefined} description + * @memberof flyteidl.admin.TaskSpec + * @instance + */ + TaskSpec.prototype.description = null; + /** * Creates a new TaskSpec instance using the specified properties. * @function create @@ -35963,6 +36842,8 @@ writer = $Writer.create(); if (message.template != null && message.hasOwnProperty("template")) $root.flyteidl.core.TaskTemplate.encode(message.template, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.description != null && message.hasOwnProperty("description")) + $root.flyteidl.admin.DescriptionEntity.encode(message.description, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; @@ -35987,6 +36868,9 @@ case 1: message.template = $root.flyteidl.core.TaskTemplate.decode(reader, reader.uint32()); break; + case 2: + message.description = $root.flyteidl.admin.DescriptionEntity.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -36011,6 +36895,11 @@ if (error) return "template." + error; } + if (message.description != null && message.hasOwnProperty("description")) { + var error = $root.flyteidl.admin.DescriptionEntity.verify(message.description); + if (error) + return "description." + error; + } return null; }; @@ -38001,6 +38890,7 @@ * @interface IWorkflow * @property {flyteidl.core.IIdentifier|null} [id] Workflow id * @property {flyteidl.admin.IWorkflowClosure|null} [closure] Workflow closure + * @property {string|null} [shortDescription] Workflow shortDescription */ /** @@ -38034,6 +38924,14 @@ */ Workflow.prototype.closure = null; + /** + * Workflow shortDescription. + * @member {string} shortDescription + * @memberof flyteidl.admin.Workflow + * @instance + */ + Workflow.prototype.shortDescription = ""; + /** * Creates a new Workflow instance using the specified properties. * @function create @@ -38062,6 +38960,8 @@ $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.closure != null && message.hasOwnProperty("closure")) $root.flyteidl.admin.WorkflowClosure.encode(message.closure, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.shortDescription != null && message.hasOwnProperty("shortDescription")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.shortDescription); return writer; }; @@ -38089,6 +38989,9 @@ case 2: message.closure = $root.flyteidl.admin.WorkflowClosure.decode(reader, reader.uint32()); break; + case 3: + message.shortDescription = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -38118,6 +39021,9 @@ if (error) return "closure." + error; } + if (message.shortDescription != null && message.hasOwnProperty("shortDescription")) + if (!$util.isString(message.shortDescription)) + return "shortDescription: string expected"; return null; }; @@ -38269,6 +39175,7 @@ * @interface IWorkflowSpec * @property {flyteidl.core.IWorkflowTemplate|null} [template] WorkflowSpec template * @property {Array.|null} [subWorkflows] WorkflowSpec subWorkflows + * @property {flyteidl.admin.IDescriptionEntity|null} [description] WorkflowSpec description */ /** @@ -38303,6 +39210,14 @@ */ WorkflowSpec.prototype.subWorkflows = $util.emptyArray; + /** + * WorkflowSpec description. + * @member {flyteidl.admin.IDescriptionEntity|null|undefined} description + * @memberof flyteidl.admin.WorkflowSpec + * @instance + */ + WorkflowSpec.prototype.description = null; + /** * Creates a new WorkflowSpec instance using the specified properties. * @function create @@ -38332,6 +39247,8 @@ if (message.subWorkflows != null && message.subWorkflows.length) for (var i = 0; i < message.subWorkflows.length; ++i) $root.flyteidl.core.WorkflowTemplate.encode(message.subWorkflows[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.description != null && message.hasOwnProperty("description")) + $root.flyteidl.admin.DescriptionEntity.encode(message.description, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -38361,6 +39278,9 @@ message.subWorkflows = []; message.subWorkflows.push($root.flyteidl.core.WorkflowTemplate.decode(reader, reader.uint32())); break; + case 3: + message.description = $root.flyteidl.admin.DescriptionEntity.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -38394,6 +39314,11 @@ return "subWorkflows." + error; } } + if (message.description != null && message.hasOwnProperty("description")) { + var error = $root.flyteidl.admin.DescriptionEntity.verify(message.description); + if (error) + return "description." + error; + } return null; }; @@ -41520,6 +42445,72 @@ * @variation 2 */ + /** + * Callback as used by {@link flyteidl.service.AdminService#getDescriptionEntity}. + * @memberof flyteidl.service.AdminService + * @typedef GetDescriptionEntityCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {flyteidl.admin.DescriptionEntity} [response] DescriptionEntity + */ + + /** + * Calls GetDescriptionEntity. + * @function getDescriptionEntity + * @memberof flyteidl.service.AdminService + * @instance + * @param {flyteidl.admin.IObjectGetRequest} request ObjectGetRequest message or plain object + * @param {flyteidl.service.AdminService.GetDescriptionEntityCallback} callback Node-style callback called with the error, if any, and DescriptionEntity + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(AdminService.prototype.getDescriptionEntity = function getDescriptionEntity(request, callback) { + return this.rpcCall(getDescriptionEntity, $root.flyteidl.admin.ObjectGetRequest, $root.flyteidl.admin.DescriptionEntity, request, callback); + }, "name", { value: "GetDescriptionEntity" }); + + /** + * Calls GetDescriptionEntity. + * @function getDescriptionEntity + * @memberof flyteidl.service.AdminService + * @instance + * @param {flyteidl.admin.IObjectGetRequest} request ObjectGetRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link flyteidl.service.AdminService#listDescriptionEntities}. + * @memberof flyteidl.service.AdminService + * @typedef ListDescriptionEntitiesCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {flyteidl.admin.DescriptionEntityList} [response] DescriptionEntityList + */ + + /** + * Calls ListDescriptionEntities. + * @function listDescriptionEntities + * @memberof flyteidl.service.AdminService + * @instance + * @param {flyteidl.admin.IDescriptionEntityListRequest} request DescriptionEntityListRequest message or plain object + * @param {flyteidl.service.AdminService.ListDescriptionEntitiesCallback} callback Node-style callback called with the error, if any, and DescriptionEntityList + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(AdminService.prototype.listDescriptionEntities = function listDescriptionEntities(request, callback) { + return this.rpcCall(listDescriptionEntities, $root.flyteidl.admin.DescriptionEntityListRequest, $root.flyteidl.admin.DescriptionEntityList, request, callback); + }, "name", { value: "ListDescriptionEntities" }); + + /** + * Calls ListDescriptionEntities. + * @function listDescriptionEntities + * @memberof flyteidl.service.AdminService + * @instance + * @param {flyteidl.admin.IDescriptionEntityListRequest} request DescriptionEntityListRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + return AdminService; })(); diff --git a/flyteidl/gen/pb_python/flyteidl/admin/description_entity_pb2.py b/flyteidl/gen/pb_python/flyteidl/admin/description_entity_pb2.py new file mode 100644 index 00000000000..5dba0511dc3 --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/admin/description_entity_pb2.py @@ -0,0 +1,375 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: flyteidl/admin/description_entity.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 +from flyteidl.admin import common_pb2 as flyteidl_dot_admin_dot_common__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='flyteidl/admin/description_entity.proto', + package='flyteidl.admin', + syntax='proto3', + serialized_options=_b('Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin'), + serialized_pb=_b('\n\'flyteidl/admin/description_entity.proto\x12\x0e\x66lyteidl.admin\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1b\x66lyteidl/admin/common.proto\"\xcb\x01\n\x11\x44\x65scriptionEntity\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12\x19\n\x11short_description\x18\x02 \x01(\t\x12\x35\n\x10long_description\x18\x03 \x01(\x0b\x32\x1b.flyteidl.admin.Description\x12/\n\x0bsource_code\x18\x04 \x01(\x0b\x32\x1a.flyteidl.admin.SourceCode\x12\x0c\n\x04tags\x18\x05 \x03(\t\"~\n\x0b\x44\x65scription\x12\x0f\n\x05value\x18\x01 \x01(\tH\x00\x12\r\n\x03uri\x18\x02 \x01(\tH\x00\x12\x31\n\x06\x66ormat\x18\x03 \x01(\x0e\x32!.flyteidl.admin.DescriptionFormat\x12\x11\n\ticon_link\x18\x04 \x01(\tB\t\n\x07\x63ontent\"\x1a\n\nSourceCode\x12\x0c\n\x04link\x18\x01 \x01(\t\"f\n\x15\x44\x65scriptionEntityList\x12>\n\x13\x64\x65scriptionEntities\x18\x01 \x03(\x0b\x32!.flyteidl.admin.DescriptionEntity\x12\r\n\x05token\x18\x02 \x01(\t\"\xdb\x01\n\x1c\x44\x65scriptionEntityListRequest\x12\x32\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceType\x12\x31\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifier\x12\r\n\x05limit\x18\x03 \x01(\r\x12\r\n\x05token\x18\x04 \x01(\t\x12\x0f\n\x07\x66ilters\x18\x05 \x01(\t\x12%\n\x07sort_by\x18\x06 \x01(\x0b\x32\x14.flyteidl.admin.Sort*\x8d\x01\n\x11\x44\x65scriptionFormat\x12\x1e\n\x1a\x44\x45SCRIPTION_FORMAT_UNKNOWN\x10\x00\x12\x1f\n\x1b\x44\x45SCRIPTION_FORMAT_MARKDOWN\x10\x01\x12\x1b\n\x17\x44\x45SCRIPTION_FORMAT_HTML\x10\x02\x12\x1a\n\x16\x44\x45SCRIPTION_FORMAT_RST\x10\x03\x42\x37Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') + , + dependencies=[flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_common__pb2.DESCRIPTOR,]) + +_DESCRIPTIONFORMAT = _descriptor.EnumDescriptor( + name='DescriptionFormat', + full_name='flyteidl.admin.DescriptionFormat', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='DESCRIPTION_FORMAT_UNKNOWN', index=0, number=0, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='DESCRIPTION_FORMAT_MARKDOWN', index=1, number=1, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='DESCRIPTION_FORMAT_HTML', index=2, number=2, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='DESCRIPTION_FORMAT_RST', index=3, number=3, + serialized_options=None, + type=None), + ], + containing_type=None, + serialized_options=None, + serialized_start=809, + serialized_end=950, +) +_sym_db.RegisterEnumDescriptor(_DESCRIPTIONFORMAT) + +DescriptionFormat = enum_type_wrapper.EnumTypeWrapper(_DESCRIPTIONFORMAT) +DESCRIPTION_FORMAT_UNKNOWN = 0 +DESCRIPTION_FORMAT_MARKDOWN = 1 +DESCRIPTION_FORMAT_HTML = 2 +DESCRIPTION_FORMAT_RST = 3 + + + +_DESCRIPTIONENTITY = _descriptor.Descriptor( + name='DescriptionEntity', + full_name='flyteidl.admin.DescriptionEntity', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='flyteidl.admin.DescriptionEntity.id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='short_description', full_name='flyteidl.admin.DescriptionEntity.short_description', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='long_description', full_name='flyteidl.admin.DescriptionEntity.long_description', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='source_code', full_name='flyteidl.admin.DescriptionEntity.source_code', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='tags', full_name='flyteidl.admin.DescriptionEntity.tags', index=4, + number=5, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=121, + serialized_end=324, +) + + +_DESCRIPTION = _descriptor.Descriptor( + name='Description', + full_name='flyteidl.admin.Description', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='value', full_name='flyteidl.admin.Description.value', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='uri', full_name='flyteidl.admin.Description.uri', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='format', full_name='flyteidl.admin.Description.format', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='icon_link', full_name='flyteidl.admin.Description.icon_link', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='content', full_name='flyteidl.admin.Description.content', + index=0, containing_type=None, fields=[]), + ], + serialized_start=326, + serialized_end=452, +) + + +_SOURCECODE = _descriptor.Descriptor( + name='SourceCode', + full_name='flyteidl.admin.SourceCode', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='link', full_name='flyteidl.admin.SourceCode.link', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=454, + serialized_end=480, +) + + +_DESCRIPTIONENTITYLIST = _descriptor.Descriptor( + name='DescriptionEntityList', + full_name='flyteidl.admin.DescriptionEntityList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='descriptionEntities', full_name='flyteidl.admin.DescriptionEntityList.descriptionEntities', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='token', full_name='flyteidl.admin.DescriptionEntityList.token', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=482, + serialized_end=584, +) + + +_DESCRIPTIONENTITYLISTREQUEST = _descriptor.Descriptor( + name='DescriptionEntityListRequest', + full_name='flyteidl.admin.DescriptionEntityListRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='resource_type', full_name='flyteidl.admin.DescriptionEntityListRequest.resource_type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='id', full_name='flyteidl.admin.DescriptionEntityListRequest.id', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='limit', full_name='flyteidl.admin.DescriptionEntityListRequest.limit', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='token', full_name='flyteidl.admin.DescriptionEntityListRequest.token', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='filters', full_name='flyteidl.admin.DescriptionEntityListRequest.filters', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sort_by', full_name='flyteidl.admin.DescriptionEntityListRequest.sort_by', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=587, + serialized_end=806, +) + +_DESCRIPTIONENTITY.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._IDENTIFIER +_DESCRIPTIONENTITY.fields_by_name['long_description'].message_type = _DESCRIPTION +_DESCRIPTIONENTITY.fields_by_name['source_code'].message_type = _SOURCECODE +_DESCRIPTION.fields_by_name['format'].enum_type = _DESCRIPTIONFORMAT +_DESCRIPTION.oneofs_by_name['content'].fields.append( + _DESCRIPTION.fields_by_name['value']) +_DESCRIPTION.fields_by_name['value'].containing_oneof = _DESCRIPTION.oneofs_by_name['content'] +_DESCRIPTION.oneofs_by_name['content'].fields.append( + _DESCRIPTION.fields_by_name['uri']) +_DESCRIPTION.fields_by_name['uri'].containing_oneof = _DESCRIPTION.oneofs_by_name['content'] +_DESCRIPTIONENTITYLIST.fields_by_name['descriptionEntities'].message_type = _DESCRIPTIONENTITY +_DESCRIPTIONENTITYLISTREQUEST.fields_by_name['resource_type'].enum_type = flyteidl_dot_core_dot_identifier__pb2._RESOURCETYPE +_DESCRIPTIONENTITYLISTREQUEST.fields_by_name['id'].message_type = flyteidl_dot_admin_dot_common__pb2._NAMEDENTITYIDENTIFIER +_DESCRIPTIONENTITYLISTREQUEST.fields_by_name['sort_by'].message_type = flyteidl_dot_admin_dot_common__pb2._SORT +DESCRIPTOR.message_types_by_name['DescriptionEntity'] = _DESCRIPTIONENTITY +DESCRIPTOR.message_types_by_name['Description'] = _DESCRIPTION +DESCRIPTOR.message_types_by_name['SourceCode'] = _SOURCECODE +DESCRIPTOR.message_types_by_name['DescriptionEntityList'] = _DESCRIPTIONENTITYLIST +DESCRIPTOR.message_types_by_name['DescriptionEntityListRequest'] = _DESCRIPTIONENTITYLISTREQUEST +DESCRIPTOR.enum_types_by_name['DescriptionFormat'] = _DESCRIPTIONFORMAT +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +DescriptionEntity = _reflection.GeneratedProtocolMessageType('DescriptionEntity', (_message.Message,), dict( + DESCRIPTOR = _DESCRIPTIONENTITY, + __module__ = 'flyteidl.admin.description_entity_pb2' + # @@protoc_insertion_point(class_scope:flyteidl.admin.DescriptionEntity) + )) +_sym_db.RegisterMessage(DescriptionEntity) + +Description = _reflection.GeneratedProtocolMessageType('Description', (_message.Message,), dict( + DESCRIPTOR = _DESCRIPTION, + __module__ = 'flyteidl.admin.description_entity_pb2' + # @@protoc_insertion_point(class_scope:flyteidl.admin.Description) + )) +_sym_db.RegisterMessage(Description) + +SourceCode = _reflection.GeneratedProtocolMessageType('SourceCode', (_message.Message,), dict( + DESCRIPTOR = _SOURCECODE, + __module__ = 'flyteidl.admin.description_entity_pb2' + # @@protoc_insertion_point(class_scope:flyteidl.admin.SourceCode) + )) +_sym_db.RegisterMessage(SourceCode) + +DescriptionEntityList = _reflection.GeneratedProtocolMessageType('DescriptionEntityList', (_message.Message,), dict( + DESCRIPTOR = _DESCRIPTIONENTITYLIST, + __module__ = 'flyteidl.admin.description_entity_pb2' + # @@protoc_insertion_point(class_scope:flyteidl.admin.DescriptionEntityList) + )) +_sym_db.RegisterMessage(DescriptionEntityList) + +DescriptionEntityListRequest = _reflection.GeneratedProtocolMessageType('DescriptionEntityListRequest', (_message.Message,), dict( + DESCRIPTOR = _DESCRIPTIONENTITYLISTREQUEST, + __module__ = 'flyteidl.admin.description_entity_pb2' + # @@protoc_insertion_point(class_scope:flyteidl.admin.DescriptionEntityListRequest) + )) +_sym_db.RegisterMessage(DescriptionEntityListRequest) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/admin/description_entity_pb2_grpc.py b/flyteidl/gen/pb_python/flyteidl/admin/description_entity_pb2_grpc.py new file mode 100644 index 00000000000..a89435267cb --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/admin/description_entity_pb2_grpc.py @@ -0,0 +1,3 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + diff --git a/flyteidl/gen/pb_python/flyteidl/admin/task_pb2.py b/flyteidl/gen/pb_python/flyteidl/admin/task_pb2.py index e9c341503a8..389395f85bf 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/task_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/admin/task_pb2.py @@ -16,6 +16,7 @@ from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 from flyteidl.core import tasks_pb2 as flyteidl_dot_core_dot_tasks__pb2 from flyteidl.core import compiler_pb2 as flyteidl_dot_core_dot_compiler__pb2 +from flyteidl.admin import description_entity_pb2 as flyteidl_dot_admin_dot_description__entity__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 @@ -24,9 +25,9 @@ package='flyteidl.admin', syntax='proto3', serialized_options=_b('Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin'), - serialized_pb=_b('\n\x19\x66lyteidl/admin/task.proto\x12\x0e\x66lyteidl.admin\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"b\n\x11TaskCreateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12&\n\x04spec\x18\x02 \x01(\x0b\x32\x18.flyteidl.admin.TaskSpec\"\x14\n\x12TaskCreateResponse\"[\n\x04Task\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12,\n\x07\x63losure\x18\x02 \x01(\x0b\x32\x1b.flyteidl.admin.TaskClosure\">\n\x08TaskList\x12#\n\x05tasks\x18\x01 \x03(\x0b\x32\x14.flyteidl.admin.Task\x12\r\n\x05token\x18\x02 \x01(\t\"9\n\x08TaskSpec\x12-\n\x08template\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.TaskTemplate\"q\n\x0bTaskClosure\x12\x32\n\rcompiled_task\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.CompiledTask\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') + serialized_pb=_b('\n\x19\x66lyteidl/admin/task.proto\x12\x0e\x66lyteidl.admin\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\'flyteidl/admin/description_entity.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"b\n\x11TaskCreateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12&\n\x04spec\x18\x02 \x01(\x0b\x32\x18.flyteidl.admin.TaskSpec\"\x14\n\x12TaskCreateResponse\"v\n\x04Task\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12,\n\x07\x63losure\x18\x02 \x01(\x0b\x32\x1b.flyteidl.admin.TaskClosure\x12\x19\n\x11short_description\x18\x03 \x01(\t\">\n\x08TaskList\x12#\n\x05tasks\x18\x01 \x03(\x0b\x32\x14.flyteidl.admin.Task\x12\r\n\x05token\x18\x02 \x01(\t\"q\n\x08TaskSpec\x12-\n\x08template\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.TaskTemplate\x12\x36\n\x0b\x64\x65scription\x18\x02 \x01(\x0b\x32!.flyteidl.admin.DescriptionEntity\"q\n\x0bTaskClosure\x12\x32\n\rcompiled_task\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.CompiledTask\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') , - dependencies=[flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_tasks__pb2.DESCRIPTOR,flyteidl_dot_core_dot_compiler__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) + dependencies=[flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_tasks__pb2.DESCRIPTOR,flyteidl_dot_core_dot_compiler__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_description__entity__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) @@ -64,8 +65,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=167, - serialized_end=265, + serialized_start=208, + serialized_end=306, ) @@ -88,8 +89,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=267, - serialized_end=287, + serialized_start=308, + serialized_end=328, ) @@ -114,6 +115,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='short_description', full_name='flyteidl.admin.Task.short_description', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -126,8 +134,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=289, - serialized_end=380, + serialized_start=330, + serialized_end=448, ) @@ -164,8 +172,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=382, - serialized_end=444, + serialized_start=450, + serialized_end=512, ) @@ -183,6 +191,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='description', full_name='flyteidl.admin.TaskSpec.description', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -195,8 +210,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=446, - serialized_end=503, + serialized_start=514, + serialized_end=627, ) @@ -233,8 +248,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=505, - serialized_end=618, + serialized_start=629, + serialized_end=742, ) _TASKCREATEREQUEST.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._IDENTIFIER @@ -243,6 +258,7 @@ _TASK.fields_by_name['closure'].message_type = _TASKCLOSURE _TASKLIST.fields_by_name['tasks'].message_type = _TASK _TASKSPEC.fields_by_name['template'].message_type = flyteidl_dot_core_dot_tasks__pb2._TASKTEMPLATE +_TASKSPEC.fields_by_name['description'].message_type = flyteidl_dot_admin_dot_description__entity__pb2._DESCRIPTIONENTITY _TASKCLOSURE.fields_by_name['compiled_task'].message_type = flyteidl_dot_core_dot_compiler__pb2._COMPILEDTASK _TASKCLOSURE.fields_by_name['created_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP DESCRIPTOR.message_types_by_name['TaskCreateRequest'] = _TASKCREATEREQUEST diff --git a/flyteidl/gen/pb_python/flyteidl/admin/workflow_pb2.py b/flyteidl/gen/pb_python/flyteidl/admin/workflow_pb2.py index 4f0a5adcb49..96774f0d325 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/workflow_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/admin/workflow_pb2.py @@ -16,6 +16,7 @@ from flyteidl.core import compiler_pb2 as flyteidl_dot_core_dot_compiler__pb2 from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 from flyteidl.core import workflow_pb2 as flyteidl_dot_core_dot_workflow__pb2 +from flyteidl.admin import description_entity_pb2 as flyteidl_dot_admin_dot_description__entity__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 @@ -24,9 +25,9 @@ package='flyteidl.admin', syntax='proto3', serialized_options=_b('Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin'), - serialized_pb=_b('\n\x1d\x66lyteidl/admin/workflow.proto\x12\x0e\x66lyteidl.admin\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/workflow.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"j\n\x15WorkflowCreateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12*\n\x04spec\x18\x02 \x01(\x0b\x32\x1c.flyteidl.admin.WorkflowSpec\"\x18\n\x16WorkflowCreateResponse\"c\n\x08Workflow\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12\x30\n\x07\x63losure\x18\x02 \x01(\x0b\x32\x1f.flyteidl.admin.WorkflowClosure\"J\n\x0cWorkflowList\x12+\n\tworkflows\x18\x01 \x03(\x0b\x32\x18.flyteidl.admin.Workflow\x12\r\n\x05token\x18\x02 \x01(\t\"y\n\x0cWorkflowSpec\x12\x31\n\x08template\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowTemplate\x12\x36\n\rsub_workflows\x18\x02 \x03(\x0b\x32\x1f.flyteidl.core.WorkflowTemplate\"\x84\x01\n\x0fWorkflowClosure\x12\x41\n\x11\x63ompiled_workflow\x18\x01 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosure\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"N\n%WorkflowErrorExistsDifferentStructure\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\"N\n%WorkflowErrorExistsIdenticalStructure\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\"\xe1\x01\n\x1b\x43reateWorkflowFailureReason\x12[\n\x1a\x65xists_different_structure\x18\x01 \x01(\x0b\x32\x35.flyteidl.admin.WorkflowErrorExistsDifferentStructureH\x00\x12[\n\x1a\x65xists_identical_structure\x18\x02 \x01(\x0b\x32\x35.flyteidl.admin.WorkflowErrorExistsIdenticalStructureH\x00\x42\x08\n\x06reasonB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') + serialized_pb=_b('\n\x1d\x66lyteidl/admin/workflow.proto\x12\x0e\x66lyteidl.admin\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/workflow.proto\x1a\'flyteidl/admin/description_entity.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"j\n\x15WorkflowCreateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12*\n\x04spec\x18\x02 \x01(\x0b\x32\x1c.flyteidl.admin.WorkflowSpec\"\x18\n\x16WorkflowCreateResponse\"~\n\x08Workflow\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12\x30\n\x07\x63losure\x18\x02 \x01(\x0b\x32\x1f.flyteidl.admin.WorkflowClosure\x12\x19\n\x11short_description\x18\x03 \x01(\t\"J\n\x0cWorkflowList\x12+\n\tworkflows\x18\x01 \x03(\x0b\x32\x18.flyteidl.admin.Workflow\x12\r\n\x05token\x18\x02 \x01(\t\"\xb1\x01\n\x0cWorkflowSpec\x12\x31\n\x08template\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowTemplate\x12\x36\n\rsub_workflows\x18\x02 \x03(\x0b\x32\x1f.flyteidl.core.WorkflowTemplate\x12\x36\n\x0b\x64\x65scription\x18\x03 \x01(\x0b\x32!.flyteidl.admin.DescriptionEntity\"\x84\x01\n\x0fWorkflowClosure\x12\x41\n\x11\x63ompiled_workflow\x18\x01 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosure\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"N\n%WorkflowErrorExistsDifferentStructure\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\"N\n%WorkflowErrorExistsIdenticalStructure\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\"\xe1\x01\n\x1b\x43reateWorkflowFailureReason\x12[\n\x1a\x65xists_different_structure\x18\x01 \x01(\x0b\x32\x35.flyteidl.admin.WorkflowErrorExistsDifferentStructureH\x00\x12[\n\x1a\x65xists_identical_structure\x18\x02 \x01(\x0b\x32\x35.flyteidl.admin.WorkflowErrorExistsIdenticalStructureH\x00\x42\x08\n\x06reasonB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') , - dependencies=[flyteidl_dot_core_dot_compiler__pb2.DESCRIPTOR,flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_workflow__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) + dependencies=[flyteidl_dot_core_dot_compiler__pb2.DESCRIPTOR,flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_workflow__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_description__entity__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) @@ -64,8 +65,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=174, - serialized_end=280, + serialized_start=215, + serialized_end=321, ) @@ -88,8 +89,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=282, - serialized_end=306, + serialized_start=323, + serialized_end=347, ) @@ -114,6 +115,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='short_description', full_name='flyteidl.admin.Workflow.short_description', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -126,8 +134,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=308, - serialized_end=407, + serialized_start=349, + serialized_end=475, ) @@ -164,8 +172,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=409, - serialized_end=483, + serialized_start=477, + serialized_end=551, ) @@ -190,6 +198,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='description', full_name='flyteidl.admin.WorkflowSpec.description', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -202,8 +217,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=485, - serialized_end=606, + serialized_start=554, + serialized_end=731, ) @@ -240,8 +255,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=609, - serialized_end=741, + serialized_start=734, + serialized_end=866, ) @@ -271,8 +286,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=743, - serialized_end=821, + serialized_start=868, + serialized_end=946, ) @@ -302,8 +317,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=823, - serialized_end=901, + serialized_start=948, + serialized_end=1026, ) @@ -343,8 +358,8 @@ name='reason', full_name='flyteidl.admin.CreateWorkflowFailureReason.reason', index=0, containing_type=None, fields=[]), ], - serialized_start=904, - serialized_end=1129, + serialized_start=1029, + serialized_end=1254, ) _WORKFLOWCREATEREQUEST.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._IDENTIFIER @@ -354,6 +369,7 @@ _WORKFLOWLIST.fields_by_name['workflows'].message_type = _WORKFLOW _WORKFLOWSPEC.fields_by_name['template'].message_type = flyteidl_dot_core_dot_workflow__pb2._WORKFLOWTEMPLATE _WORKFLOWSPEC.fields_by_name['sub_workflows'].message_type = flyteidl_dot_core_dot_workflow__pb2._WORKFLOWTEMPLATE +_WORKFLOWSPEC.fields_by_name['description'].message_type = flyteidl_dot_admin_dot_description__entity__pb2._DESCRIPTIONENTITY _WORKFLOWCLOSURE.fields_by_name['compiled_workflow'].message_type = flyteidl_dot_core_dot_compiler__pb2._COMPILEDWORKFLOWCLOSURE _WORKFLOWCLOSURE.fields_by_name['created_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP _WORKFLOWERROREXISTSDIFFERENTSTRUCTURE.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._IDENTIFIER diff --git a/flyteidl/gen/pb_python/flyteidl/service/admin_pb2.py b/flyteidl/gen/pb_python/flyteidl/service/admin_pb2.py index b6fae483911..6cd214d78a1 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/admin_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/service/admin_pb2.py @@ -28,6 +28,8 @@ from flyteidl.admin import task_execution_pb2 as flyteidl_dot_admin_dot_task__execution__pb2 from flyteidl.admin import version_pb2 as flyteidl_dot_admin_dot_version__pb2 from flyteidl.admin import common_pb2 as flyteidl_dot_admin_dot_common__pb2 +from flyteidl.admin import description_entity_pb2 as flyteidl_dot_admin_dot_description__entity__pb2 +from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 from protoc_gen_swagger.options import annotations_pb2 as protoc__gen__swagger_dot_options_dot_annotations__pb2 @@ -36,9 +38,9 @@ package='flyteidl.service', syntax='proto3', serialized_options=_b('Z7github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service'), - serialized_pb=_b('\n\x1c\x66lyteidl/service/admin.proto\x12\x10\x66lyteidl.service\x1a\x1cgoogle/api/annotations.proto\x1a\x1c\x66lyteidl/admin/project.proto\x1a.flyteidl/admin/project_domain_attributes.proto\x1a\'flyteidl/admin/project_attributes.proto\x1a\x19\x66lyteidl/admin/task.proto\x1a\x1d\x66lyteidl/admin/workflow.proto\x1a(flyteidl/admin/workflow_attributes.proto\x1a flyteidl/admin/launch_plan.proto\x1a\x1a\x66lyteidl/admin/event.proto\x1a\x1e\x66lyteidl/admin/execution.proto\x1a\'flyteidl/admin/matchable_resource.proto\x1a#flyteidl/admin/node_execution.proto\x1a#flyteidl/admin/task_execution.proto\x1a\x1c\x66lyteidl/admin/version.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a,protoc-gen-swagger/options/annotations.proto2\x82n\n\x0c\x41\x64minService\x12\xc5\x02\n\nCreateTask\x12!.flyteidl.admin.TaskCreateRequest\x1a\".flyteidl.admin.TaskCreateResponse\"\xef\x01\x82\xd3\xe4\x93\x02\x12\"\r/api/v1/tasks:\x01*\x92\x41\xd3\x01\x1a&Create and register a task definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x12\xb2\x01\n\x07GetTask\x12 .flyteidl.admin.ObjectGetRequest\x1a\x14.flyteidl.admin.Task\"o\x82\xd3\xe4\x93\x02?\x12=/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}\x92\x41\'\x1a%Retrieve an existing task definition.\x12\xde\x01\n\x0bListTaskIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"r\x82\xd3\xe4\x93\x02%\x12#/api/v1/task_ids/{project}/{domain}\x92\x41\x44\x1a\x42\x46\x65tch existing task definition identifiers matching input filters.\x12\xeb\x01\n\tListTasks\x12#.flyteidl.admin.ResourceListRequest\x1a\x18.flyteidl.admin.TaskList\"\x9e\x01\x82\xd3\xe4\x93\x02\\\x12\x30/api/v1/tasks/{id.project}/{id.domain}/{id.name}Z(\x12&/api/v1/tasks/{id.project}/{id.domain}\x92\x41\x39\x1a\x37\x46\x65tch existing task definitions matching input filters.\x12\xd9\x02\n\x0e\x43reateWorkflow\x12%.flyteidl.admin.WorkflowCreateRequest\x1a&.flyteidl.admin.WorkflowCreateResponse\"\xf7\x01\x82\xd3\xe4\x93\x02\x16\"\x11/api/v1/workflows:\x01*\x92\x41\xd7\x01\x1a*Create and register a workflow definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x12\xc2\x01\n\x0bGetWorkflow\x12 .flyteidl.admin.ObjectGetRequest\x1a\x18.flyteidl.admin.Workflow\"w\x82\xd3\xe4\x93\x02\x43\x12\x41/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}\x92\x41+\x1a)Retrieve an existing workflow definition.\x12\xed\x01\n\x0fListWorkflowIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"}\x82\xd3\xe4\x93\x02)\x12\'/api/v1/workflow_ids/{project}/{domain}\x92\x41K\x1aIFetch an existing workflow definition identifiers matching input filters.\x12\xff\x01\n\rListWorkflows\x12#.flyteidl.admin.ResourceListRequest\x1a\x1c.flyteidl.admin.WorkflowList\"\xaa\x01\x82\xd3\xe4\x93\x02\x64\x12\x34/api/v1/workflows/{id.project}/{id.domain}/{id.name}Z,\x12*/api/v1/workflows/{id.project}/{id.domain}\x92\x41=\x1a;Fetch existing workflow definitions matching input filters.\x12\xe5\x02\n\x10\x43reateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanCreateRequest\x1a(.flyteidl.admin.LaunchPlanCreateResponse\"\xfd\x01\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/launch_plans:\x01*\x92\x41\xda\x01\x1a-Create and register a launch plan definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x12\xcc\x01\n\rGetLaunchPlan\x12 .flyteidl.admin.ObjectGetRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"}\x82\xd3\xe4\x93\x02\x46\x12\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x92\x41.\x1a,Retrieve an existing launch plan definition.\x12\xf3\x01\n\x13GetActiveLaunchPlan\x12\'.flyteidl.admin.ActiveLaunchPlanRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"\x96\x01\x82\xd3\xe4\x93\x02@\x12>/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x92\x41M\x1aKRetrieve the active launch plan version specified by input request filters.\x12\xeb\x01\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\x84\x01\x82\xd3\xe4\x93\x02\x30\x12./api/v1/active_launch_plans/{project}/{domain}\x92\x41K\x1aIFetch the active launch plan versions specified by input request filters.\x12\xf3\x01\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"\x80\x01\x82\xd3\xe4\x93\x02,\x12*/api/v1/launch_plan_ids/{project}/{domain}\x92\x41K\x1aIFetch existing launch plan definition identifiers matching input filters.\x12\x8c\x02\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\xb3\x01\x82\xd3\xe4\x93\x02j\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}Z/\x12-/api/v1/launch_plans/{id.project}/{id.domain}\x92\x41@\x1a>Fetch existing launch plan definitions matching input filters.\x12\xc0\x06\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"\xd8\x05\x82\xd3\xe4\x93\x02I\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}:\x01*\x92\x41\x85\x05\x1a\x82\x05Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.\x12\xa2\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\">\x82\xd3\xe4\x93\x02\x17\"\x12/api/v1/executions:\x01*\x92\x41\x1e\x1a\x1c\x43reate a workflow execution.\x12\xb1\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"I\x82\xd3\xe4\x93\x02 \"\x1b/api/v1/executions/relaunch:\x01*\x92\x41 \x1a\x1eRelaunch a workflow execution.\x12\x9d\x05\n\x10RecoverExecution\x12\'.flyteidl.admin.ExecutionRecoverRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"\xb6\x04\x82\xd3\xe4\x93\x02\x1f\"\x1a/api/v1/executions/recover:\x01*\x92\x41\x8d\x04\x1a\x8a\x04Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\x12\xc2\x01\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"j\x82\xd3\xe4\x93\x02\x37\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x92\x41*\x1a(Retrieve an existing workflow execution.\x12\xd6\x01\n\x0fUpdateExecution\x12&.flyteidl.admin.ExecutionUpdateRequest\x1a\'.flyteidl.admin.ExecutionUpdateResponse\"r\x82\xd3\xe4\x93\x02:\x1a\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}:\x01*\x92\x41/\x1a-Update execution belonging to project domain.\x12\x82\x02\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"\x8a\x01\x82\xd3\xe4\x93\x02<\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x92\x41\x45\x1a\x43Retrieve input and output data from an existing workflow execution.\x12\xc8\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"r\x82\xd3\xe4\x93\x02-\x12+/api/v1/executions/{id.project}/{id.domain}\x92\x41<\x1a:Fetch existing workflow executions matching input filters.\x12\xf4\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"\x86\x01\x82\xd3\xe4\x93\x02:*5/api/v1/executions/{id.project}/{id.domain}/{id.name}:\x01*\x92\x41\x43\x1a\x41Terminate the active workflow execution specified in the request.\x12\xfc\x01\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"\x9f\x01\x82\xd3\xe4\x93\x02p\x12n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x92\x41&\x1a$Retrieve an existing node execution.\x12\x9a\x02\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xb6\x01\x82\xd3\xe4\x93\x02u\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x92\x41\x38\x1a\x36\x46\x65tch existing node executions matching input filters.\x12\xef\x04\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xfd\x03\x82\xd3\xe4\x93\x02\xac\x03\x12\xa9\x03/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\x92\x41G\x1a\x45\x46\x65tch child node executions launched by the specified task execution.\x12\xb3\x02\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"\xbf\x01\x82\xd3\xe4\x93\x02u\x12s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x92\x41\x41\x1a?Retrieve input and output data from an existing node execution.\x12\x97\x01\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"3\x82\xd3\xe4\x93\x02\x15\"\x10/api/v1/projects:\x01*\x92\x41\x15\x1a\x13Register a project.\x12\x87\x01\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\"6\x82\xd3\xe4\x93\x02\x1a\x1a\x15/api/v1/projects/{id}:\x01*\x92\x41\x13\x1a\x11Update a project.\x12\x85\x01\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"7\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/projects\x92\x41\x1c\x1a\x1a\x46\x65tch registered projects.\x12\xdd\x01\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"g\x82\xd3\xe4\x93\x02\x1d\"\x18/api/v1/events/workflows:\x01*\x92\x41\x41\x1a?Create a workflow execution event recording a phase transition.\x12\xc9\x01\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"_\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/events/nodes:\x01*\x92\x41=\x1a;Create a node execution event recording a phase transition.\x12\xc9\x01\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"_\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/events/tasks:\x01*\x92\x41=\x1a;Create a task execution event recording a phase transition.\x12\xa9\x03\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\xcc\x02\x82\xd3\xe4\x93\x02\x9c\x02\x12\x99\x02/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x92\x41&\x1a$Retrieve an existing task execution.\x12\xd3\x02\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xef\x01\x82\xd3\xe4\x93\x02\xad\x01\x12\xaa\x01/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\x92\x41\x38\x1a\x36\x46\x65tch existing task executions matching input filters.\x12\xe0\x03\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xec\x02\x82\xd3\xe4\x93\x02\xa1\x02\x12\x9e\x02/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x92\x41\x41\x1a?Retrieve input and output data from an existing task execution.\x12\xbf\x02\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"\xb0\x01\x82\xd3\xe4\x93\x02O\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}:\x01*\x92\x41X\x1aVUpdate the customized resource attributes associated with a project-domain combination\x12\x9f\x02\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"\x99\x01\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x92\x41Z\x1aXRetrieve the customized resource attributes associated with a project-domain combination\x12\xa9\x02\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"\x9a\x01\x82\xd3\xe4\x93\x02\x39*4/api/v1/project_domain_attributes/{project}/{domain}:\x01*\x92\x41X\x1aVDelete the customized resource attributes associated with a project-domain combination\x12\xff\x01\n\x17UpdateProjectAttributes\x12..flyteidl.admin.ProjectAttributesUpdateRequest\x1a/.flyteidl.admin.ProjectAttributesUpdateResponse\"\x82\x01\x82\xd3\xe4\x93\x02\x34\x1a//api/v1/project_attributes/{attributes.project}:\x01*\x92\x41\x45\x1a\x43Update the customized resource attributes associated with a project\x12\xe9\x01\n\x14GetProjectAttributes\x12+.flyteidl.admin.ProjectAttributesGetRequest\x1a,.flyteidl.admin.ProjectAttributesGetResponse\"v\x82\xd3\xe4\x93\x02&\x12$/api/v1/project_attributes/{project}\x92\x41G\x1a\x45Retrieve the customized resource attributes associated with a project\x12\xf3\x01\n\x17\x44\x65leteProjectAttributes\x12..flyteidl.admin.ProjectAttributesDeleteRequest\x1a/.flyteidl.admin.ProjectAttributesDeleteResponse\"w\x82\xd3\xe4\x93\x02)*$/api/v1/project_attributes/{project}:\x01*\x92\x41\x45\x1a\x43\x44\x65lete the customized resource attributes associated with a project\x12\xce\x02\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"\xce\x01\x82\xd3\xe4\x93\x02_\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}:\x01*\x92\x41\x66\x1a\x64Update the customized resource attributes associated with a project, domain and workflow combination\x12\xa3\x02\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"\xac\x01\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x92\x41h\x1a\x66Retrieve the customized resource attributes associated with a project, domain and workflow combination\x12\xad\x02\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"\xad\x01\x82\xd3\xe4\x93\x02>*9/api/v1/workflow_attributes/{project}/{domain}/{workflow}:\x01*\x92\x41\x66\x1a\x64\x44\x65lete the customized resource attributes associated with a project, domain and workflow combination\x12\xe1\x01\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"e\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/matchable_attributes\x92\x41>\x1a/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x92\x41M\x1aKRetrieve the active launch plan version specified by input request filters.\x12\xeb\x01\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\x84\x01\x82\xd3\xe4\x93\x02\x30\x12./api/v1/active_launch_plans/{project}/{domain}\x92\x41K\x1aIFetch the active launch plan versions specified by input request filters.\x12\xf3\x01\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"\x80\x01\x82\xd3\xe4\x93\x02,\x12*/api/v1/launch_plan_ids/{project}/{domain}\x92\x41K\x1aIFetch existing launch plan definition identifiers matching input filters.\x12\x8c\x02\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\xb3\x01\x82\xd3\xe4\x93\x02j\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}Z/\x12-/api/v1/launch_plans/{id.project}/{id.domain}\x92\x41@\x1a>Fetch existing launch plan definitions matching input filters.\x12\xc0\x06\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"\xd8\x05\x82\xd3\xe4\x93\x02I\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}:\x01*\x92\x41\x85\x05\x1a\x82\x05Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.\x12\xa2\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\">\x82\xd3\xe4\x93\x02\x17\"\x12/api/v1/executions:\x01*\x92\x41\x1e\x1a\x1c\x43reate a workflow execution.\x12\xb1\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"I\x82\xd3\xe4\x93\x02 \"\x1b/api/v1/executions/relaunch:\x01*\x92\x41 \x1a\x1eRelaunch a workflow execution.\x12\x9d\x05\n\x10RecoverExecution\x12\'.flyteidl.admin.ExecutionRecoverRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"\xb6\x04\x82\xd3\xe4\x93\x02\x1f\"\x1a/api/v1/executions/recover:\x01*\x92\x41\x8d\x04\x1a\x8a\x04Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\x12\xc2\x01\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"j\x82\xd3\xe4\x93\x02\x37\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x92\x41*\x1a(Retrieve an existing workflow execution.\x12\xd6\x01\n\x0fUpdateExecution\x12&.flyteidl.admin.ExecutionUpdateRequest\x1a\'.flyteidl.admin.ExecutionUpdateResponse\"r\x82\xd3\xe4\x93\x02:\x1a\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}:\x01*\x92\x41/\x1a-Update execution belonging to project domain.\x12\x82\x02\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"\x8a\x01\x82\xd3\xe4\x93\x02<\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x92\x41\x45\x1a\x43Retrieve input and output data from an existing workflow execution.\x12\xc8\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"r\x82\xd3\xe4\x93\x02-\x12+/api/v1/executions/{id.project}/{id.domain}\x92\x41<\x1a:Fetch existing workflow executions matching input filters.\x12\xf4\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"\x86\x01\x82\xd3\xe4\x93\x02:*5/api/v1/executions/{id.project}/{id.domain}/{id.name}:\x01*\x92\x41\x43\x1a\x41Terminate the active workflow execution specified in the request.\x12\xfc\x01\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"\x9f\x01\x82\xd3\xe4\x93\x02p\x12n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x92\x41&\x1a$Retrieve an existing node execution.\x12\x9a\x02\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xb6\x01\x82\xd3\xe4\x93\x02u\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x92\x41\x38\x1a\x36\x46\x65tch existing node executions matching input filters.\x12\xef\x04\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xfd\x03\x82\xd3\xe4\x93\x02\xac\x03\x12\xa9\x03/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\x92\x41G\x1a\x45\x46\x65tch child node executions launched by the specified task execution.\x12\xb3\x02\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"\xbf\x01\x82\xd3\xe4\x93\x02u\x12s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x92\x41\x41\x1a?Retrieve input and output data from an existing node execution.\x12\x97\x01\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"3\x82\xd3\xe4\x93\x02\x15\"\x10/api/v1/projects:\x01*\x92\x41\x15\x1a\x13Register a project.\x12\x87\x01\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\"6\x82\xd3\xe4\x93\x02\x1a\x1a\x15/api/v1/projects/{id}:\x01*\x92\x41\x13\x1a\x11Update a project.\x12\x85\x01\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"7\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/projects\x92\x41\x1c\x1a\x1a\x46\x65tch registered projects.\x12\xdd\x01\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"g\x82\xd3\xe4\x93\x02\x1d\"\x18/api/v1/events/workflows:\x01*\x92\x41\x41\x1a?Create a workflow execution event recording a phase transition.\x12\xc9\x01\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"_\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/events/nodes:\x01*\x92\x41=\x1a;Create a node execution event recording a phase transition.\x12\xc9\x01\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"_\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/events/tasks:\x01*\x92\x41=\x1a;Create a task execution event recording a phase transition.\x12\xa9\x03\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\xcc\x02\x82\xd3\xe4\x93\x02\x9c\x02\x12\x99\x02/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x92\x41&\x1a$Retrieve an existing task execution.\x12\xd3\x02\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xef\x01\x82\xd3\xe4\x93\x02\xad\x01\x12\xaa\x01/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\x92\x41\x38\x1a\x36\x46\x65tch existing task executions matching input filters.\x12\xe0\x03\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xec\x02\x82\xd3\xe4\x93\x02\xa1\x02\x12\x9e\x02/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x92\x41\x41\x1a?Retrieve input and output data from an existing task execution.\x12\xbf\x02\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"\xb0\x01\x82\xd3\xe4\x93\x02O\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}:\x01*\x92\x41X\x1aVUpdate the customized resource attributes associated with a project-domain combination\x12\x9f\x02\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"\x99\x01\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x92\x41Z\x1aXRetrieve the customized resource attributes associated with a project-domain combination\x12\xa9\x02\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"\x9a\x01\x82\xd3\xe4\x93\x02\x39*4/api/v1/project_domain_attributes/{project}/{domain}:\x01*\x92\x41X\x1aVDelete the customized resource attributes associated with a project-domain combination\x12\xff\x01\n\x17UpdateProjectAttributes\x12..flyteidl.admin.ProjectAttributesUpdateRequest\x1a/.flyteidl.admin.ProjectAttributesUpdateResponse\"\x82\x01\x82\xd3\xe4\x93\x02\x34\x1a//api/v1/project_attributes/{attributes.project}:\x01*\x92\x41\x45\x1a\x43Update the customized resource attributes associated with a project\x12\xe9\x01\n\x14GetProjectAttributes\x12+.flyteidl.admin.ProjectAttributesGetRequest\x1a,.flyteidl.admin.ProjectAttributesGetResponse\"v\x82\xd3\xe4\x93\x02&\x12$/api/v1/project_attributes/{project}\x92\x41G\x1a\x45Retrieve the customized resource attributes associated with a project\x12\xf3\x01\n\x17\x44\x65leteProjectAttributes\x12..flyteidl.admin.ProjectAttributesDeleteRequest\x1a/.flyteidl.admin.ProjectAttributesDeleteResponse\"w\x82\xd3\xe4\x93\x02)*$/api/v1/project_attributes/{project}:\x01*\x92\x41\x45\x1a\x43\x44\x65lete the customized resource attributes associated with a project\x12\xce\x02\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"\xce\x01\x82\xd3\xe4\x93\x02_\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}:\x01*\x92\x41\x66\x1a\x64Update the customized resource attributes associated with a project, domain and workflow combination\x12\xa3\x02\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"\xac\x01\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x92\x41h\x1a\x66Retrieve the customized resource attributes associated with a project, domain and workflow combination\x12\xad\x02\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"\xad\x01\x82\xd3\xe4\x93\x02>*9/api/v1/workflow_attributes/{project}/{domain}/{workflow}:\x01*\x92\x41\x66\x1a\x64\x44\x65lete the customized resource attributes associated with a project, domain and workflow combination\x12\xe1\x01\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"e\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/matchable_attributes\x92\x41>\x1a>> thread = api.get_description_entity(id_resource_type, id_project, id_domain, id_name, id_version, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str id_resource_type: Identifies the specific type of resource that this identifier corresponds to. (required) + :param str id_project: Name of the project the resource belongs to. (required) + :param str id_domain: Name of the domain the resource belongs to. A domain can be considered as a subset within a specific project. (required) + :param str id_name: User provided value for the resource. (required) + :param str id_version: Specific version of the resource. (required) + :return: AdminDescriptionEntity + If the method is called asynchronously, + returns the request thread. + """ + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_description_entity_with_http_info(id_resource_type, id_project, id_domain, id_name, id_version, **kwargs) # noqa: E501 + else: + (data) = self.get_description_entity_with_http_info(id_resource_type, id_project, id_domain, id_name, id_version, **kwargs) # noqa: E501 + return data + + def get_description_entity_with_http_info(self, id_resource_type, id_project, id_domain, id_name, id_version, **kwargs): # noqa: E501 + """Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object. # noqa: E501 + + Retrieve an existing description entity description. # noqa: E501 + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_description_entity_with_http_info(id_resource_type, id_project, id_domain, id_name, id_version, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str id_resource_type: Identifies the specific type of resource that this identifier corresponds to. (required) + :param str id_project: Name of the project the resource belongs to. (required) + :param str id_domain: Name of the domain the resource belongs to. A domain can be considered as a subset within a specific project. (required) + :param str id_name: User provided value for the resource. (required) + :param str id_version: Specific version of the resource. (required) + :return: AdminDescriptionEntity + If the method is called asynchronously, + returns the request thread. + """ + + all_params = ['id_resource_type', 'id_project', 'id_domain', 'id_name', 'id_version'] # noqa: E501 + all_params.append('async_req') + all_params.append('_return_http_data_only') + all_params.append('_preload_content') + all_params.append('_request_timeout') + + params = locals() + for key, val in six.iteritems(params['kwargs']): + if key not in all_params: + raise TypeError( + "Got an unexpected keyword argument '%s'" + " to method get_description_entity" % key + ) + params[key] = val + del params['kwargs'] + # verify the required parameter 'id_resource_type' is set + if ('id_resource_type' not in params or + params['id_resource_type'] is None): + raise ValueError("Missing the required parameter `id_resource_type` when calling `get_description_entity`") # noqa: E501 + # verify the required parameter 'id_project' is set + if ('id_project' not in params or + params['id_project'] is None): + raise ValueError("Missing the required parameter `id_project` when calling `get_description_entity`") # noqa: E501 + # verify the required parameter 'id_domain' is set + if ('id_domain' not in params or + params['id_domain'] is None): + raise ValueError("Missing the required parameter `id_domain` when calling `get_description_entity`") # noqa: E501 + # verify the required parameter 'id_name' is set + if ('id_name' not in params or + params['id_name'] is None): + raise ValueError("Missing the required parameter `id_name` when calling `get_description_entity`") # noqa: E501 + # verify the required parameter 'id_version' is set + if ('id_version' not in params or + params['id_version'] is None): + raise ValueError("Missing the required parameter `id_version` when calling `get_description_entity`") # noqa: E501 + + collection_formats = {} + + path_params = {} + if 'id_resource_type' in params: + path_params['id.resource_type'] = params['id_resource_type'] # noqa: E501 + if 'id_project' in params: + path_params['id.project'] = params['id_project'] # noqa: E501 + if 'id_domain' in params: + path_params['id.domain'] = params['id_domain'] # noqa: E501 + if 'id_name' in params: + path_params['id.name'] = params['id_name'] # noqa: E501 + if 'id_version' in params: + path_params['id.version'] = params['id_version'] # noqa: E501 + + query_params = [] + + header_params = {} + + form_params = [] + local_var_files = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + # Authentication setting + auth_settings = [] # noqa: E501 + + return self.api_client.call_api( + '/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=form_params, + files=local_var_files, + response_type='AdminDescriptionEntity', # noqa: E501 + auth_settings=auth_settings, + async_req=params.get('async_req'), + _return_http_data_only=params.get('_return_http_data_only'), + _preload_content=params.get('_preload_content', True), + _request_timeout=params.get('_request_timeout'), + collection_formats=collection_formats) + def get_execution(self, id_project, id_domain, id_name, **kwargs): # noqa: E501 """Fetches a :ref:`ref_flyteidl.admin.Execution`. # noqa: E501 @@ -3047,6 +3178,288 @@ def list_active_launch_plans_with_http_info(self, project, domain, **kwargs): # _request_timeout=params.get('_request_timeout'), collection_formats=collection_formats) + def list_description_entities(self, resource_type, id_project, id_domain, id_name, **kwargs): # noqa: E501 + """Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. # noqa: E501 + + Fetch existing description entity definitions matching input filters. # noqa: E501 + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.list_description_entities(resource_type, id_project, id_domain, id_name, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str resource_type: Identifies the specific type of resource that this identifier corresponds to. (required) + :param str id_project: Name of the project the resource belongs to. (required) + :param str id_domain: Name of the domain the resource belongs to. A domain can be considered as a subset within a specific project. (required) + :param str id_name: User provided value for the resource. The combination of project + domain + name uniquely identifies the resource. +optional - in certain contexts - like 'List API', 'Launch plans' (required) + :param int limit: Indicates the number of resources to be returned. +required. + :param str token: In the case of multiple pages of results, the server-provided token can be used to fetch the next page in a query. +optional. + :param str filters: Indicates a list of filters passed as string. More info on constructing filters : +optional. + :param str sort_by_key: Indicates an attribute to sort the response values. +required. + :param str sort_by_direction: Indicates the direction to apply sort key for response values. +optional. - DESCENDING: By default, fields are sorted in descending order. + :return: AdminDescriptionEntityList + If the method is called asynchronously, + returns the request thread. + """ + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.list_description_entities_with_http_info(resource_type, id_project, id_domain, id_name, **kwargs) # noqa: E501 + else: + (data) = self.list_description_entities_with_http_info(resource_type, id_project, id_domain, id_name, **kwargs) # noqa: E501 + return data + + def list_description_entities_with_http_info(self, resource_type, id_project, id_domain, id_name, **kwargs): # noqa: E501 + """Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. # noqa: E501 + + Fetch existing description entity definitions matching input filters. # noqa: E501 + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.list_description_entities_with_http_info(resource_type, id_project, id_domain, id_name, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str resource_type: Identifies the specific type of resource that this identifier corresponds to. (required) + :param str id_project: Name of the project the resource belongs to. (required) + :param str id_domain: Name of the domain the resource belongs to. A domain can be considered as a subset within a specific project. (required) + :param str id_name: User provided value for the resource. The combination of project + domain + name uniquely identifies the resource. +optional - in certain contexts - like 'List API', 'Launch plans' (required) + :param int limit: Indicates the number of resources to be returned. +required. + :param str token: In the case of multiple pages of results, the server-provided token can be used to fetch the next page in a query. +optional. + :param str filters: Indicates a list of filters passed as string. More info on constructing filters : +optional. + :param str sort_by_key: Indicates an attribute to sort the response values. +required. + :param str sort_by_direction: Indicates the direction to apply sort key for response values. +optional. - DESCENDING: By default, fields are sorted in descending order. + :return: AdminDescriptionEntityList + If the method is called asynchronously, + returns the request thread. + """ + + all_params = ['resource_type', 'id_project', 'id_domain', 'id_name', 'limit', 'token', 'filters', 'sort_by_key', 'sort_by_direction'] # noqa: E501 + all_params.append('async_req') + all_params.append('_return_http_data_only') + all_params.append('_preload_content') + all_params.append('_request_timeout') + + params = locals() + for key, val in six.iteritems(params['kwargs']): + if key not in all_params: + raise TypeError( + "Got an unexpected keyword argument '%s'" + " to method list_description_entities" % key + ) + params[key] = val + del params['kwargs'] + # verify the required parameter 'resource_type' is set + if ('resource_type' not in params or + params['resource_type'] is None): + raise ValueError("Missing the required parameter `resource_type` when calling `list_description_entities`") # noqa: E501 + # verify the required parameter 'id_project' is set + if ('id_project' not in params or + params['id_project'] is None): + raise ValueError("Missing the required parameter `id_project` when calling `list_description_entities`") # noqa: E501 + # verify the required parameter 'id_domain' is set + if ('id_domain' not in params or + params['id_domain'] is None): + raise ValueError("Missing the required parameter `id_domain` when calling `list_description_entities`") # noqa: E501 + # verify the required parameter 'id_name' is set + if ('id_name' not in params or + params['id_name'] is None): + raise ValueError("Missing the required parameter `id_name` when calling `list_description_entities`") # noqa: E501 + + collection_formats = {} + + path_params = {} + if 'resource_type' in params: + path_params['resource_type'] = params['resource_type'] # noqa: E501 + if 'id_project' in params: + path_params['id.project'] = params['id_project'] # noqa: E501 + if 'id_domain' in params: + path_params['id.domain'] = params['id_domain'] # noqa: E501 + if 'id_name' in params: + path_params['id.name'] = params['id_name'] # noqa: E501 + + query_params = [] + if 'limit' in params: + query_params.append(('limit', params['limit'])) # noqa: E501 + if 'token' in params: + query_params.append(('token', params['token'])) # noqa: E501 + if 'filters' in params: + query_params.append(('filters', params['filters'])) # noqa: E501 + if 'sort_by_key' in params: + query_params.append(('sort_by.key', params['sort_by_key'])) # noqa: E501 + if 'sort_by_direction' in params: + query_params.append(('sort_by.direction', params['sort_by_direction'])) # noqa: E501 + + header_params = {} + + form_params = [] + local_var_files = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + # Authentication setting + auth_settings = [] # noqa: E501 + + return self.api_client.call_api( + '/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=form_params, + files=local_var_files, + response_type='AdminDescriptionEntityList', # noqa: E501 + auth_settings=auth_settings, + async_req=params.get('async_req'), + _return_http_data_only=params.get('_return_http_data_only'), + _preload_content=params.get('_preload_content', True), + _request_timeout=params.get('_request_timeout'), + collection_formats=collection_formats) + + def list_description_entities2(self, resource_type, id_project, id_domain, **kwargs): # noqa: E501 + """Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. # noqa: E501 + + Fetch existing description entity definitions matching input filters. # noqa: E501 + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.list_description_entities2(resource_type, id_project, id_domain, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str resource_type: Identifies the specific type of resource that this identifier corresponds to. (required) + :param str id_project: Name of the project the resource belongs to. (required) + :param str id_domain: Name of the domain the resource belongs to. A domain can be considered as a subset within a specific project. (required) + :param str id_name: User provided value for the resource. The combination of project + domain + name uniquely identifies the resource. +optional - in certain contexts - like 'List API', 'Launch plans'. + :param int limit: Indicates the number of resources to be returned. +required. + :param str token: In the case of multiple pages of results, the server-provided token can be used to fetch the next page in a query. +optional. + :param str filters: Indicates a list of filters passed as string. More info on constructing filters : +optional. + :param str sort_by_key: Indicates an attribute to sort the response values. +required. + :param str sort_by_direction: Indicates the direction to apply sort key for response values. +optional. - DESCENDING: By default, fields are sorted in descending order. + :return: AdminDescriptionEntityList + If the method is called asynchronously, + returns the request thread. + """ + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.list_description_entities2_with_http_info(resource_type, id_project, id_domain, **kwargs) # noqa: E501 + else: + (data) = self.list_description_entities2_with_http_info(resource_type, id_project, id_domain, **kwargs) # noqa: E501 + return data + + def list_description_entities2_with_http_info(self, resource_type, id_project, id_domain, **kwargs): # noqa: E501 + """Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. # noqa: E501 + + Fetch existing description entity definitions matching input filters. # noqa: E501 + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.list_description_entities2_with_http_info(resource_type, id_project, id_domain, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str resource_type: Identifies the specific type of resource that this identifier corresponds to. (required) + :param str id_project: Name of the project the resource belongs to. (required) + :param str id_domain: Name of the domain the resource belongs to. A domain can be considered as a subset within a specific project. (required) + :param str id_name: User provided value for the resource. The combination of project + domain + name uniquely identifies the resource. +optional - in certain contexts - like 'List API', 'Launch plans'. + :param int limit: Indicates the number of resources to be returned. +required. + :param str token: In the case of multiple pages of results, the server-provided token can be used to fetch the next page in a query. +optional. + :param str filters: Indicates a list of filters passed as string. More info on constructing filters : +optional. + :param str sort_by_key: Indicates an attribute to sort the response values. +required. + :param str sort_by_direction: Indicates the direction to apply sort key for response values. +optional. - DESCENDING: By default, fields are sorted in descending order. + :return: AdminDescriptionEntityList + If the method is called asynchronously, + returns the request thread. + """ + + all_params = ['resource_type', 'id_project', 'id_domain', 'id_name', 'limit', 'token', 'filters', 'sort_by_key', 'sort_by_direction'] # noqa: E501 + all_params.append('async_req') + all_params.append('_return_http_data_only') + all_params.append('_preload_content') + all_params.append('_request_timeout') + + params = locals() + for key, val in six.iteritems(params['kwargs']): + if key not in all_params: + raise TypeError( + "Got an unexpected keyword argument '%s'" + " to method list_description_entities2" % key + ) + params[key] = val + del params['kwargs'] + # verify the required parameter 'resource_type' is set + if ('resource_type' not in params or + params['resource_type'] is None): + raise ValueError("Missing the required parameter `resource_type` when calling `list_description_entities2`") # noqa: E501 + # verify the required parameter 'id_project' is set + if ('id_project' not in params or + params['id_project'] is None): + raise ValueError("Missing the required parameter `id_project` when calling `list_description_entities2`") # noqa: E501 + # verify the required parameter 'id_domain' is set + if ('id_domain' not in params or + params['id_domain'] is None): + raise ValueError("Missing the required parameter `id_domain` when calling `list_description_entities2`") # noqa: E501 + + collection_formats = {} + + path_params = {} + if 'resource_type' in params: + path_params['resource_type'] = params['resource_type'] # noqa: E501 + if 'id_project' in params: + path_params['id.project'] = params['id_project'] # noqa: E501 + if 'id_domain' in params: + path_params['id.domain'] = params['id_domain'] # noqa: E501 + + query_params = [] + if 'id_name' in params: + query_params.append(('id.name', params['id_name'])) # noqa: E501 + if 'limit' in params: + query_params.append(('limit', params['limit'])) # noqa: E501 + if 'token' in params: + query_params.append(('token', params['token'])) # noqa: E501 + if 'filters' in params: + query_params.append(('filters', params['filters'])) # noqa: E501 + if 'sort_by_key' in params: + query_params.append(('sort_by.key', params['sort_by_key'])) # noqa: E501 + if 'sort_by_direction' in params: + query_params.append(('sort_by.direction', params['sort_by_direction'])) # noqa: E501 + + header_params = {} + + form_params = [] + local_var_files = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + # Authentication setting + auth_settings = [] # noqa: E501 + + return self.api_client.call_api( + '/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=form_params, + files=local_var_files, + response_type='AdminDescriptionEntityList', # noqa: E501 + auth_settings=auth_settings, + async_req=params.get('async_req'), + _return_http_data_only=params.get('_return_http_data_only'), + _preload_content=params.get('_preload_content', True), + _request_timeout=params.get('_request_timeout'), + collection_formats=collection_formats) + def list_executions(self, id_project, id_domain, **kwargs): # noqa: E501 """Fetch a list of :ref:`ref_flyteidl.admin.Execution`. # noqa: E501 diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py index caa66756f94..14c35920fe0 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py @@ -22,6 +22,10 @@ from flyteadmin.models.admin_cluster_assignment import AdminClusterAssignment from flyteadmin.models.admin_cluster_resource_attributes import AdminClusterResourceAttributes from flyteadmin.models.admin_cron_schedule import AdminCronSchedule +from flyteadmin.models.admin_description import AdminDescription +from flyteadmin.models.admin_description_entity import AdminDescriptionEntity +from flyteadmin.models.admin_description_entity_list import AdminDescriptionEntityList +from flyteadmin.models.admin_description_format import AdminDescriptionFormat from flyteadmin.models.admin_domain import AdminDomain from flyteadmin.models.admin_email_notification import AdminEmailNotification from flyteadmin.models.admin_execution import AdminExecution @@ -100,6 +104,7 @@ from flyteadmin.models.admin_schedule import AdminSchedule from flyteadmin.models.admin_slack_notification import AdminSlackNotification from flyteadmin.models.admin_sort import AdminSort +from flyteadmin.models.admin_source_code import AdminSourceCode from flyteadmin.models.admin_system_metadata import AdminSystemMetadata from flyteadmin.models.admin_task import AdminTask from flyteadmin.models.admin_task_closure import AdminTaskClosure diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description.py new file mode 100644 index 00000000000..d6188543b70 --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description.py @@ -0,0 +1,195 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +import pprint +import re # noqa: F401 + +import six + +from flyteadmin.models.admin_description_format import AdminDescriptionFormat # noqa: F401,E501 + + +class AdminDescription(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'value': 'str', + 'uri': 'str', + 'format': 'AdminDescriptionFormat', + 'icon_link': 'str' + } + + attribute_map = { + 'value': 'value', + 'uri': 'uri', + 'format': 'format', + 'icon_link': 'icon_link' + } + + def __init__(self, value=None, uri=None, format=None, icon_link=None): # noqa: E501 + """AdminDescription - a model defined in Swagger""" # noqa: E501 + + self._value = None + self._uri = None + self._format = None + self._icon_link = None + self.discriminator = None + + if value is not None: + self.value = value + if uri is not None: + self.uri = uri + if format is not None: + self.format = format + if icon_link is not None: + self.icon_link = icon_link + + @property + def value(self): + """Gets the value of this AdminDescription. # noqa: E501 + + + :return: The value of this AdminDescription. # noqa: E501 + :rtype: str + """ + return self._value + + @value.setter + def value(self, value): + """Sets the value of this AdminDescription. + + + :param value: The value of this AdminDescription. # noqa: E501 + :type: str + """ + + self._value = value + + @property + def uri(self): + """Gets the uri of this AdminDescription. # noqa: E501 + + + :return: The uri of this AdminDescription. # noqa: E501 + :rtype: str + """ + return self._uri + + @uri.setter + def uri(self, uri): + """Sets the uri of this AdminDescription. + + + :param uri: The uri of this AdminDescription. # noqa: E501 + :type: str + """ + + self._uri = uri + + @property + def format(self): + """Gets the format of this AdminDescription. # noqa: E501 + + + :return: The format of this AdminDescription. # noqa: E501 + :rtype: AdminDescriptionFormat + """ + return self._format + + @format.setter + def format(self, format): + """Sets the format of this AdminDescription. + + + :param format: The format of this AdminDescription. # noqa: E501 + :type: AdminDescriptionFormat + """ + + self._format = format + + @property + def icon_link(self): + """Gets the icon_link of this AdminDescription. # noqa: E501 + + + :return: The icon_link of this AdminDescription. # noqa: E501 + :rtype: str + """ + return self._icon_link + + @icon_link.setter + def icon_link(self, icon_link): + """Sets the icon_link of this AdminDescription. + + + :param icon_link: The icon_link of this AdminDescription. # noqa: E501 + :type: str + """ + + self._icon_link = icon_link + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(AdminDescription, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, AdminDescription): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description_entity.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description_entity.py new file mode 100644 index 00000000000..87438a1a936 --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description_entity.py @@ -0,0 +1,233 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +import pprint +import re # noqa: F401 + +import six + +from flyteadmin.models.admin_description import AdminDescription # noqa: F401,E501 +from flyteadmin.models.admin_source_code import AdminSourceCode # noqa: F401,E501 +from flyteadmin.models.core_identifier import CoreIdentifier # noqa: F401,E501 + + +class AdminDescriptionEntity(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'id': 'CoreIdentifier', + 'short_description': 'str', + 'long_description': 'AdminDescription', + 'source_code': 'AdminSourceCode', + 'tags': 'list[str]' + } + + attribute_map = { + 'id': 'id', + 'short_description': 'short_description', + 'long_description': 'long_description', + 'source_code': 'source_code', + 'tags': 'tags' + } + + def __init__(self, id=None, short_description=None, long_description=None, source_code=None, tags=None): # noqa: E501 + """AdminDescriptionEntity - a model defined in Swagger""" # noqa: E501 + + self._id = None + self._short_description = None + self._long_description = None + self._source_code = None + self._tags = None + self.discriminator = None + + if id is not None: + self.id = id + if short_description is not None: + self.short_description = short_description + if long_description is not None: + self.long_description = long_description + if source_code is not None: + self.source_code = source_code + if tags is not None: + self.tags = tags + + @property + def id(self): + """Gets the id of this AdminDescriptionEntity. # noqa: E501 + + id represents the unique identifier of the description entity. # noqa: E501 + + :return: The id of this AdminDescriptionEntity. # noqa: E501 + :rtype: CoreIdentifier + """ + return self._id + + @id.setter + def id(self, id): + """Sets the id of this AdminDescriptionEntity. + + id represents the unique identifier of the description entity. # noqa: E501 + + :param id: The id of this AdminDescriptionEntity. # noqa: E501 + :type: CoreIdentifier + """ + + self._id = id + + @property + def short_description(self): + """Gets the short_description of this AdminDescriptionEntity. # noqa: E501 + + One-liner overview of the entity. # noqa: E501 + + :return: The short_description of this AdminDescriptionEntity. # noqa: E501 + :rtype: str + """ + return self._short_description + + @short_description.setter + def short_description(self, short_description): + """Sets the short_description of this AdminDescriptionEntity. + + One-liner overview of the entity. # noqa: E501 + + :param short_description: The short_description of this AdminDescriptionEntity. # noqa: E501 + :type: str + """ + + self._short_description = short_description + + @property + def long_description(self): + """Gets the long_description of this AdminDescriptionEntity. # noqa: E501 + + Full user description with formatting preserved. # noqa: E501 + + :return: The long_description of this AdminDescriptionEntity. # noqa: E501 + :rtype: AdminDescription + """ + return self._long_description + + @long_description.setter + def long_description(self, long_description): + """Sets the long_description of this AdminDescriptionEntity. + + Full user description with formatting preserved. # noqa: E501 + + :param long_description: The long_description of this AdminDescriptionEntity. # noqa: E501 + :type: AdminDescription + """ + + self._long_description = long_description + + @property + def source_code(self): + """Gets the source_code of this AdminDescriptionEntity. # noqa: E501 + + Optional link to source code used to define this entity. # noqa: E501 + + :return: The source_code of this AdminDescriptionEntity. # noqa: E501 + :rtype: AdminSourceCode + """ + return self._source_code + + @source_code.setter + def source_code(self, source_code): + """Sets the source_code of this AdminDescriptionEntity. + + Optional link to source code used to define this entity. # noqa: E501 + + :param source_code: The source_code of this AdminDescriptionEntity. # noqa: E501 + :type: AdminSourceCode + """ + + self._source_code = source_code + + @property + def tags(self): + """Gets the tags of this AdminDescriptionEntity. # noqa: E501 + + User-specified tags. These are arbitrary and can be used for searching filtering and discovering tasks. # noqa: E501 + + :return: The tags of this AdminDescriptionEntity. # noqa: E501 + :rtype: list[str] + """ + return self._tags + + @tags.setter + def tags(self, tags): + """Sets the tags of this AdminDescriptionEntity. + + User-specified tags. These are arbitrary and can be used for searching filtering and discovering tasks. # noqa: E501 + + :param tags: The tags of this AdminDescriptionEntity. # noqa: E501 + :type: list[str] + """ + + self._tags = tags + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(AdminDescriptionEntity, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, AdminDescriptionEntity): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description_entity_list.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description_entity_list.py new file mode 100644 index 00000000000..60ba9535e48 --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description_entity_list.py @@ -0,0 +1,147 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +import pprint +import re # noqa: F401 + +import six + +from flyteadmin.models.admin_description_entity import AdminDescriptionEntity # noqa: F401,E501 + + +class AdminDescriptionEntityList(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'description_entities': 'list[AdminDescriptionEntity]', + 'token': 'str' + } + + attribute_map = { + 'description_entities': 'descriptionEntities', + 'token': 'token' + } + + def __init__(self, description_entities=None, token=None): # noqa: E501 + """AdminDescriptionEntityList - a model defined in Swagger""" # noqa: E501 + + self._description_entities = None + self._token = None + self.discriminator = None + + if description_entities is not None: + self.description_entities = description_entities + if token is not None: + self.token = token + + @property + def description_entities(self): + """Gets the description_entities of this AdminDescriptionEntityList. # noqa: E501 + + A list of DescriptionEntities returned based on the request. # noqa: E501 + + :return: The description_entities of this AdminDescriptionEntityList. # noqa: E501 + :rtype: list[AdminDescriptionEntity] + """ + return self._description_entities + + @description_entities.setter + def description_entities(self, description_entities): + """Sets the description_entities of this AdminDescriptionEntityList. + + A list of DescriptionEntities returned based on the request. # noqa: E501 + + :param description_entities: The description_entities of this AdminDescriptionEntityList. # noqa: E501 + :type: list[AdminDescriptionEntity] + """ + + self._description_entities = description_entities + + @property + def token(self): + """Gets the token of this AdminDescriptionEntityList. # noqa: E501 + + In the case of multiple pages of results, the server-provided token can be used to fetch the next page in a query. If there are no more results, this value will be empty. # noqa: E501 + + :return: The token of this AdminDescriptionEntityList. # noqa: E501 + :rtype: str + """ + return self._token + + @token.setter + def token(self, token): + """Sets the token of this AdminDescriptionEntityList. + + In the case of multiple pages of results, the server-provided token can be used to fetch the next page in a query. If there are no more results, this value will be empty. # noqa: E501 + + :param token: The token of this AdminDescriptionEntityList. # noqa: E501 + :type: str + """ + + self._token = token + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(AdminDescriptionEntityList, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, AdminDescriptionEntityList): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description_format.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description_format.py new file mode 100644 index 00000000000..882ff02fe74 --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_description_format.py @@ -0,0 +1,95 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +import pprint +import re # noqa: F401 + +import six + + +class AdminDescriptionFormat(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + UNKNOWN = "DESCRIPTION_FORMAT_UNKNOWN" + MARKDOWN = "DESCRIPTION_FORMAT_MARKDOWN" + HTML = "DESCRIPTION_FORMAT_HTML" + RST = "DESCRIPTION_FORMAT_RST" + + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501 + """AdminDescriptionFormat - a model defined in Swagger""" # noqa: E501 + self.discriminator = None + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(AdminDescriptionFormat, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, AdminDescriptionFormat): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_source_code.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_source_code.py new file mode 100644 index 00000000000..4f96d6165f2 --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_source_code.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +import pprint +import re # noqa: F401 + +import six + + +class AdminSourceCode(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'link': 'str' + } + + attribute_map = { + 'link': 'link' + } + + def __init__(self, link=None): # noqa: E501 + """AdminSourceCode - a model defined in Swagger""" # noqa: E501 + + self._link = None + self.discriminator = None + + if link is not None: + self.link = link + + @property + def link(self): + """Gets the link of this AdminSourceCode. # noqa: E501 + + + :return: The link of this AdminSourceCode. # noqa: E501 + :rtype: str + """ + return self._link + + @link.setter + def link(self, link): + """Sets the link of this AdminSourceCode. + + + :param link: The link of this AdminSourceCode. # noqa: E501 + :type: str + """ + + self._link = link + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(AdminSourceCode, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, AdminSourceCode): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task.py index cae8fe3e3c3..11bc5e1cae7 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task.py +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task.py @@ -35,25 +35,30 @@ class AdminTask(object): """ swagger_types = { 'id': 'CoreIdentifier', - 'closure': 'AdminTaskClosure' + 'closure': 'AdminTaskClosure', + 'short_description': 'str' } attribute_map = { 'id': 'id', - 'closure': 'closure' + 'closure': 'closure', + 'short_description': 'short_description' } - def __init__(self, id=None, closure=None): # noqa: E501 + def __init__(self, id=None, closure=None, short_description=None): # noqa: E501 """AdminTask - a model defined in Swagger""" # noqa: E501 self._id = None self._closure = None + self._short_description = None self.discriminator = None if id is not None: self.id = id if closure is not None: self.closure = closure + if short_description is not None: + self.short_description = short_description @property def id(self): @@ -101,6 +106,29 @@ def closure(self, closure): self._closure = closure + @property + def short_description(self): + """Gets the short_description of this AdminTask. # noqa: E501 + + One-liner overview of the entity. # noqa: E501 + + :return: The short_description of this AdminTask. # noqa: E501 + :rtype: str + """ + return self._short_description + + @short_description.setter + def short_description(self, short_description): + """Sets the short_description of this AdminTask. + + One-liner overview of the entity. # noqa: E501 + + :param short_description: The short_description of this AdminTask. # noqa: E501 + :type: str + """ + + self._short_description = short_description + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_spec.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_spec.py index b9fa4fddcf1..36beba2ffeb 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_spec.py +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_spec.py @@ -16,6 +16,7 @@ import six +from flyteadmin.models.admin_description_entity import AdminDescriptionEntity # noqa: F401,E501 from flyteadmin.models.core_task_template import CoreTaskTemplate # noqa: F401,E501 @@ -33,21 +34,26 @@ class AdminTaskSpec(object): and the value is json key in definition. """ swagger_types = { - 'template': 'CoreTaskTemplate' + 'template': 'CoreTaskTemplate', + 'description': 'AdminDescriptionEntity' } attribute_map = { - 'template': 'template' + 'template': 'template', + 'description': 'description' } - def __init__(self, template=None): # noqa: E501 + def __init__(self, template=None, description=None): # noqa: E501 """AdminTaskSpec - a model defined in Swagger""" # noqa: E501 self._template = None + self._description = None self.discriminator = None if template is not None: self.template = template + if description is not None: + self.description = description @property def template(self): @@ -72,6 +78,29 @@ def template(self, template): self._template = template + @property + def description(self): + """Gets the description of this AdminTaskSpec. # noqa: E501 + + Represents the specification for description entity. # noqa: E501 + + :return: The description of this AdminTaskSpec. # noqa: E501 + :rtype: AdminDescriptionEntity + """ + return self._description + + @description.setter + def description(self, description): + """Sets the description of this AdminTaskSpec. + + Represents the specification for description entity. # noqa: E501 + + :param description: The description of this AdminTaskSpec. # noqa: E501 + :type: AdminDescriptionEntity + """ + + self._description = description + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow.py index 244e9cda0c8..3b744bb0f78 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow.py +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow.py @@ -35,25 +35,30 @@ class AdminWorkflow(object): """ swagger_types = { 'id': 'CoreIdentifier', - 'closure': 'AdminWorkflowClosure' + 'closure': 'AdminWorkflowClosure', + 'short_description': 'str' } attribute_map = { 'id': 'id', - 'closure': 'closure' + 'closure': 'closure', + 'short_description': 'short_description' } - def __init__(self, id=None, closure=None): # noqa: E501 + def __init__(self, id=None, closure=None, short_description=None): # noqa: E501 """AdminWorkflow - a model defined in Swagger""" # noqa: E501 self._id = None self._closure = None + self._short_description = None self.discriminator = None if id is not None: self.id = id if closure is not None: self.closure = closure + if short_description is not None: + self.short_description = short_description @property def id(self): @@ -101,6 +106,29 @@ def closure(self, closure): self._closure = closure + @property + def short_description(self): + """Gets the short_description of this AdminWorkflow. # noqa: E501 + + One-liner overview of the entity. # noqa: E501 + + :return: The short_description of this AdminWorkflow. # noqa: E501 + :rtype: str + """ + return self._short_description + + @short_description.setter + def short_description(self, short_description): + """Sets the short_description of this AdminWorkflow. + + One-liner overview of the entity. # noqa: E501 + + :param short_description: The short_description of this AdminWorkflow. # noqa: E501 + :type: str + """ + + self._short_description = short_description + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_spec.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_spec.py index d49a6db687e..42b990d1c08 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_spec.py +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_spec.py @@ -16,6 +16,7 @@ import six +from flyteadmin.models.admin_description_entity import AdminDescriptionEntity # noqa: F401,E501 from flyteadmin.models.core_workflow_template import CoreWorkflowTemplate # noqa: F401,E501 @@ -34,25 +35,30 @@ class AdminWorkflowSpec(object): """ swagger_types = { 'template': 'CoreWorkflowTemplate', - 'sub_workflows': 'list[CoreWorkflowTemplate]' + 'sub_workflows': 'list[CoreWorkflowTemplate]', + 'description': 'AdminDescriptionEntity' } attribute_map = { 'template': 'template', - 'sub_workflows': 'sub_workflows' + 'sub_workflows': 'sub_workflows', + 'description': 'description' } - def __init__(self, template=None, sub_workflows=None): # noqa: E501 + def __init__(self, template=None, sub_workflows=None, description=None): # noqa: E501 """AdminWorkflowSpec - a model defined in Swagger""" # noqa: E501 self._template = None self._sub_workflows = None + self._description = None self.discriminator = None if template is not None: self.template = template if sub_workflows is not None: self.sub_workflows = sub_workflows + if description is not None: + self.description = description @property def template(self): @@ -100,6 +106,29 @@ def sub_workflows(self, sub_workflows): self._sub_workflows = sub_workflows + @property + def description(self): + """Gets the description of this AdminWorkflowSpec. # noqa: E501 + + Represents the specification for description entity. # noqa: E501 + + :return: The description of this AdminWorkflowSpec. # noqa: E501 + :rtype: AdminDescriptionEntity + """ + return self._description + + @description.setter + def description(self, description): + """Sets the description of this AdminWorkflowSpec. + + Represents the specification for description entity. # noqa: E501 + + :param description: The description of this AdminWorkflowSpec. # noqa: E501 + :type: AdminDescriptionEntity + """ + + self._description = description + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description.py new file mode 100644 index 00000000000..28488b15bd4 --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description.py @@ -0,0 +1,40 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +from __future__ import absolute_import + +import unittest + +import flyteadmin +from flyteadmin.models.admin_description import AdminDescription # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestAdminDescription(unittest.TestCase): + """AdminDescription unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testAdminDescription(self): + """Test AdminDescription""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.admin_description.AdminDescription() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description_entity.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description_entity.py new file mode 100644 index 00000000000..7e8d926bad8 --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description_entity.py @@ -0,0 +1,40 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +from __future__ import absolute_import + +import unittest + +import flyteadmin +from flyteadmin.models.admin_description_entity import AdminDescriptionEntity # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestAdminDescriptionEntity(unittest.TestCase): + """AdminDescriptionEntity unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testAdminDescriptionEntity(self): + """Test AdminDescriptionEntity""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.admin_description_entity.AdminDescriptionEntity() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description_entity_list.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description_entity_list.py new file mode 100644 index 00000000000..2592aec393a --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description_entity_list.py @@ -0,0 +1,40 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +from __future__ import absolute_import + +import unittest + +import flyteadmin +from flyteadmin.models.admin_description_entity_list import AdminDescriptionEntityList # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestAdminDescriptionEntityList(unittest.TestCase): + """AdminDescriptionEntityList unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testAdminDescriptionEntityList(self): + """Test AdminDescriptionEntityList""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.admin_description_entity_list.AdminDescriptionEntityList() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description_format.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description_format.py new file mode 100644 index 00000000000..79efa9a405d --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_description_format.py @@ -0,0 +1,40 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +from __future__ import absolute_import + +import unittest + +import flyteadmin +from flyteadmin.models.admin_description_format import AdminDescriptionFormat # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestAdminDescriptionFormat(unittest.TestCase): + """AdminDescriptionFormat unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testAdminDescriptionFormat(self): + """Test AdminDescriptionFormat""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.admin_description_format.AdminDescriptionFormat() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_service_api.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_service_api.py index da4a4821dea..4e4bee3a269 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_service_api.py +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_service_api.py @@ -106,6 +106,13 @@ def test_get_active_launch_plan(self): """ pass + def test_get_description_entity(self): + """Test case for get_description_entity + + Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object. # noqa: E501 + """ + pass + def test_get_execution(self): """Test case for get_execution @@ -210,6 +217,20 @@ def test_list_active_launch_plans(self): """ pass + def test_list_description_entities(self): + """Test case for list_description_entities + + Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. # noqa: E501 + """ + pass + + def test_list_description_entities2(self): + """Test case for list_description_entities2 + + Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. # noqa: E501 + """ + pass + def test_list_executions(self): """Test case for list_executions diff --git a/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_source_code.py b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_source_code.py new file mode 100644 index 00000000000..9c9a649de75 --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_source_code.py @@ -0,0 +1,40 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +from __future__ import absolute_import + +import unittest + +import flyteadmin +from flyteadmin.models.admin_source_code import AdminSourceCode # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestAdminSourceCode(unittest.TestCase): + """AdminSourceCode unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testAdminSourceCode(self): + """Test AdminSourceCode""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.admin_source_code.AdminSourceCode() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/flyteidl/generate_protos.sh b/flyteidl/generate_protos.sh index deb3acd77c8..03302a1a554 100755 --- a/flyteidl/generate_protos.sh +++ b/flyteidl/generate_protos.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e DIR=`pwd` rm -rf $DIR/gen @@ -84,6 +85,11 @@ rm -rf gen/pb-go/github.com mkdir -p gen/pb_python/validate cp -r validate/* gen/pb_python/validate/ +# Update the service code manually because the code generated by protoc is incorrect +# More detail, check https://github.com/flyteorg/flyteidl/pull/303#discussion_r1002151053 +sed -i -e 's/protoReq.Id.ResourceType = ResourceType(e)/protoReq.Id.ResourceType = core.ResourceType(e)/g' gen/pb-go/flyteidl/service/admin.pb.gw.go +rm -f gen/pb-go/flyteidl/service/admin.pb.gw.go-e + # This section is used by Travis CI to ensure that the generation step was run if [ -n "$DELTA_CHECK" ]; then DIRTY=$(git status --porcelain) diff --git a/flyteidl/go.mod b/flyteidl/go.mod index 65df4ab4b7b..84df3143f65 100644 --- a/flyteidl/go.mod +++ b/flyteidl/go.mod @@ -17,6 +17,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.7.0 + github.com/vektra/mockery v1.1.2 // indirect golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f golang.org/x/oauth2 v0.0.0-20210126194326-f9ce19ea3013 google.golang.org/api v0.38.0 diff --git a/flyteidl/go.sum b/flyteidl/go.sum index 3064296375e..d3b79ca5230 100644 --- a/flyteidl/go.sum +++ b/flyteidl/go.sum @@ -555,6 +555,8 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1 github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/vektra/mockery v1.1.2 h1:uc0Yn67rJpjt8U/mAZimdCKn9AeA97BOkjpmtBSlfP4= +github.com/vektra/mockery v1.1.2/go.mod h1:VcfZjKaFOPO+MpN4ZvwPjs4c48lkq1o3Ym8yHZJu0jU= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -810,6 +812,7 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200323144430-8dcfad9e016e/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/flyteidl/protos/docs/admin/admin.rst b/flyteidl/protos/docs/admin/admin.rst index 9e93faebe40..99b5b4096df 100644 --- a/flyteidl/protos/docs/admin/admin.rst +++ b/flyteidl/protos/docs/admin/admin.rst @@ -657,6 +657,173 @@ Sort.Direction +.. _ref_flyteidl/admin/description_entity.proto: + +flyteidl/admin/description_entity.proto +================================================================== + + + + + +.. _ref_flyteidl.admin.Description: + +Description +------------------------------------------------------------------ + +Full user description with formatting preserved. This can be rendered +by clients, such as the console or command line tools with in-tact +formatting. + + + +.. csv-table:: Description type fields + :header: "Field", "Type", "Label", "Description" + :widths: auto + + "value", ":ref:`ref_string`", "", "long description - no more than 4KB" + "uri", ":ref:`ref_string`", "", "if the description sizes exceed some threshold we can offload the entire description proto altogether to an external data store, like S3 rather than store inline in the db" + "format", ":ref:`ref_flyteidl.admin.DescriptionFormat`", "", "Format of the long description" + "icon_link", ":ref:`ref_string`", "", "Optional link to an icon for the entity" + + + + + + + +.. _ref_flyteidl.admin.DescriptionEntity: + +DescriptionEntity +------------------------------------------------------------------ + +DescriptionEntity contains detailed description for the task/workflow. +Documentation could provide insight into the algorithms, business use case, etc. + + + +.. csv-table:: DescriptionEntity type fields + :header: "Field", "Type", "Label", "Description" + :widths: auto + + "id", ":ref:`ref_flyteidl.core.Identifier`", "", "id represents the unique identifier of the description entity." + "short_description", ":ref:`ref_string`", "", "One-liner overview of the entity." + "long_description", ":ref:`ref_flyteidl.admin.Description`", "", "Full user description with formatting preserved." + "source_code", ":ref:`ref_flyteidl.admin.SourceCode`", "", "Optional link to source code used to define this entity." + "tags", ":ref:`ref_string`", "repeated", "User-specified tags. These are arbitrary and can be used for searching filtering and discovering tasks." + + + + + + + +.. _ref_flyteidl.admin.DescriptionEntityList: + +DescriptionEntityList +------------------------------------------------------------------ + +Represents a list of DescriptionEntities returned from the admin. +See :ref:`ref_flyteidl.admin.DescriptionEntity` for more details + + + +.. csv-table:: DescriptionEntityList type fields + :header: "Field", "Type", "Label", "Description" + :widths: auto + + "descriptionEntities", ":ref:`ref_flyteidl.admin.DescriptionEntity`", "repeated", "A list of DescriptionEntities returned based on the request." + "token", ":ref:`ref_string`", "", "In the case of multiple pages of results, the server-provided token can be used to fetch the next page in a query. If there are no more results, this value will be empty." + + + + + + + +.. _ref_flyteidl.admin.DescriptionEntityListRequest: + +DescriptionEntityListRequest +------------------------------------------------------------------ + +Represents a request structure to retrieve a list of DescriptionEntities. +See :ref:`ref_flyteidl.admin.DescriptionEntity` for more details + + + +.. csv-table:: DescriptionEntityListRequest type fields + :header: "Field", "Type", "Label", "Description" + :widths: auto + + "resource_type", ":ref:`ref_flyteidl.core.ResourceType`", "", "Identifies the specific type of resource that this identifier corresponds to." + "id", ":ref:`ref_flyteidl.admin.NamedEntityIdentifier`", "", "The identifier for the description entity. +required" + "limit", ":ref:`ref_uint32`", "", "Indicates the number of resources to be returned. +required" + "token", ":ref:`ref_string`", "", "In the case of multiple pages of results, the server-provided token can be used to fetch the next page in a query. +optional" + "filters", ":ref:`ref_string`", "", "Indicates a list of filters passed as string. More info on constructing filters : +optional" + "sort_by", ":ref:`ref_flyteidl.admin.Sort`", "", "Sort ordering for returned list. +optional" + + + + + + + +.. _ref_flyteidl.admin.SourceCode: + +SourceCode +------------------------------------------------------------------ + +Link to source code used to define this entity + + + +.. csv-table:: SourceCode type fields + :header: "Field", "Type", "Label", "Description" + :widths: auto + + "link", ":ref:`ref_string`", "", "" + + + + + + +.. + end messages + + + +.. _ref_flyteidl.admin.DescriptionFormat: + +DescriptionFormat +------------------------------------------------------------------ + +The format of the long description + +.. csv-table:: Enum DescriptionFormat values + :header: "Name", "Number", "Description" + :widths: auto + + "DESCRIPTION_FORMAT_UNKNOWN", "0", "" + "DESCRIPTION_FORMAT_MARKDOWN", "1", "" + "DESCRIPTION_FORMAT_HTML", "2", "" + "DESCRIPTION_FORMAT_RST", "3", "python default documentation - comments is rst" + + +.. + end enums + + +.. + end HasExtensions + + +.. + end services + + + + .. _ref_flyteidl/admin/event.proto: flyteidl/admin/event.proto @@ -3307,6 +3474,7 @@ Tasks can come in many varieties tuned for specialized behavior. "id", ":ref:`ref_flyteidl.core.Identifier`", "", "id represents the unique identifier of the task." "closure", ":ref:`ref_flyteidl.admin.TaskClosure`", "", "closure encapsulates all the fields that maps to a compiled version of the task." + "short_description", ":ref:`ref_string`", "", "One-liner overview of the entity." @@ -3413,6 +3581,7 @@ Represents a structure that encapsulates the user-configured specification of th :widths: auto "template", ":ref:`ref_flyteidl.core.TaskTemplate`", "", "Template of the task that encapsulates all the metadata of the task." + "description", ":ref:`ref_flyteidl.admin.DescriptionEntity`", "", "Represents the specification for description entity." @@ -3772,6 +3941,7 @@ in order to produce a directed-acyclic execution graph. "id", ":ref:`ref_flyteidl.core.Identifier`", "", "id represents the unique identifier of the workflow." "closure", ":ref:`ref_flyteidl.admin.WorkflowClosure`", "", "closure encapsulates all the fields that maps to a compiled version of the workflow." + "short_description", ":ref:`ref_string`", "", "One-liner overview of the entity." @@ -3918,6 +4088,7 @@ Represents a structure that encapsulates the specification of the workflow. "template", ":ref:`ref_flyteidl.core.WorkflowTemplate`", "", "Template of the task that encapsulates all the metadata of the workflow." "sub_workflows", ":ref:`ref_flyteidl.core.WorkflowTemplate`", "repeated", "Workflows that are embedded into other workflows need to be passed alongside the parent workflow to the propeller compiler (since the compiler doesn't have any knowledge of other workflows - ie, it doesn't reach out to Admin to see other registered workflows). In fact, subworkflows do not even need to be registered." + "description", ":ref:`ref_flyteidl.admin.DescriptionEntity`", "", "Represents the specification for description entity." diff --git a/flyteidl/protos/docs/service/service.rst b/flyteidl/protos/docs/service/service.rst index 87c0bf93aac..f8fdda15c00 100644 --- a/flyteidl/protos/docs/service/service.rst +++ b/flyteidl/protos/docs/service/service.rst @@ -88,6 +88,8 @@ Standard response codes for both are defined here: https://github.com/grpc-ecosy "GetNamedEntity", ":ref:`ref_flyteidl.admin.NamedEntityGetRequest`", ":ref:`ref_flyteidl.admin.NamedEntity`", "Returns a :ref:`ref_flyteidl.admin.NamedEntity` object." "UpdateNamedEntity", ":ref:`ref_flyteidl.admin.NamedEntityUpdateRequest`", ":ref:`ref_flyteidl.admin.NamedEntityUpdateResponse`", "Updates a :ref:`ref_flyteidl.admin.NamedEntity` object." "GetVersion", ":ref:`ref_flyteidl.admin.GetVersionRequest`", ":ref:`ref_flyteidl.admin.GetVersionResponse`", "" + "GetDescriptionEntity", ":ref:`ref_flyteidl.admin.ObjectGetRequest`", ":ref:`ref_flyteidl.admin.DescriptionEntity`", "Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object." + "ListDescriptionEntities", ":ref:`ref_flyteidl.admin.DescriptionEntityListRequest`", ":ref:`ref_flyteidl.admin.DescriptionEntityList`", "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions." .. end services diff --git a/flyteidl/protos/flyteidl/admin/description_entity.proto b/flyteidl/protos/flyteidl/admin/description_entity.proto new file mode 100644 index 00000000000..fcf4e1a466e --- /dev/null +++ b/flyteidl/protos/flyteidl/admin/description_entity.proto @@ -0,0 +1,95 @@ +syntax = "proto3"; + +package flyteidl.admin; +option go_package = "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin"; + +import "flyteidl/core/identifier.proto"; +import "flyteidl/admin/common.proto"; + +// DescriptionEntity contains detailed description for the task/workflow. +// Documentation could provide insight into the algorithms, business use case, etc. +message DescriptionEntity { + // id represents the unique identifier of the description entity. + core.Identifier id = 1; + // One-liner overview of the entity. + string short_description = 2; + // Full user description with formatting preserved. + Description long_description = 3; + // Optional link to source code used to define this entity. + SourceCode source_code = 4; + // User-specified tags. These are arbitrary and can be used for searching + // filtering and discovering tasks. + repeated string tags = 5; +} + +// The format of the long description +enum DescriptionFormat { + DESCRIPTION_FORMAT_UNKNOWN = 0; + DESCRIPTION_FORMAT_MARKDOWN = 1; + DESCRIPTION_FORMAT_HTML = 2; + // python default documentation - comments is rst + DESCRIPTION_FORMAT_RST = 3; +} + +// Full user description with formatting preserved. This can be rendered +// by clients, such as the console or command line tools with in-tact +// formatting. +message Description { + oneof content { + // long description - no more than 4KB + string value = 1; + // if the description sizes exceed some threshold we can offload the entire + // description proto altogether to an external data store, like S3 rather than store inline in the db + string uri = 2; + } + + // Format of the long description + DescriptionFormat format = 3; + // Optional link to an icon for the entity + string icon_link = 4; +} + +// Link to source code used to define this entity +message SourceCode { + string link = 1; +} + +// Represents a list of DescriptionEntities returned from the admin. +// See :ref:`ref_flyteidl.admin.DescriptionEntity` for more details +message DescriptionEntityList { + // A list of DescriptionEntities returned based on the request. + repeated DescriptionEntity descriptionEntities = 1; + + // In the case of multiple pages of results, the server-provided token can be used to fetch the next page + // in a query. If there are no more results, this value will be empty. + string token = 2; +} + +// Represents a request structure to retrieve a list of DescriptionEntities. +// See :ref:`ref_flyteidl.admin.DescriptionEntity` for more details +message DescriptionEntityListRequest { + // Identifies the specific type of resource that this identifier corresponds to. + flyteidl.core.ResourceType resource_type = 1; + + // The identifier for the description entity. + // +required + NamedEntityIdentifier id = 2; + + // Indicates the number of resources to be returned. + // +required + uint32 limit = 3; + + // In the case of multiple pages of results, the server-provided token can be used to fetch the next page + // in a query. + // +optional + string token = 4; + + // Indicates a list of filters passed as string. + // More info on constructing filters : + // +optional + string filters = 5; + + // Sort ordering for returned list. + // +optional + Sort sort_by = 6; +} diff --git a/flyteidl/protos/flyteidl/admin/task.proto b/flyteidl/protos/flyteidl/admin/task.proto index 1a5ea8dce59..b768bc0102c 100644 --- a/flyteidl/protos/flyteidl/admin/task.proto +++ b/flyteidl/protos/flyteidl/admin/task.proto @@ -6,6 +6,7 @@ option go_package = "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin"; import "flyteidl/core/identifier.proto"; import "flyteidl/core/tasks.proto"; import "flyteidl/core/compiler.proto"; +import "flyteidl/admin/description_entity.proto"; import "google/protobuf/timestamp.proto"; // Represents a request structure to create a revision of a task. @@ -34,6 +35,9 @@ message Task { // closure encapsulates all the fields that maps to a compiled version of the task. TaskClosure closure = 2; + + // One-liner overview of the entity. + string short_description = 3; } // Represents a list of tasks returned from the admin. @@ -51,6 +55,9 @@ message TaskList { message TaskSpec { // Template of the task that encapsulates all the metadata of the task. core.TaskTemplate template = 1; + + // Represents the specification for description entity. + DescriptionEntity description = 2; } // Compute task attributes which include values derived from the TaskSpec, as well as plugin-specific data diff --git a/flyteidl/protos/flyteidl/admin/workflow.proto b/flyteidl/protos/flyteidl/admin/workflow.proto index c9b3b801dda..b768cf9601c 100644 --- a/flyteidl/protos/flyteidl/admin/workflow.proto +++ b/flyteidl/protos/flyteidl/admin/workflow.proto @@ -6,6 +6,7 @@ option go_package = "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin"; import "flyteidl/core/compiler.proto"; import "flyteidl/core/identifier.proto"; import "flyteidl/core/workflow.proto"; +import "flyteidl/admin/description_entity.proto"; import "google/protobuf/timestamp.proto"; // Represents a request structure to create a revision of a workflow. @@ -33,6 +34,9 @@ message Workflow { // closure encapsulates all the fields that maps to a compiled version of the workflow. WorkflowClosure closure = 2; + + // One-liner overview of the entity. + string short_description = 3; } // Represents a list of workflows returned from the admin. @@ -55,6 +59,9 @@ message WorkflowSpec { // propeller compiler (since the compiler doesn't have any knowledge of other workflows - ie, it doesn't reach out // to Admin to see other registered workflows). In fact, subworkflows do not even need to be registered. repeated core.WorkflowTemplate sub_workflows = 2; + + // Represents the specification for description entity. + DescriptionEntity description = 3; } // A container holding the compiled workflow produced from the WorkflowSpec and additional metadata. diff --git a/flyteidl/protos/flyteidl/core/identifier.proto b/flyteidl/protos/flyteidl/core/identifier.proto index 9b73c102f7f..ef8ca4494c5 100644 --- a/flyteidl/protos/flyteidl/core/identifier.proto +++ b/flyteidl/protos/flyteidl/core/identifier.proto @@ -19,7 +19,7 @@ enum ResourceType { // Encapsulation of fields that uniquely identifies a Flyte resource. message Identifier { // Identifies the specific type of resource that this identifier corresponds to. - ResourceType resource_type = 1; + core.ResourceType resource_type = 1; // Name of the project the resource belongs to. string project = 2; diff --git a/flyteidl/protos/flyteidl/service/admin.proto b/flyteidl/protos/flyteidl/service/admin.proto index 82f155cbb81..9884a456646 100644 --- a/flyteidl/protos/flyteidl/service/admin.proto +++ b/flyteidl/protos/flyteidl/service/admin.proto @@ -18,6 +18,8 @@ import "flyteidl/admin/node_execution.proto"; import "flyteidl/admin/task_execution.proto"; import "flyteidl/admin/version.proto"; import "flyteidl/admin/common.proto"; +import "flyteidl/admin/description_entity.proto"; +import "flyteidl/core/identifier.proto"; import "protoc-gen-swagger/options/annotations.proto"; // The following defines an RPC service that is also served over HTTP via grpc-gateway. @@ -603,5 +605,26 @@ service AdminService { }; } -} + // Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object. + rpc GetDescriptionEntity (flyteidl.admin.ObjectGetRequest) returns (flyteidl.admin.DescriptionEntity) { + option (google.api.http) = { + get: "/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + description: "Retrieve an existing description entity description." + }; + } + // Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. + rpc ListDescriptionEntities (flyteidl.admin.DescriptionEntityListRequest) returns (flyteidl.admin.DescriptionEntityList) { + option (google.api.http) = { + get: "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}" + additional_bindings { + get: "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}" + } + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + description: "Fetch existing description entity definitions matching input filters." + }; + } +} diff --git a/flyteidl/scripts/test_diff.sh b/flyteidl/scripts/test_diff.sh index b6d0c0452d5..3c79d24870d 100755 --- a/flyteidl/scripts/test_diff.sh +++ b/flyteidl/scripts/test_diff.sh @@ -15,9 +15,15 @@ rm -rf gen/pb-go/github.com mkdir -p gen/pb_python/validate cp -r validate/* gen/pb_python/validate/ +# Update the service code manually because the code generated by protoc is incorrect +# More detail, check https://github.com/flyteorg/flyteidl/pull/303#discussion_r1002151053 +sed -i -e 's/protoReq.Id.ResourceType = ResourceType(e)/protoReq.Id.ResourceType = core.ResourceType(e)/g' gen/pb-go/flyteidl/service/admin.pb.gw.go +rm -f gen/pb-go/flyteidl/service/admin.pb.gw.go-e + + DIRTY=$(git status --porcelain) if [ -n "$DIRTY" ]; then - echo "FAILED: Protos updated without commiting generated code." + echo "FAILED: Protos updated without committing generated code." echo "Ensure make generate has run and all changes are committed." DIFF=$(git diff) echo "diff detected: $DIFF"