This is an automated email from the ASF dual-hosted git repository. pabloem pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push: new 59f5772 [BEAM-13145][Playground] add a new status: STATUS_VALIDATING; add a new status: STATUS_VALIDATION_ERROR; add a new status: STATUS_COMPILING; update of validation processing; new 59bd9a0 Merge pull request #15853 from [BEAM-13145][Playground] Validation error 59f5772 is described below commit 59f57728a8ba5f1490d2f4f6aa35bb0c317240c6 Author: AydarZaynutdinov <aydar.zaynutdi...@akvelon.com> AuthorDate: Mon Nov 1 16:27:31 2021 +0300 [BEAM-13145][Playground] add a new status: STATUS_VALIDATING; add a new status: STATUS_VALIDATION_ERROR; add a new status: STATUS_COMPILING; update of validation processing; --- playground/api/v1/api.proto | 11 ++- playground/backend/cmd/server/controller.go | 35 ++++--- playground/backend/cmd/server/controller_test.go | 8 +- playground/backend/internal/api/v1/api.pb.go | 111 +++++++++++++---------- 4 files changed, 94 insertions(+), 71 deletions(-) diff --git a/playground/api/v1/api.proto b/playground/api/v1/api.proto index a6c8b93..d105791 100644 --- a/playground/api/v1/api.proto +++ b/playground/api/v1/api.proto @@ -31,11 +31,14 @@ enum Sdk { enum Status { STATUS_UNSPECIFIED = 0; - STATUS_EXECUTING = 1; - STATUS_FINISHED = 2; - STATUS_ERROR = 3; + STATUS_VALIDATING = 1; + STATUS_VALIDATION_ERROR = 2; + STATUS_COMPILING = 3; STATUS_COMPILE_ERROR = 4; - STATUS_RUN_TIMEOUT = 5; + STATUS_EXECUTING = 5; + STATUS_FINISHED = 6; + STATUS_ERROR = 7; + STATUS_RUN_TIMEOUT = 8; } // RunCodeRequest represents a code text and options of SDK which executes the code. diff --git a/playground/backend/cmd/server/controller.go b/playground/backend/cmd/server/controller.go index 49285d2..03e9b2a 100644 --- a/playground/backend/cmd/server/controller.go +++ b/playground/backend/cmd/server/controller.go @@ -60,7 +60,7 @@ func (controller *playgroundController) RunCode(ctx context.Context, info *pb.Ru compileBuilder := setupCompileBuilder(lc, info.Sdk, controller.env.BeamSdkEnvs.ExecutorConfig) - setToCache(ctx, controller.cacheService, pipelineId, cache.Status, pb.Status_STATUS_EXECUTING) + setToCache(ctx, controller.cacheService, pipelineId, cache.Status, pb.Status_STATUS_VALIDATING) if err := controller.cacheService.SetExpTime(ctx, pipelineId, cacheExpirationTime); err != nil { logger.Errorf("%s: RunCode(): cache.SetExpTime(): %s\n", pipelineId, err.Error()) return nil, errors.InternalError("Run code()", "Error during set expiration to cache: "+err.Error()) @@ -219,13 +219,11 @@ func processCode(ctx context.Context, cacheService cache.Cache, lc *fs_tool.Life logger.Infof("%s: Validate() ...\n", pipelineId) validateFunc := exec.Validate() if err := validateFunc(); err != nil { - // error during validation - // TODO move to processError when status for validation error will be added - logger.Errorf("%s: Validate: %s\n", pipelineId, err.Error()) - setToCache(ctx, cacheService, pipelineId, cache.Status, pb.Status_STATUS_ERROR) + processError(ctx, err, nil, pipelineId, cacheService, pb.Status_STATUS_VALIDATION_ERROR) return + } else { + processSuccess(ctx, nil, pipelineId, cacheService, pb.Status_STATUS_COMPILING) } - logger.Infof("%s: Validate() finish\n", pipelineId) // compile logger.Infof("%s: Compile() ...\n", pipelineId) @@ -250,7 +248,6 @@ func processCode(ctx context.Context, cacheService cache.Cache, lc *fs_tool.Life logger.Infof("%s: Run() ...\n", pipelineId) runCmd := exec.Run() if data, err := runCmd.CombinedOutput(); err != nil { - // error during run code processError(ctx, err, data, pipelineId, cacheService, pb.Status_STATUS_ERROR) return } else { @@ -271,14 +268,11 @@ func cleanUp(pipelineId uuid.UUID, lc *fs_tool.LifeCycle) { // processError processes error received during processing code via setting a corresponding status and output to cache func processError(ctx context.Context, err error, data []byte, pipelineId uuid.UUID, cacheService cache.Cache, status pb.Status) { switch status { - case pb.Status_STATUS_ERROR: - logger.Errorf("%s: Run: err: %s, output: %s\n", pipelineId, err.Error(), data) - - // set to cache pipelineId: cache.SubKey_RunOutput: err.Error() - setToCache(ctx, cacheService, pipelineId, cache.RunOutput, "error: "+err.Error()+", output: "+string(data)) + case pb.Status_STATUS_VALIDATION_ERROR: + logger.Errorf("%s: Validate: %s\n", pipelineId, err.Error()) - // set to cache pipelineId: cache.SubKey_Status: pb.Status_STATUS_ERROR - setToCache(ctx, cacheService, pipelineId, cache.Status, pb.Status_STATUS_ERROR) + // set to cache pipelineId: cache.SubKey_Status: pb.Status_STATUS_VALIDATION_ERROR + setToCache(ctx, cacheService, pipelineId, cache.Status, pb.Status_STATUS_VALIDATION_ERROR) case pb.Status_STATUS_COMPILE_ERROR: logger.Errorf("%s: Compile: err: %s, output: %s\n", pipelineId, err.Error(), data) @@ -287,12 +281,25 @@ func processError(ctx context.Context, err error, data []byte, pipelineId uuid.U // set to cache pipelineId: cache.SubKey_Status: pb.Status_STATUS_ERROR setToCache(ctx, cacheService, pipelineId, cache.Status, pb.Status_STATUS_COMPILE_ERROR) + case pb.Status_STATUS_ERROR: + logger.Errorf("%s: Run: err: %s, output: %s\n", pipelineId, err.Error(), data) + + // set to cache pipelineId: cache.SubKey_RunOutput: err.Error() + setToCache(ctx, cacheService, pipelineId, cache.RunOutput, "error: "+err.Error()+", output: "+string(data)) + + // set to cache pipelineId: cache.SubKey_Status: pb.Status_STATUS_ERROR + setToCache(ctx, cacheService, pipelineId, cache.Status, pb.Status_STATUS_ERROR) } } // processSuccess processes case after successful code processing via setting a corresponding status and output to cache func processSuccess(ctx context.Context, output []byte, pipelineId uuid.UUID, cacheService cache.Cache, status pb.Status) { switch status { + case pb.Status_STATUS_COMPILING: + logger.Infof("%s: Validate() finish\n", pipelineId) + + // set to cache pipelineId: cache.SubKey_Status: pb.Status_STATUS_EXECUTING + setToCache(ctx, cacheService, pipelineId, cache.Status, pb.Status_STATUS_COMPILING) case pb.Status_STATUS_EXECUTING: logger.Infof("%s: Compile() finish\n", pipelineId) diff --git a/playground/backend/cmd/server/controller_test.go b/playground/backend/cmd/server/controller_test.go index b5526d1..251fab8 100644 --- a/playground/backend/cmd/server/controller_test.go +++ b/playground/backend/cmd/server/controller_test.go @@ -139,7 +139,7 @@ func TestPlaygroundController_RunCode(t *testing.T) { }, { // Test case with calling RunCode method with correct SDK. - // As a result want to receive response with pipelineId and status into cache should be set as Status_STATUS_EXECUTING. + // As a result want to receive response with pipelineId and status into cache should be set as Status_STATUS_COMPILING. name: "RunCode with correct sdk", args: args{ ctx: context.Background(), @@ -148,7 +148,7 @@ func TestPlaygroundController_RunCode(t *testing.T) { Sdk: pb.Sdk_SDK_JAVA, }, }, - wantStatus: pb.Status_STATUS_EXECUTING, + wantStatus: pb.Status_STATUS_COMPILING, wantErr: false, }, } @@ -425,11 +425,11 @@ func Test_processCode(t *testing.T) { }{ { // Test case with calling processCode method without preparing files with code. - // As a result status into cache should be set as Status_STATUS_ERROR. + // As a result status into cache should be set as Status_STATUS_VALIDATION_ERROR. name: "validation failed", createExecFile: false, code: "", - expectedStatus: pb.Status_STATUS_ERROR, + expectedStatus: pb.Status_STATUS_VALIDATION_ERROR, expectedCompileOutput: nil, expectedRunOutput: nil, args: args{ diff --git a/playground/backend/internal/api/v1/api.pb.go b/playground/backend/internal/api/v1/api.pb.go index a2844c7..0376ff9 100644 --- a/playground/backend/internal/api/v1/api.pb.go +++ b/playground/backend/internal/api/v1/api.pb.go @@ -95,31 +95,40 @@ func (Sdk) EnumDescriptor() ([]byte, []int) { type Status int32 const ( - Status_STATUS_UNSPECIFIED Status = 0 - Status_STATUS_EXECUTING Status = 1 - Status_STATUS_FINISHED Status = 2 - Status_STATUS_ERROR Status = 3 - Status_STATUS_COMPILE_ERROR Status = 4 - Status_STATUS_RUN_TIMEOUT Status = 5 + Status_STATUS_UNSPECIFIED Status = 0 + Status_STATUS_VALIDATING Status = 1 + Status_STATUS_VALIDATION_ERROR Status = 2 + Status_STATUS_COMPILING Status = 3 + Status_STATUS_COMPILE_ERROR Status = 4 + Status_STATUS_EXECUTING Status = 5 + Status_STATUS_FINISHED Status = 6 + Status_STATUS_ERROR Status = 7 + Status_STATUS_RUN_TIMEOUT Status = 8 ) // Enum value maps for Status. var ( Status_name = map[int32]string{ 0: "STATUS_UNSPECIFIED", - 1: "STATUS_EXECUTING", - 2: "STATUS_FINISHED", - 3: "STATUS_ERROR", + 1: "STATUS_VALIDATING", + 2: "STATUS_VALIDATION_ERROR", + 3: "STATUS_COMPILING", 4: "STATUS_COMPILE_ERROR", - 5: "STATUS_RUN_TIMEOUT", + 5: "STATUS_EXECUTING", + 6: "STATUS_FINISHED", + 7: "STATUS_ERROR", + 8: "STATUS_RUN_TIMEOUT", } Status_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "STATUS_EXECUTING": 1, - "STATUS_FINISHED": 2, - "STATUS_ERROR": 3, - "STATUS_COMPILE_ERROR": 4, - "STATUS_RUN_TIMEOUT": 5, + "STATUS_UNSPECIFIED": 0, + "STATUS_VALIDATING": 1, + "STATUS_VALIDATION_ERROR": 2, + "STATUS_COMPILING": 3, + "STATUS_COMPILE_ERROR": 4, + "STATUS_EXECUTING": 5, + "STATUS_FINISHED": 6, + "STATUS_ERROR": 7, + "STATUS_RUN_TIMEOUT": 8, } ) @@ -605,40 +614,44 @@ var file_api_v1_api_proto_rawDesc = []byte{ 0x44, 0x4b, 0x5f, 0x4a, 0x41, 0x56, 0x41, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x44, 0x4b, 0x5f, 0x47, 0x4f, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x44, 0x4b, 0x5f, 0x50, 0x59, 0x54, 0x48, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x44, 0x4b, 0x5f, 0x53, 0x43, 0x49, - 0x4f, 0x10, 0x04, 0x2a, 0x8f, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, + 0x4f, 0x10, 0x04, 0x2a, 0xd9, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x49, 0x53, 0x48, 0x45, 0x44, 0x10, - 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, - 0x4d, 0x50, 0x49, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x16, 0x0a, - 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, - 0x4f, 0x55, 0x54, 0x10, 0x05, 0x32, 0xb9, 0x02, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, - 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x52, - 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x49, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, - 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, - 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, - 0x69, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x42, 0x38, 0x5a, 0x36, 0x62, 0x65, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, - 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2f, - 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x3b, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1b, 0x0a, + 0x17, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x49, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x03, + 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x49, + 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x05, + 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x49, 0x53, + 0x48, 0x45, 0x44, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x07, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x08, 0x32, + 0xb9, 0x02, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x47, 0x65, 0x74, + 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, + 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x38, 0x5a, 0x36, 0x62, + 0x65, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, + 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, + 0x64, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x3b, 0x70, 0x6c, 0x61, 0x79, 0x67, + 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var (