diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d7125a92f..6b9a27367 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -177,15 +177,6 @@ jobs: cp pkg/lib/bundle/systemTypes.json ./json cp pkg/lib/bundle/internalRelations.json ./json cp pkg/lib/bundle/internalTypes.json ./json - - name: Upload protobuf artifact for linux build - uses: actions/upload-artifact@v2 - with: - name: libs - path: | - protobuf - if-no-files-found: error - retention-days: 1 - if: github.event_name == 'push' - name: Pack server win run: | declare -a arr=("windows-amd64") @@ -379,7 +370,7 @@ jobs: cp pkg/lib/bundle/internalRelations.json ./json cp pkg/lib/bundle/internalTypes.json ./json - name: Upload protobuf artifact for linux build - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: libs path: | @@ -404,4 +395,4 @@ jobs: fail_on_unmatched_files: true files: '.release/*' env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/perftests.yml b/.github/workflows/perftests.yml new file mode 100644 index 000000000..69bba967e --- /dev/null +++ b/.github/workflows/perftests.yml @@ -0,0 +1,101 @@ +on: + workflow_dispatch: + inputs: + run-on-runner: + description: 'Specify the runner to use' + required: true + default: 'ARM64' + perf-test: + description: 'Run perf test times' + required: true + default: '0' + schedule: + - cron: '0 0 * * *' # every day at midnight + filters: + branches: + include: + - 'feature/chat' + + +permissions: + actions: 'write' + contents: 'write' + + +name: Build +jobs: + build: + runs-on: 'ARM64' + steps: + - name: Setup GO + run: | + go version + echo GOPATH=$(go env GOPATH) >> $GITHUB_ENV + echo GOBIN=$(go env GOPATH)/bin >> $GITHUB_ENV + echo $(go env GOPATH)/bin >> $GITHUB_PATH + - name: Checkout + uses: actions/checkout@v3 + - uses: actions/cache@v3 + with: + path: | + ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go-${{ matrix.go-version }}- + - name: Set env vars + env: + UNSPLASH_KEY: ${{ secrets.UNSPLASH_KEY }} + INHOUSE_KEY: ${{ secrets.INHOUSE_KEY }} + run: | + GIT_SUMMARY=$(git describe --tags --always) + echo "FLAGS=-X github.com/anyproto/anytype-heart/util/vcs.GitSummary=${GIT_SUMMARY} -X github.com/anyproto/anytype-heart/metrics.DefaultInHouseKey=${INHOUSE_KEY} -X github.com/anyproto/anytype-heart/util/unsplash.DefaultToken=${UNSPLASH_KEY}" >> $GITHUB_ENV + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + VERSION=${{ github.event.inputs.alpha_version }} + if [ -z "$VERSION" ]; then + VERSION=$(git rev-parse --short HEAD) + fi + fi + if [ -z "$VERSION" ]; then + VERSION=${GITHUB_REF##*/} + fi + echo VERSION=${VERSION} >> $GITHUB_ENV + echo MAVEN_ARTIFACT_VERSION=${VERSION} >> $GITHUB_ENV + echo GOPRIVATE=github.com/anyproto >> $GITHUB_ENV + echo $(pwd)/deps >> $GITHUB_PATH + echo "${GOBIN}" >> $GITHUB_PATH + git config --global url."https://${{ secrets.ANYTYPE_PAT }}@github.com/".insteadOf "https://github.com/" + - name: Go mod download + run: | + go mod download + - name: install protoc + run: | + make setup-protoc + - name: setup go + run: | + make setup-go + make setup-gomobile + which gomobile + - name: run perf tests + run: | + echo "Running perf tests" + make download-tantivy-all + RUN_COUNT=${{ github.event.inputs.perf-test }} + if [[ "${{ github.event_name }}" == "schedule" ]]; then + RUN_COUNT=100 + fi + cd cmd/perfstand/account_create + CGO_ENABLED="1" go run main.go $RUN_COUNT + cd ../account_select + CGO_ENABLED="1" go run main.go $RUN_COUNT + env: + TEST_MNEMONIC: ${{ secrets.TEST_MNEMONIC_30000 }} + CH_API_KEY: ${{ secrets.CH_API_KEY }} + ACCOUNT_HASH: ${{ secrets.ACCOUNT_HASH_30000 }} + ACCOUNT_SPACE: ${{ secrets.ACCOUNT_SPACE_30000 }} + ROOT_FOLDER: ${{ secrets.ROOT_FOLDER }} + - name: Archive perf tests results + uses: actions/upload-artifact@v4 + with: + name: pprofs + path: | + *.pprof \ No newline at end of file diff --git a/.mockery.yaml b/.mockery.yaml index d7757014e..dbc4a0124 100644 --- a/.mockery.yaml +++ b/.mockery.yaml @@ -180,6 +180,9 @@ packages: github.com/anyproto/anytype-heart/core/peerstatus: interfaces: LocalDiscoveryHook: + github.com/anyproto/anytype-heart/core/device: + interfaces: + NetworkState: github.com/anyproto/anytype-heart/space/spacecore/localdiscovery: interfaces: Notifier: @@ -197,11 +200,6 @@ packages: github.com/anyproto/anytype-heart/core/syncstatus/objectsyncstatus: interfaces: Updater: - UpdateReceiver: - config: - dir: "{{.InterfaceDir}}" - outpkg: "{{.PackageName}}" - inpackage: true github.com/anyproto/anytype-heart/space/spacecore/peermanager: interfaces: Updater: @@ -215,6 +213,9 @@ packages: NodeUsage: NetworkConfig: Updater: + github.com/anyproto/anytype-heart/core/block/import/notion/api/files: + interfaces: + Downloader: github.com/anyproto/anytype-heart/core/block/detailservice: interfaces: Service: \ No newline at end of file diff --git a/clientlibrary/service/service.pb.go b/clientlibrary/service/service.pb.go index b119bc5ea..1ce356774 100644 --- a/clientlibrary/service/service.pb.go +++ b/clientlibrary/service/service.pb.go @@ -25,317 +25,327 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 4950 bytes of a gzipped FileDescriptorProto + // 5118 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdd, 0x6f, 0x24, 0x49, - 0x52, 0xc0, 0xb7, 0x5f, 0x58, 0xa8, 0xe3, 0x16, 0xa8, 0x85, 0x65, 0x6f, 0xb9, 0x9b, 0xef, 0x6f, - 0x8f, 0xdb, 0xb3, 0x33, 0xfb, 0x71, 0xec, 0x21, 0x21, 0x8f, 0x3d, 0xf6, 0x9a, 0xb3, 0x3d, 0xc6, - 0x6d, 0xcf, 0x48, 0x2b, 0x21, 0x51, 0x53, 0x1d, 0x6e, 0x17, 0xae, 0xae, 0xac, 0xab, 0xca, 0x6e, - 0x4f, 0x1f, 0x02, 0x81, 0x40, 0x20, 0x10, 0x88, 0x13, 0x5f, 0x2f, 0x3c, 0x20, 0xf1, 0xcf, 0xc0, - 0xe3, 0x3d, 0x22, 0x9e, 0xd0, 0xee, 0x3f, 0x72, 0xaa, 0xcc, 0xac, 0xfc, 0x88, 0xca, 0xc8, 0x2a, - 0xef, 0xd3, 0x8c, 0x3a, 0x7e, 0x11, 0x91, 0x59, 0x99, 0x19, 0x19, 0xf9, 0x51, 0xe5, 0xe8, 0x7a, - 0xf9, 0x66, 0xa3, 0xac, 0x18, 0x67, 0xf5, 0x46, 0x0d, 0xd5, 0x32, 0x4b, 0xa1, 0xfd, 0x77, 0x2c, - 0x7e, 0x8e, 0xdf, 0x4d, 0x8a, 0x15, 0x5f, 0x95, 0xf0, 0xd1, 0x87, 0x86, 0x4c, 0xd9, 0x7c, 0x9e, - 0x14, 0xd3, 0x5a, 0x22, 0x1f, 0x7d, 0x60, 0x24, 0xb0, 0x84, 0x82, 0xab, 0xdf, 0x9f, 0xfe, 0xf7, - 0xff, 0x8d, 0xa2, 0xf7, 0xb6, 0xf2, 0x0c, 0x0a, 0xbe, 0xa5, 0x34, 0xe2, 0xaf, 0xa2, 0xef, 0x6e, - 0x96, 0xe5, 0x2e, 0xf0, 0x57, 0x50, 0xd5, 0x19, 0x2b, 0xe2, 0xdb, 0x63, 0xe5, 0x60, 0x7c, 0x5c, - 0xa6, 0xe3, 0xcd, 0xb2, 0x1c, 0x1b, 0xe1, 0xf8, 0x18, 0x7e, 0xb2, 0x80, 0x9a, 0x7f, 0x74, 0x27, - 0x0c, 0xd5, 0x25, 0x2b, 0x6a, 0x88, 0xcf, 0xa2, 0xdf, 0xd8, 0x2c, 0xcb, 0x09, 0xf0, 0x6d, 0x68, - 0x2a, 0x30, 0xe1, 0x09, 0x87, 0xf8, 0x7e, 0x47, 0xd5, 0x05, 0xb4, 0x8f, 0x07, 0xfd, 0xa0, 0xf2, - 0x73, 0x12, 0x7d, 0xa7, 0xf1, 0x73, 0xbe, 0xe0, 0x53, 0x76, 0x59, 0xc4, 0x37, 0xbb, 0x8a, 0x4a, - 0xa4, 0x6d, 0xdf, 0x0a, 0x21, 0xca, 0xea, 0xeb, 0xe8, 0x57, 0x5f, 0x27, 0x79, 0x0e, 0x7c, 0xab, - 0x82, 0xa6, 0xe0, 0xae, 0x8e, 0x14, 0x8d, 0xa5, 0x4c, 0xdb, 0xbd, 0x1d, 0x64, 0x94, 0xe1, 0xaf, - 0xa2, 0xef, 0x4a, 0xc9, 0x31, 0xa4, 0x6c, 0x09, 0x55, 0xec, 0xd5, 0x52, 0x42, 0xe2, 0x91, 0x77, - 0x20, 0x6c, 0x7b, 0x8b, 0x15, 0x4b, 0xa8, 0xb8, 0xdf, 0xb6, 0x12, 0x86, 0x6d, 0x1b, 0x48, 0xd9, - 0xfe, 0xbb, 0x51, 0xf4, 0xfd, 0xcd, 0x34, 0x65, 0x8b, 0x82, 0xef, 0xb3, 0x34, 0xc9, 0xf7, 0xb3, - 0xe2, 0xe2, 0x10, 0x2e, 0xb7, 0xce, 0x1b, 0xbe, 0x98, 0x41, 0xfc, 0xcc, 0x7d, 0xaa, 0x12, 0x1d, - 0x6b, 0x76, 0x6c, 0xc3, 0xda, 0xf7, 0x27, 0x57, 0x53, 0x52, 0x65, 0xf9, 0xa7, 0x51, 0x74, 0x0d, - 0x97, 0x65, 0xc2, 0xf2, 0x25, 0x98, 0xd2, 0x7c, 0xda, 0x63, 0xd8, 0xc5, 0x75, 0x79, 0x3e, 0xbb, - 0xaa, 0x9a, 0x2a, 0x51, 0x1e, 0xbd, 0x6f, 0x77, 0x97, 0x09, 0xd4, 0x62, 0x38, 0x3d, 0xa4, 0x7b, - 0x84, 0x42, 0xb4, 0xe7, 0x47, 0x43, 0x50, 0xe5, 0x2d, 0x8b, 0x62, 0xe5, 0x2d, 0x67, 0xb5, 0x76, - 0xf6, 0xc0, 0x6b, 0xc1, 0x22, 0xb4, 0xaf, 0x87, 0x03, 0x48, 0xe5, 0xea, 0x8f, 0xa3, 0x5f, 0x7b, - 0xcd, 0xaa, 0x8b, 0xba, 0x4c, 0x52, 0x50, 0x43, 0xe1, 0xae, 0xab, 0xdd, 0x4a, 0xf1, 0x68, 0xb8, - 0xd7, 0x87, 0x59, 0x9d, 0xb6, 0x15, 0xbe, 0x2c, 0x01, 0xc7, 0x20, 0xa3, 0xd8, 0x08, 0xa9, 0x4e, - 0x8b, 0x21, 0x65, 0xfb, 0x22, 0x8a, 0x8d, 0xed, 0x37, 0x7f, 0x02, 0x29, 0xdf, 0x9c, 0x4e, 0x71, - 0xab, 0x18, 0x5d, 0x41, 0x8c, 0x37, 0xa7, 0x53, 0xaa, 0x55, 0xfc, 0xa8, 0x72, 0x76, 0x19, 0x7d, - 0x80, 0x9c, 0xed, 0x67, 0xb5, 0x70, 0xb8, 0x1e, 0xb6, 0xa2, 0x30, 0xed, 0x74, 0x3c, 0x14, 0x57, - 0x8e, 0xff, 0x62, 0x14, 0x7d, 0xcf, 0xe3, 0xf9, 0x18, 0xe6, 0x6c, 0x09, 0xf1, 0x93, 0x7e, 0x6b, - 0x92, 0xd4, 0xfe, 0x3f, 0xbe, 0x82, 0x86, 0xa7, 0x9b, 0x4c, 0x20, 0x87, 0x94, 0x93, 0xdd, 0x44, - 0x8a, 0x7b, 0xbb, 0x89, 0xc6, 0xac, 0x11, 0xd6, 0x0a, 0x77, 0x81, 0x6f, 0x2d, 0xaa, 0x0a, 0x0a, - 0x4e, 0xb6, 0xa5, 0x41, 0x7a, 0xdb, 0xd2, 0x41, 0x3d, 0xf5, 0xd9, 0x05, 0xbe, 0x99, 0xe7, 0x64, - 0x7d, 0xa4, 0xb8, 0xb7, 0x3e, 0x1a, 0x53, 0x1e, 0xd2, 0xe8, 0xd7, 0xad, 0x27, 0xc6, 0xf7, 0x8a, - 0x33, 0x16, 0xd3, 0xcf, 0x42, 0xc8, 0xb5, 0x8f, 0xfb, 0xbd, 0x9c, 0xa7, 0x1a, 0x2f, 0xde, 0x96, - 0xac, 0xa2, 0x9b, 0x45, 0x8a, 0x7b, 0xab, 0xa1, 0x31, 0xe5, 0xe1, 0x8f, 0xa2, 0xf7, 0x54, 0x94, - 0x6c, 0xe7, 0xb3, 0x3b, 0xde, 0x10, 0x8a, 0x27, 0xb4, 0xbb, 0x3d, 0x94, 0x09, 0x0e, 0x4a, 0xa6, - 0x82, 0xcf, 0x6d, 0xaf, 0x1e, 0x0a, 0x3d, 0x77, 0xc2, 0x50, 0xc7, 0xf6, 0x36, 0xe4, 0x40, 0xda, - 0x96, 0xc2, 0x1e, 0xdb, 0x1a, 0x52, 0xb6, 0xab, 0xe8, 0xb7, 0xf4, 0x63, 0x69, 0xe6, 0x51, 0x21, - 0x6f, 0x82, 0xf4, 0x1a, 0x51, 0x6f, 0x1b, 0xd2, 0xbe, 0x1e, 0x0f, 0x83, 0x3b, 0xf5, 0x51, 0x23, - 0xd0, 0x5f, 0x1f, 0x34, 0xfe, 0xee, 0x84, 0x21, 0x65, 0xfb, 0xef, 0x47, 0xd1, 0x0f, 0x94, 0xec, - 0x45, 0x91, 0xbc, 0xc9, 0x41, 0x4c, 0x89, 0x87, 0xc0, 0x2f, 0x59, 0x75, 0x31, 0x59, 0x15, 0x29, - 0x31, 0xfd, 0xfb, 0xe1, 0x9e, 0xe9, 0x9f, 0x54, 0xb2, 0x32, 0x3e, 0x55, 0x51, 0xce, 0x4a, 0x9c, - 0xf1, 0xb5, 0x35, 0xe0, 0xac, 0xa4, 0x32, 0x3e, 0x17, 0xe9, 0x58, 0x3d, 0x68, 0xc2, 0xa6, 0xdf, - 0xea, 0x81, 0x1d, 0x27, 0x6f, 0x85, 0x10, 0x13, 0xb6, 0xda, 0x0e, 0xcc, 0x8a, 0xb3, 0x6c, 0x76, - 0x5a, 0x4e, 0x9b, 0x6e, 0xfc, 0xd0, 0xdf, 0x43, 0x2d, 0x84, 0x08, 0x5b, 0x04, 0xaa, 0xbc, 0xfd, - 0xa3, 0x49, 0x8c, 0xd4, 0x50, 0xda, 0xa9, 0xd8, 0x7c, 0x1f, 0x66, 0x49, 0xba, 0x52, 0xe3, 0xff, - 0x93, 0xd0, 0xc0, 0xc3, 0xb4, 0x2e, 0xc4, 0xa7, 0x57, 0xd4, 0x52, 0xe5, 0xf9, 0xcf, 0x51, 0x74, - 0xa7, 0xad, 0xfe, 0x79, 0x52, 0xcc, 0x40, 0xb5, 0xa7, 0x2c, 0xfd, 0x66, 0x31, 0x3d, 0x86, 0x9a, - 0x27, 0x15, 0x8f, 0xbf, 0xf0, 0x57, 0x32, 0xa4, 0xa3, 0xcb, 0xf6, 0xa3, 0x6f, 0xa5, 0x6b, 0x5a, - 0x7d, 0xd2, 0x04, 0x36, 0x15, 0x02, 0xdc, 0x56, 0x17, 0x12, 0x1c, 0x00, 0x6e, 0x85, 0x10, 0xd3, - 0xea, 0x42, 0xb0, 0x57, 0x2c, 0x33, 0x0e, 0xbb, 0x50, 0x40, 0xd5, 0x6d, 0x75, 0xa9, 0xea, 0x22, - 0x44, 0xab, 0x13, 0xa8, 0x09, 0x36, 0x8e, 0x37, 0x3d, 0x39, 0xae, 0x05, 0x8c, 0x74, 0xa6, 0xc7, - 0xc7, 0xc3, 0x60, 0xb3, 0xba, 0xb3, 0x7c, 0x1e, 0xc3, 0x92, 0x5d, 0xe0, 0xd5, 0x9d, 0x6d, 0x42, - 0x02, 0xc4, 0xea, 0xce, 0x0b, 0x9a, 0x19, 0xcc, 0xf2, 0xf3, 0x2a, 0x83, 0x4b, 0x34, 0x83, 0xd9, - 0xca, 0x8d, 0x98, 0x98, 0xc1, 0x3c, 0x98, 0xf2, 0x70, 0x18, 0xfd, 0x8a, 0x10, 0xfe, 0x01, 0xcb, - 0x8a, 0xf8, 0xba, 0x47, 0xa9, 0x11, 0x68, 0xab, 0x37, 0x68, 0x00, 0x95, 0xb8, 0xf9, 0x75, 0x2b, - 0x29, 0x52, 0xc8, 0xbd, 0x25, 0x36, 0xe2, 0x60, 0x89, 0x1d, 0xcc, 0xa4, 0x0e, 0x42, 0xd8, 0xc4, - 0xaf, 0xc9, 0x79, 0x52, 0x65, 0xc5, 0x2c, 0xf6, 0xe9, 0x5a, 0x72, 0x22, 0x75, 0xf0, 0x71, 0xa8, - 0x0b, 0x2b, 0xc5, 0xcd, 0xb2, 0xac, 0x9a, 0xb0, 0xe8, 0xeb, 0xc2, 0x2e, 0x12, 0xec, 0xc2, 0x1d, - 0xd4, 0xef, 0x6d, 0x1b, 0xd2, 0x3c, 0x2b, 0x82, 0xde, 0x14, 0x32, 0xc4, 0x9b, 0x41, 0x51, 0xe7, - 0xdd, 0x87, 0x64, 0x09, 0x6d, 0xcd, 0x7c, 0x4f, 0xc6, 0x06, 0x82, 0x9d, 0x17, 0x81, 0x66, 0x9d, - 0x26, 0xc4, 0x07, 0xc9, 0x05, 0x34, 0x0f, 0x18, 0x9a, 0x79, 0x2d, 0xf6, 0xe9, 0x3b, 0x04, 0xb1, - 0x4e, 0xf3, 0x93, 0xca, 0xd5, 0x22, 0xfa, 0x40, 0xc8, 0x8f, 0x92, 0x8a, 0x67, 0x69, 0x56, 0x26, - 0x45, 0x9b, 0xff, 0xfb, 0xc6, 0x75, 0x87, 0xd2, 0x2e, 0xd7, 0x07, 0xd2, 0xca, 0xed, 0xbf, 0x8f, - 0xa2, 0x9b, 0xd8, 0xef, 0x11, 0x54, 0xf3, 0x4c, 0x2c, 0x23, 0x6b, 0x19, 0x84, 0xe3, 0xcf, 0xc3, - 0x46, 0x3b, 0x0a, 0xba, 0x34, 0x3f, 0xbc, 0xba, 0xa2, 0x2a, 0xd8, 0x1f, 0x46, 0x91, 0x5c, 0xae, - 0x88, 0x25, 0xa5, 0x3b, 0x6a, 0xd5, 0x3a, 0xc6, 0x59, 0x4f, 0xde, 0x0c, 0x10, 0x66, 0xaa, 0x90, - 0xbf, 0x8b, 0x95, 0x72, 0xec, 0xd5, 0x10, 0x22, 0x62, 0xaa, 0x40, 0x08, 0x2e, 0xe8, 0xe4, 0x9c, - 0x5d, 0xfa, 0x0b, 0xda, 0x48, 0xc2, 0x05, 0x55, 0x84, 0xd9, 0xbb, 0x52, 0x05, 0xf5, 0xed, 0x5d, - 0xb5, 0xc5, 0x08, 0xed, 0x5d, 0x61, 0x46, 0x19, 0x66, 0xd1, 0x6f, 0xda, 0x86, 0x9f, 0x33, 0x76, - 0x31, 0x4f, 0xaa, 0x8b, 0xf8, 0x11, 0xad, 0xdc, 0x32, 0xda, 0xd1, 0xda, 0x20, 0xd6, 0x84, 0x05, - 0xdb, 0x61, 0x93, 0x68, 0x9c, 0x56, 0x39, 0x0a, 0x0b, 0x8e, 0x0d, 0x85, 0x10, 0x61, 0x81, 0x40, - 0x4d, 0xe4, 0xb6, 0xbd, 0x4d, 0x00, 0xaf, 0x96, 0x1c, 0xf5, 0x09, 0x50, 0xab, 0x25, 0x0f, 0x86, - 0xbb, 0xd0, 0x6e, 0x95, 0x94, 0xe7, 0xfe, 0x2e, 0x24, 0x44, 0xe1, 0x2e, 0xd4, 0x22, 0xb8, 0xbd, - 0x27, 0x90, 0x54, 0xe9, 0xb9, 0xbf, 0xbd, 0xa5, 0x2c, 0xdc, 0xde, 0x9a, 0xc1, 0xed, 0x2d, 0x05, - 0xaf, 0x33, 0x7e, 0x7e, 0x00, 0x3c, 0xf1, 0xb7, 0xb7, 0xcb, 0x84, 0xdb, 0xbb, 0xc3, 0x9a, 0x4c, - 0xc6, 0x76, 0x38, 0x59, 0xbc, 0xa9, 0xd3, 0x2a, 0x7b, 0x03, 0x71, 0xc0, 0x8a, 0x86, 0x88, 0x4c, - 0x86, 0x84, 0x4d, 0x90, 0x56, 0x3e, 0x5b, 0xd9, 0xde, 0xb4, 0x46, 0x41, 0xba, 0xb5, 0x61, 0x11, - 0x44, 0x90, 0xf6, 0x93, 0xb8, 0x7a, 0xbb, 0x15, 0x5b, 0x94, 0x75, 0x4f, 0xf5, 0x10, 0x14, 0xae, - 0x5e, 0x17, 0x56, 0x3e, 0xdf, 0x46, 0xbf, 0x6d, 0x3f, 0xd2, 0xd3, 0xa2, 0xd6, 0x5e, 0xd7, 0xe9, - 0xe7, 0x64, 0x61, 0xc4, 0xb6, 0x54, 0x00, 0x37, 0x69, 0x4a, 0xeb, 0x99, 0x6f, 0x03, 0x4f, 0xb2, - 0xbc, 0x8e, 0xef, 0xf9, 0x6d, 0xb4, 0x72, 0x22, 0x4d, 0xf1, 0x71, 0x78, 0xcc, 0x6e, 0x2f, 0xca, - 0x3c, 0x4b, 0xbb, 0xfb, 0x93, 0x4a, 0x57, 0x8b, 0xc3, 0x63, 0xd6, 0xc6, 0x70, 0x0c, 0x9a, 0x00, - 0x97, 0xff, 0x39, 0x59, 0x95, 0xe0, 0x8f, 0x41, 0x0e, 0x12, 0x8e, 0x41, 0x18, 0xc5, 0xf5, 0x99, - 0x00, 0xdf, 0x4f, 0x56, 0x6c, 0x41, 0xc4, 0x20, 0x2d, 0x0e, 0xd7, 0xc7, 0xc6, 0x4c, 0xa6, 0xa0, - 0x3d, 0xec, 0x15, 0x1c, 0xaa, 0x22, 0xc9, 0x77, 0xf2, 0x64, 0x56, 0xc7, 0xc4, 0xb8, 0x71, 0x29, - 0x22, 0x53, 0xa0, 0x69, 0xcf, 0x63, 0xdc, 0xab, 0x77, 0x92, 0x25, 0xab, 0x32, 0x4e, 0x3f, 0x46, - 0x83, 0xf4, 0x3e, 0x46, 0x07, 0xf5, 0x7a, 0xdb, 0xac, 0xd2, 0xf3, 0x6c, 0x09, 0xd3, 0x80, 0xb7, - 0x16, 0x19, 0xe0, 0xcd, 0x42, 0x3d, 0x8d, 0x36, 0x61, 0x8b, 0x2a, 0x05, 0xb2, 0xd1, 0xa4, 0xb8, - 0xb7, 0xd1, 0x34, 0xa6, 0x3c, 0xfc, 0xf5, 0x28, 0xfa, 0x1d, 0x29, 0xb5, 0x37, 0x0d, 0xb7, 0x93, - 0xfa, 0xfc, 0x0d, 0x4b, 0xaa, 0x69, 0xfc, 0xb1, 0xcf, 0x8e, 0x17, 0xd5, 0xae, 0x9f, 0x5e, 0x45, - 0x05, 0x3f, 0xd6, 0xfd, 0xac, 0xb6, 0x46, 0x9c, 0xf7, 0xb1, 0x3a, 0x48, 0xf8, 0xb1, 0x62, 0x14, - 0x07, 0x10, 0x21, 0x97, 0x0b, 0xf4, 0x7b, 0xa4, 0xbe, 0xbb, 0x4a, 0xbf, 0xdf, 0xcb, 0xe1, 0xf8, - 0xd8, 0x08, 0xdd, 0xde, 0xb2, 0x4e, 0xd9, 0xf0, 0xf7, 0x98, 0xf1, 0x50, 0x9c, 0xf4, 0xac, 0x47, - 0x45, 0xd8, 0x73, 0x67, 0x64, 0x8c, 0x87, 0xe2, 0x84, 0x67, 0x2b, 0xac, 0x85, 0x3c, 0x7b, 0x42, - 0xdb, 0x78, 0x28, 0x8e, 0x33, 0x0a, 0xc5, 0xb4, 0xf3, 0xc2, 0xa3, 0x80, 0x1d, 0x3c, 0x37, 0xac, - 0x0d, 0x62, 0x95, 0xc3, 0xbf, 0x1d, 0x45, 0xdf, 0x37, 0x1e, 0x0f, 0xd8, 0x34, 0x3b, 0x5b, 0x49, - 0xe8, 0x55, 0x92, 0x2f, 0xa0, 0x8e, 0x9f, 0x52, 0xd6, 0xba, 0xac, 0x2e, 0xc1, 0xb3, 0x2b, 0xe9, - 0xe0, 0xb1, 0xb3, 0x59, 0x96, 0xf9, 0xea, 0x04, 0xe6, 0x65, 0x4e, 0x8e, 0x1d, 0x07, 0x09, 0x8f, - 0x1d, 0x8c, 0xe2, 0x4c, 0xf3, 0x84, 0x35, 0x79, 0xac, 0x37, 0xd3, 0x14, 0xa2, 0x70, 0xa6, 0xd9, - 0x22, 0x38, 0x57, 0x3a, 0x61, 0x5b, 0x2c, 0xcf, 0x21, 0xe5, 0xdd, 0x83, 0x47, 0xad, 0x69, 0x88, - 0x70, 0xae, 0x84, 0x48, 0xb3, 0x46, 0x6f, 0xd7, 0x45, 0x49, 0x05, 0xcf, 0x57, 0xfb, 0x59, 0x71, - 0x11, 0xfb, 0xd3, 0x02, 0x03, 0x10, 0x6b, 0x74, 0x2f, 0x88, 0xd7, 0x5f, 0xa7, 0xc5, 0x94, 0xf9, - 0xd7, 0x5f, 0x8d, 0x24, 0xbc, 0xfe, 0x52, 0x04, 0x36, 0x79, 0x0c, 0x94, 0xc9, 0x46, 0x12, 0x36, - 0xa9, 0x08, 0x5f, 0x28, 0x54, 0x3b, 0xb9, 0x64, 0x28, 0x44, 0x7b, 0xb7, 0xf7, 0x7b, 0x39, 0xdc, - 0x43, 0xdb, 0x85, 0xd8, 0x0e, 0xf0, 0xf4, 0xdc, 0xdf, 0x43, 0x1d, 0x24, 0xdc, 0x43, 0x31, 0x8a, - 0xab, 0x74, 0xc2, 0xf4, 0x42, 0xf2, 0x9e, 0xbf, 0x7f, 0x74, 0x16, 0x91, 0xf7, 0x7b, 0x39, 0xbc, - 0x34, 0xda, 0x9b, 0x8b, 0x67, 0xe6, 0xed, 0xe4, 0x52, 0x16, 0x5e, 0x1a, 0x69, 0x06, 0x97, 0x5e, - 0x0a, 0x9a, 0xc7, 0xe9, 0x2f, 0xbd, 0x91, 0x87, 0x4b, 0xef, 0x70, 0xca, 0xc9, 0xbf, 0x8e, 0xa2, - 0xeb, 0xb6, 0x97, 0x43, 0xd6, 0x8c, 0x91, 0x57, 0x49, 0x9e, 0x4d, 0x13, 0x0e, 0x27, 0xec, 0x02, - 0x0a, 0xb4, 0xb7, 0xe2, 0x96, 0x56, 0xf2, 0x63, 0x47, 0x81, 0xd8, 0x5b, 0x19, 0xa4, 0x88, 0xfb, - 0x89, 0xa4, 0x4f, 0x6b, 0xd8, 0x4a, 0x6a, 0x22, 0x92, 0x39, 0x48, 0xb8, 0x9f, 0x60, 0x14, 0xe7, - 0xab, 0x52, 0xfe, 0xe2, 0x6d, 0x09, 0x55, 0x06, 0x45, 0x0a, 0xfe, 0x7c, 0x15, 0x53, 0xe1, 0x7c, - 0xd5, 0x43, 0x77, 0xb6, 0x1e, 0x74, 0x70, 0xea, 0xde, 0x1d, 0xc0, 0x44, 0xe0, 0xee, 0x00, 0x81, - 0xe2, 0x4a, 0x1a, 0xc0, 0xbb, 0x7d, 0xd7, 0xb1, 0x12, 0xdc, 0xbe, 0xa3, 0xe9, 0xce, 0x86, 0x8e, - 0x66, 0x26, 0xcd, 0x30, 0xe9, 0x29, 0xfa, 0xc4, 0x1e, 0x2e, 0x6b, 0x83, 0x58, 0xff, 0x0e, 0xd2, - 0x31, 0xe4, 0x89, 0x98, 0x42, 0x02, 0xdb, 0x34, 0x2d, 0x33, 0x64, 0x07, 0xc9, 0x62, 0x95, 0xc3, - 0xbf, 0x1c, 0x45, 0x1f, 0xf9, 0x3c, 0xbe, 0x2c, 0x85, 0xdf, 0x27, 0xfd, 0xb6, 0x24, 0x49, 0x5c, - 0x8e, 0x08, 0x6b, 0xa8, 0x32, 0xfc, 0x69, 0xf4, 0x61, 0x2b, 0x32, 0x77, 0x27, 0x54, 0x01, 0xdc, - 0x04, 0x4a, 0x97, 0x1f, 0x73, 0xda, 0xfd, 0xc6, 0x60, 0xde, 0xac, 0x4d, 0xdc, 0x72, 0xd5, 0x68, - 0x6d, 0xa2, 0x6d, 0x28, 0x31, 0xb1, 0x36, 0xf1, 0x60, 0x66, 0x57, 0xc3, 0xae, 0xde, 0xeb, 0x8c, - 0x9f, 0x8b, 0xdc, 0x07, 0xed, 0x6a, 0x38, 0x65, 0xd5, 0x10, 0xb1, 0xab, 0x41, 0xc2, 0x38, 0x3b, - 0x68, 0xc1, 0x66, 0x6c, 0xfa, 0xe2, 0xaa, 0x36, 0x64, 0x8f, 0xcc, 0x07, 0xfd, 0x20, 0xee, 0xaf, - 0xad, 0x58, 0x2d, 0x43, 0x1e, 0x85, 0x2c, 0xa0, 0xa5, 0xc8, 0xda, 0x20, 0x56, 0x39, 0xfc, 0xf3, - 0xe8, 0x7b, 0x9d, 0x8a, 0xed, 0x40, 0xc2, 0x17, 0x15, 0x4c, 0xe3, 0x8d, 0x9e, 0x72, 0xb7, 0xa0, - 0x76, 0xfd, 0x64, 0xb8, 0x42, 0x27, 0x5f, 0x6e, 0x39, 0xd9, 0xad, 0x74, 0x19, 0x9e, 0x86, 0x4c, - 0xba, 0x6c, 0x30, 0x5f, 0xa6, 0x75, 0x3a, 0x4b, 0x5e, 0xbb, 0x77, 0x6d, 0x2e, 0x93, 0x2c, 0x17, - 0xc7, 0x28, 0x1f, 0x87, 0x8c, 0x3a, 0x68, 0x70, 0xc9, 0x4b, 0xaa, 0x74, 0x22, 0xb3, 0x18, 0xe3, - 0xd6, 0x52, 0xe9, 0x31, 0x1d, 0x09, 0x3c, 0x2b, 0xa5, 0xf5, 0x81, 0xb4, 0x72, 0xcb, 0xdb, 0xad, - 0xc2, 0xe6, 0x67, 0xbb, 0x93, 0xfb, 0xbc, 0x2a, 0x55, 0x4f, 0x4f, 0x5f, 0x1f, 0x48, 0x2b, 0xaf, - 0x7f, 0x16, 0x7d, 0xd8, 0xf5, 0xaa, 0x26, 0xa2, 0x8d, 0x5e, 0x53, 0x68, 0x2e, 0x7a, 0x32, 0x5c, - 0xc1, 0x2c, 0x2f, 0xbe, 0xcc, 0x6a, 0xce, 0xaa, 0xd5, 0xe4, 0x9c, 0x5d, 0xb6, 0x77, 0x92, 0xdd, - 0xd1, 0xaa, 0x80, 0xb1, 0x45, 0x10, 0xcb, 0x0b, 0x3f, 0xd9, 0x71, 0x65, 0xee, 0x2e, 0xd7, 0x84, - 0x2b, 0x8b, 0xe8, 0x71, 0xe5, 0x92, 0x26, 0x56, 0xb5, 0xb5, 0x32, 0x17, 0xad, 0xef, 0xfb, 0x8b, - 0xda, 0xbd, 0x6c, 0xfd, 0xa0, 0x1f, 0x34, 0x19, 0x8b, 0x12, 0x6f, 0x67, 0x67, 0x67, 0xba, 0x4e, - 0xfe, 0x92, 0xda, 0x08, 0x91, 0xb1, 0x10, 0xa8, 0x49, 0x80, 0x77, 0xb2, 0x1c, 0xc4, 0x99, 0xdc, - 0xcb, 0xb3, 0xb3, 0x9c, 0x25, 0x53, 0x94, 0x00, 0x37, 0xe2, 0xb1, 0x2d, 0x27, 0x12, 0x60, 0x1f, - 0x67, 0xae, 0x34, 0x35, 0xd2, 0x63, 0x48, 0x59, 0x91, 0x66, 0x39, 0xbe, 0xa2, 0x25, 0x34, 0xb5, - 0x90, 0xb8, 0xd2, 0xd4, 0x81, 0xcc, 0xc4, 0xd8, 0x88, 0x9a, 0x61, 0xdf, 0x96, 0xff, 0x6e, 0x57, - 0xd1, 0x12, 0x13, 0x13, 0xa3, 0x07, 0x33, 0xeb, 0xc0, 0x46, 0x78, 0x5a, 0x0a, 0xe3, 0x37, 0xba, - 0x5a, 0x52, 0x42, 0xac, 0x03, 0x5d, 0xc2, 0xac, 0x67, 0x9a, 0xdf, 0xb7, 0xd9, 0x65, 0x21, 0x8c, - 0xde, 0xea, 0xaa, 0xb4, 0x32, 0x62, 0x3d, 0x83, 0x19, 0x65, 0xf8, 0xc7, 0xd1, 0x2f, 0x0b, 0xc3, - 0x15, 0x2b, 0xe3, 0x6b, 0x1e, 0x85, 0xca, 0xba, 0x4d, 0x75, 0x9d, 0x94, 0x9b, 0x4b, 0x81, 0xba, - 0x6f, 0x9c, 0xd6, 0xc9, 0x0c, 0xe2, 0x3b, 0x44, 0x8b, 0x0b, 0x29, 0x71, 0x29, 0xb0, 0x4b, 0xb9, - 0xbd, 0xe2, 0x90, 0x4d, 0x95, 0x75, 0x4f, 0x0d, 0xb5, 0x30, 0xd4, 0x2b, 0x6c, 0xc8, 0x24, 0x33, - 0x87, 0xc9, 0x32, 0x9b, 0xe9, 0x09, 0x47, 0xc6, 0xad, 0x1a, 0x25, 0x33, 0x86, 0x19, 0x5b, 0x10, - 0x91, 0xcc, 0x90, 0xb0, 0xf2, 0xf9, 0x2f, 0xa3, 0xe8, 0x86, 0x61, 0x76, 0xdb, 0x9d, 0xb3, 0xbd, - 0xe2, 0x8c, 0x35, 0xa9, 0xcf, 0x7e, 0x56, 0x5c, 0xd4, 0xf1, 0x67, 0x94, 0x49, 0x3f, 0xaf, 0x8b, - 0xf2, 0xf9, 0x95, 0xf5, 0x4c, 0xd6, 0xda, 0x6e, 0x2b, 0x99, 0xf3, 0x52, 0xa9, 0x81, 0xb2, 0x56, - 0xbd, 0xfb, 0x84, 0x39, 0x22, 0x6b, 0x0d, 0xf1, 0xa6, 0x89, 0xb5, 0xf3, 0x9c, 0x15, 0xb8, 0x89, - 0x8d, 0x85, 0x46, 0x48, 0x34, 0x71, 0x07, 0x32, 0xf1, 0xb8, 0x15, 0xc9, 0x1d, 0x90, 0xcd, 0x3c, - 0x47, 0xf1, 0x58, 0xab, 0x6a, 0x80, 0x88, 0xc7, 0x5e, 0x50, 0xf9, 0x39, 0x8e, 0xbe, 0xd3, 0x3c, - 0xd2, 0xa3, 0x0a, 0x96, 0x19, 0xe0, 0xa3, 0x7d, 0x4b, 0x42, 0x8c, 0x7f, 0x97, 0x30, 0x23, 0xeb, - 0xb4, 0xa8, 0xcb, 0x3c, 0xa9, 0xcf, 0xd5, 0x61, 0xaf, 0x5b, 0xe7, 0x56, 0x88, 0x8f, 0x7b, 0xef, - 0xf6, 0x50, 0x26, 0xa8, 0xb7, 0x32, 0x1d, 0x62, 0xee, 0xf9, 0x55, 0x3b, 0x61, 0xe6, 0x7e, 0x2f, - 0x67, 0x76, 0x9f, 0x77, 0x93, 0x3c, 0x87, 0x6a, 0xd5, 0xca, 0x0e, 0x92, 0x22, 0x3b, 0x83, 0x9a, - 0xa3, 0xdd, 0x67, 0x45, 0x8d, 0x31, 0x46, 0xec, 0x3e, 0x07, 0x70, 0x93, 0xcd, 0x23, 0xcf, 0x7b, - 0xc5, 0x14, 0xde, 0xa2, 0x6c, 0x1e, 0xdb, 0x11, 0x0c, 0x91, 0xcd, 0x53, 0xac, 0xd9, 0x85, 0x7d, - 0x9e, 0xb3, 0xf4, 0x42, 0x4d, 0x01, 0x6e, 0x03, 0x0b, 0x09, 0x9e, 0x03, 0x6e, 0x85, 0x10, 0x33, - 0x09, 0x08, 0xc1, 0x31, 0x94, 0x79, 0x92, 0xe2, 0xfb, 0x1d, 0x52, 0x47, 0xc9, 0x88, 0x49, 0x00, - 0x33, 0xa8, 0xb8, 0xea, 0xde, 0x88, 0xaf, 0xb8, 0xe8, 0xda, 0xc8, 0xad, 0x10, 0x62, 0xa6, 0x41, - 0x21, 0x98, 0x94, 0x79, 0xc6, 0xd1, 0x30, 0x90, 0x1a, 0x42, 0x42, 0x0c, 0x03, 0x97, 0x40, 0x26, - 0x0f, 0xa0, 0x9a, 0x81, 0xd7, 0xa4, 0x90, 0x04, 0x4d, 0xb6, 0x84, 0xb9, 0x06, 0x28, 0xeb, 0xce, - 0xca, 0x15, 0xba, 0x06, 0xa8, 0xaa, 0xc5, 0xca, 0x15, 0x71, 0x0d, 0xd0, 0x01, 0x50, 0x11, 0x8f, - 0x92, 0x9a, 0xfb, 0x8b, 0x28, 0x24, 0xc1, 0x22, 0xb6, 0x84, 0x99, 0xa3, 0x65, 0x11, 0x17, 0x1c, - 0xcd, 0xd1, 0xaa, 0x00, 0xd6, 0x69, 0xf0, 0x75, 0x52, 0x6e, 0x22, 0x89, 0x6c, 0x15, 0xe0, 0x3b, - 0x19, 0xe4, 0xd3, 0x1a, 0x45, 0x12, 0xf5, 0xdc, 0x5b, 0x29, 0x11, 0x49, 0xba, 0x14, 0xea, 0x4a, - 0x6a, 0xaf, 0xda, 0x57, 0x3b, 0xb4, 0x4d, 0x7d, 0x2b, 0x84, 0x98, 0xf8, 0xd4, 0x16, 0x7a, 0x2b, - 0xa9, 0xaa, 0xac, 0x99, 0xfc, 0xef, 0xf9, 0x0b, 0xd4, 0xca, 0x89, 0xf8, 0xe4, 0xe3, 0xd0, 0xf0, - 0x6a, 0x03, 0xb7, 0xaf, 0x60, 0x38, 0x74, 0xdf, 0x0e, 0x32, 0x26, 0xe3, 0x14, 0x12, 0xeb, 0x38, - 0xd3, 0xf7, 0x34, 0x3d, 0xa7, 0x99, 0xf7, 0xfa, 0x30, 0xeb, 0x9a, 0xbe, 0x76, 0x71, 0xc0, 0x96, - 0x70, 0xc2, 0x5e, 0xbc, 0xcd, 0x6a, 0x9e, 0x15, 0x33, 0x35, 0x73, 0x3f, 0x23, 0x2c, 0xf9, 0x60, - 0xe2, 0x9a, 0x7e, 0xaf, 0x92, 0x49, 0x20, 0x50, 0x59, 0x0e, 0xe1, 0xd2, 0x9b, 0x40, 0x60, 0x8b, - 0x9a, 0x23, 0x12, 0x88, 0x10, 0x6f, 0xf6, 0x51, 0xb4, 0x73, 0xf5, 0x2e, 0xe3, 0x09, 0x6b, 0x73, - 0x39, 0xca, 0x1a, 0x06, 0x89, 0xa5, 0x6c, 0x50, 0xc1, 0xac, 0x2f, 0xb5, 0x7f, 0x33, 0xc4, 0x1e, - 0x10, 0x76, 0xba, 0xc3, 0xec, 0xe1, 0x00, 0xd2, 0xe3, 0xca, 0x9c, 0xc9, 0x53, 0xae, 0xba, 0x47, - 0xf2, 0x0f, 0x07, 0x90, 0xd6, 0x9e, 0x8c, 0x5d, 0xad, 0xe7, 0x49, 0x7a, 0x31, 0xab, 0xd8, 0xa2, - 0x98, 0x6e, 0xb1, 0x9c, 0x55, 0x68, 0x4f, 0xc6, 0x29, 0x35, 0x42, 0x89, 0x3d, 0x99, 0x1e, 0x15, - 0x93, 0xc1, 0xd9, 0xa5, 0xd8, 0xcc, 0xb3, 0x19, 0x5e, 0x51, 0x3b, 0x86, 0x04, 0x40, 0x64, 0x70, - 0x5e, 0xd0, 0xd3, 0x89, 0xe4, 0x8a, 0x9b, 0x67, 0x69, 0x92, 0x4b, 0x7f, 0x1b, 0xb4, 0x19, 0x07, - 0xec, 0xed, 0x44, 0x1e, 0x05, 0x4f, 0x3d, 0x4f, 0x16, 0x55, 0xb1, 0x57, 0x70, 0x46, 0xd6, 0xb3, - 0x05, 0x7a, 0xeb, 0x69, 0x81, 0x28, 0xac, 0x9e, 0xc0, 0xdb, 0xa6, 0x34, 0xcd, 0x3f, 0xbe, 0xb0, - 0xda, 0xfc, 0x3e, 0x56, 0xf2, 0x50, 0x58, 0x45, 0x1c, 0xaa, 0x8c, 0x72, 0x22, 0x3b, 0x4c, 0x40, - 0xdb, 0xed, 0x26, 0x0f, 0xfa, 0x41, 0xbf, 0x9f, 0x09, 0x5f, 0xe5, 0x10, 0xf2, 0x23, 0x80, 0x21, - 0x7e, 0x5a, 0xd0, 0x6c, 0xb7, 0x38, 0xf5, 0x39, 0x87, 0xf4, 0xa2, 0x73, 0xc5, 0xc8, 0x2d, 0xa8, - 0x44, 0x88, 0xed, 0x16, 0x02, 0xf5, 0x37, 0xd1, 0x5e, 0xca, 0x8a, 0x50, 0x13, 0x35, 0xf2, 0x21, - 0x4d, 0xa4, 0x38, 0xb3, 0xf8, 0xd5, 0x52, 0xd5, 0x33, 0x65, 0x33, 0xad, 0x11, 0x16, 0x6c, 0x88, - 0x58, 0xfc, 0x92, 0xb0, 0xc9, 0xc9, 0xb1, 0xcf, 0x83, 0xee, 0x9d, 0xe2, 0x8e, 0x95, 0x03, 0xfa, - 0x4e, 0x31, 0xc5, 0xd2, 0x95, 0x94, 0x7d, 0xa4, 0xc7, 0x8a, 0xdb, 0x4f, 0x1e, 0x0f, 0x83, 0xcd, - 0x92, 0xc7, 0xf1, 0xb9, 0x95, 0x43, 0x52, 0x49, 0xaf, 0xeb, 0x01, 0x43, 0x06, 0x23, 0x96, 0x3c, - 0x01, 0x1c, 0x85, 0x30, 0xc7, 0xf3, 0x16, 0x2b, 0x38, 0x14, 0xdc, 0x17, 0xc2, 0x5c, 0x63, 0x0a, - 0x0c, 0x85, 0x30, 0x4a, 0x01, 0xf5, 0x5b, 0xb1, 0x1f, 0x04, 0xfc, 0x30, 0x99, 0x7b, 0x33, 0x36, - 0xb9, 0xd7, 0x23, 0xe5, 0xa1, 0x7e, 0x8b, 0x38, 0xeb, 0x90, 0xcf, 0xf6, 0x72, 0x92, 0x54, 0x33, - 0xbd, 0xbb, 0x31, 0x8d, 0x9f, 0xd0, 0x76, 0x5c, 0x92, 0x38, 0xe4, 0x0b, 0x6b, 0xa0, 0xb0, 0xb3, - 0x37, 0x4f, 0x66, 0xba, 0xa6, 0x9e, 0x1a, 0x08, 0x79, 0xa7, 0xaa, 0x0f, 0xfa, 0x41, 0xe4, 0xe7, - 0x55, 0x36, 0x05, 0x16, 0xf0, 0x23, 0xe4, 0x43, 0xfc, 0x60, 0x10, 0x65, 0x6f, 0x4d, 0xbd, 0xe5, - 0x8a, 0x6e, 0xb3, 0x98, 0xaa, 0x75, 0xec, 0x98, 0x78, 0x3c, 0x88, 0x0b, 0x65, 0x6f, 0x04, 0x8f, - 0xc6, 0x68, 0xbb, 0x41, 0x1b, 0x1a, 0xa3, 0x7a, 0xff, 0x75, 0xc8, 0x18, 0xf5, 0xc1, 0xca, 0xe7, - 0x4f, 0xd5, 0x18, 0xdd, 0x4e, 0x78, 0xd2, 0xe4, 0xed, 0xaf, 0x32, 0xb8, 0x54, 0x0b, 0x61, 0x4f, - 0x7d, 0x5b, 0x6a, 0x2c, 0x5e, 0x26, 0x43, 0xab, 0xe2, 0x8d, 0xc1, 0x7c, 0xc0, 0xb7, 0x5a, 0x21, - 0xf4, 0xfa, 0x46, 0x4b, 0x85, 0x8d, 0xc1, 0x7c, 0xc0, 0xb7, 0x7a, 0x4b, 0xb5, 0xd7, 0x37, 0x7a, - 0x55, 0x75, 0x63, 0x30, 0xaf, 0x7c, 0xff, 0x55, 0x3b, 0x70, 0x6d, 0xe7, 0x4d, 0x1e, 0x96, 0xf2, - 0x6c, 0x09, 0xbe, 0x74, 0xd2, 0xb5, 0xa7, 0xd1, 0x50, 0x3a, 0x49, 0xab, 0x58, 0x9f, 0x36, 0xf1, - 0x95, 0xe2, 0x88, 0xd5, 0x99, 0x38, 0xa4, 0x7f, 0x36, 0xc0, 0x68, 0x0b, 0x87, 0x16, 0x4d, 0x21, - 0x25, 0x73, 0xdc, 0xe8, 0xa0, 0xe6, 0x46, 0xf1, 0xe3, 0x80, 0xbd, 0xee, 0xc5, 0xe2, 0xf5, 0x81, - 0xb4, 0x39, 0xf8, 0x73, 0x18, 0xfb, 0xc4, 0x31, 0xd4, 0xaa, 0xde, 0x43, 0xc7, 0x27, 0xc3, 0x15, - 0x94, 0xfb, 0xbf, 0x69, 0xd7, 0x15, 0xd8, 0xbf, 0x1a, 0x04, 0x4f, 0x87, 0x58, 0x44, 0x03, 0xe1, - 0xd9, 0x95, 0x74, 0x54, 0x41, 0xfe, 0x63, 0x14, 0xdd, 0xf2, 0x16, 0xc4, 0x3d, 0x7b, 0xfe, 0xdd, - 0x21, 0xb6, 0xfd, 0x67, 0xd0, 0x5f, 0x7c, 0x1b, 0x55, 0x55, 0xba, 0x7f, 0x68, 0x97, 0xf7, 0xad, - 0x86, 0x78, 0xeb, 0xe3, 0x65, 0x35, 0x85, 0x4a, 0x8d, 0xd8, 0x50, 0xa7, 0x33, 0x30, 0x1e, 0xb7, - 0x9f, 0x5e, 0x51, 0xcb, 0xfa, 0x0c, 0x8f, 0x03, 0xab, 0x37, 0xee, 0xac, 0xf2, 0x84, 0x2c, 0x5b, - 0x34, 0x2e, 0xd0, 0x67, 0x57, 0x55, 0xa3, 0x46, 0xb2, 0x05, 0x8b, 0xb7, 0xfa, 0x9f, 0x0d, 0x34, - 0xec, 0xbc, 0xe7, 0xff, 0xc9, 0xd5, 0x94, 0x54, 0x59, 0xfe, 0x6b, 0x14, 0xdd, 0x75, 0x58, 0x73, - 0xda, 0x81, 0xf6, 0x64, 0x7e, 0x14, 0xb0, 0x4f, 0x29, 0xe9, 0xc2, 0xfd, 0xde, 0xb7, 0x53, 0x36, - 0xdf, 0xac, 0x71, 0x54, 0x76, 0xb2, 0x9c, 0x43, 0xd5, 0xfd, 0x66, 0x8d, 0x6b, 0x57, 0x52, 0x63, - 0xfa, 0x9b, 0x35, 0x01, 0xdc, 0xfa, 0x66, 0x8d, 0xc7, 0xb3, 0xf7, 0x9b, 0x35, 0x5e, 0x6b, 0xc1, - 0x6f, 0xd6, 0x84, 0x35, 0xa8, 0xc9, 0xa7, 0x2d, 0x82, 0xdc, 0x55, 0x1f, 0x64, 0xd1, 0xdd, 0x64, - 0x7f, 0x7a, 0x15, 0x15, 0x62, 0xfa, 0x95, 0x9c, 0xb8, 0x85, 0x37, 0xe0, 0x99, 0x3a, 0x37, 0xf1, - 0x36, 0x06, 0xf3, 0xca, 0xf7, 0x4f, 0xd4, 0xda, 0x4b, 0x4f, 0x36, 0xac, 0x12, 0xdf, 0x2b, 0x5a, - 0x0b, 0x4d, 0x1e, 0x8d, 0x05, 0xbb, 0xe5, 0x1f, 0x0f, 0x83, 0x89, 0xea, 0x36, 0x84, 0x6a, 0xf4, - 0x71, 0x9f, 0x21, 0xd4, 0xe4, 0x1b, 0x83, 0x79, 0x62, 0x92, 0x93, 0xbe, 0x65, 0x6b, 0x0f, 0x30, - 0xe6, 0xb6, 0xf5, 0x93, 0xe1, 0x0a, 0xca, 0xfd, 0x52, 0x25, 0xb5, 0xb6, 0x7b, 0xd1, 0xce, 0xeb, - 0x7d, 0xa6, 0x26, 0x4e, 0x33, 0x8f, 0x87, 0xe2, 0xa1, 0xf4, 0xc6, 0x9e, 0xe0, 0xfb, 0xd2, 0x1b, - 0xef, 0x24, 0xff, 0xc9, 0xd5, 0x94, 0x54, 0x59, 0xfe, 0x79, 0x14, 0x5d, 0x27, 0xcb, 0xa2, 0xfa, - 0xc1, 0x67, 0x43, 0x2d, 0xa3, 0xfe, 0xf0, 0xf9, 0x95, 0xf5, 0x54, 0xa1, 0xfe, 0x6d, 0x14, 0xdd, - 0x08, 0x14, 0x4a, 0x76, 0x90, 0x2b, 0x58, 0x77, 0x3b, 0xca, 0x0f, 0xaf, 0xae, 0x48, 0x4d, 0xf7, - 0x36, 0x3e, 0xe9, 0x7e, 0xcc, 0x25, 0x60, 0x7b, 0x42, 0x7f, 0xcc, 0xa5, 0x5f, 0x0b, 0x6f, 0x41, - 0x35, 0x49, 0x89, 0x5a, 0x19, 0xf9, 0xb6, 0xa0, 0x44, 0xce, 0x82, 0x56, 0x44, 0xf7, 0x7b, 0x39, - 0x9f, 0x93, 0x17, 0x6f, 0xcb, 0xa4, 0x98, 0xd2, 0x4e, 0xa4, 0xbc, 0xdf, 0x89, 0xe6, 0xf0, 0xd6, - 0x5d, 0x23, 0x3d, 0x66, 0xed, 0x32, 0xef, 0x21, 0xa5, 0xaf, 0x91, 0xe0, 0xd6, 0x5d, 0x07, 0x25, - 0xbc, 0xa9, 0x9c, 0x36, 0xe4, 0x0d, 0xa5, 0xb2, 0x8f, 0x86, 0xa0, 0x68, 0x01, 0xa1, 0xbd, 0xe9, - 0x13, 0x81, 0xc7, 0x21, 0x2b, 0x9d, 0x53, 0x81, 0xf5, 0x81, 0x34, 0xe1, 0x76, 0x02, 0xfc, 0x4b, - 0x48, 0xa6, 0x50, 0x05, 0xdd, 0x6a, 0x6a, 0x90, 0x5b, 0x9b, 0xf6, 0xb9, 0xdd, 0x62, 0xf9, 0x62, - 0x5e, 0xa8, 0xc6, 0x24, 0xdd, 0xda, 0x54, 0xbf, 0x5b, 0x44, 0xe3, 0x4d, 0x4b, 0xe3, 0x56, 0xa4, - 0x97, 0x8f, 0xc2, 0x66, 0x9c, 0xac, 0x72, 0x6d, 0x10, 0x4b, 0xd7, 0x53, 0x75, 0xa3, 0x9e, 0x7a, - 0xa2, 0x9e, 0xb4, 0x3e, 0x90, 0xc6, 0xbb, 0x87, 0x96, 0x5b, 0xdd, 0x9f, 0x36, 0x7a, 0x6c, 0x75, - 0xba, 0xd4, 0x93, 0xe1, 0x0a, 0x78, 0xaf, 0x56, 0xf5, 0xaa, 0x66, 0x5d, 0xb4, 0x93, 0xe5, 0x79, - 0xbc, 0x16, 0xe8, 0x26, 0x2d, 0x14, 0xdc, 0xab, 0xf5, 0xc0, 0x44, 0x4f, 0x6e, 0xf7, 0x36, 0x8b, - 0xb8, 0xcf, 0x8e, 0xa0, 0x06, 0xf5, 0x64, 0x9b, 0x46, 0xfb, 0x6d, 0xd6, 0xa3, 0xd6, 0xb5, 0x1d, - 0x87, 0x1f, 0x5c, 0xa7, 0xc2, 0x1b, 0x83, 0x79, 0x74, 0x19, 0x40, 0x50, 0x62, 0x66, 0xb9, 0x43, - 0x99, 0x70, 0x66, 0x92, 0xbb, 0x3d, 0x14, 0xda, 0xb3, 0x94, 0xc3, 0xe8, 0x75, 0x36, 0x9d, 0x01, - 0xf7, 0x9e, 0x63, 0xd9, 0x40, 0xf0, 0x1c, 0x0b, 0x81, 0xa8, 0xe9, 0xe4, 0xef, 0x7a, 0xb3, 0x76, - 0x6f, 0xea, 0x6b, 0x3a, 0xa5, 0x6c, 0x51, 0xa1, 0xa6, 0xf3, 0xd2, 0x28, 0x1a, 0x68, 0xb7, 0xea, - 0xc5, 0xfd, 0x47, 0x21, 0x33, 0xe8, 0xed, 0xfd, 0xb5, 0x41, 0x2c, 0x9a, 0x51, 0x8c, 0xc3, 0x6c, - 0x9e, 0x71, 0xdf, 0x8c, 0x62, 0xd9, 0x68, 0x90, 0xd0, 0x8c, 0xd2, 0x45, 0xa9, 0xea, 0x35, 0x39, - 0xc2, 0xde, 0x34, 0x5c, 0x3d, 0xc9, 0x0c, 0xab, 0x9e, 0x66, 0x3b, 0xc7, 0xae, 0x85, 0xee, 0x32, - 0xfc, 0x5c, 0x2d, 0x96, 0x3d, 0x7d, 0x5b, 0xbc, 0xd0, 0x89, 0xc1, 0x50, 0xd4, 0xa1, 0x14, 0xf0, - 0x71, 0x42, 0xc3, 0xb5, 0x27, 0xc3, 0x65, 0x09, 0x49, 0x95, 0x14, 0xa9, 0x77, 0x71, 0x2a, 0x0c, - 0x76, 0xc8, 0xd0, 0xe2, 0x94, 0xd4, 0x40, 0x87, 0xfa, 0xee, 0xab, 0x98, 0x9e, 0xa1, 0xa0, 0xdf, - 0x79, 0x74, 0xdf, 0xc4, 0x7c, 0x38, 0x80, 0xc4, 0x87, 0xfa, 0x2d, 0xa0, 0xb7, 0xe5, 0xa5, 0xd3, - 0x8f, 0x03, 0xa6, 0x5c, 0x34, 0xb4, 0x10, 0xa6, 0x55, 0x50, 0xa7, 0xd6, 0x09, 0x2e, 0xf0, 0x1f, - 0xc3, 0xca, 0xd7, 0xa9, 0x4d, 0x7e, 0x2a, 0x90, 0x50, 0xa7, 0xee, 0xa2, 0x28, 0xcf, 0xb4, 0xd7, - 0x41, 0xf7, 0x02, 0xfa, 0xf6, 0xd2, 0xe7, 0x7e, 0x2f, 0x87, 0x46, 0xce, 0x76, 0xb6, 0x74, 0x4e, - 0x31, 0x3c, 0x05, 0xdd, 0xce, 0x96, 0xfe, 0x43, 0x8c, 0xb5, 0x41, 0x2c, 0xbe, 0x30, 0x90, 0x70, - 0x78, 0xdb, 0x9e, 0xe4, 0x7b, 0x8a, 0x2b, 0xe4, 0x9d, 0xa3, 0xfc, 0x07, 0xfd, 0xa0, 0xb9, 0x9e, - 0x7b, 0x54, 0xb1, 0x14, 0xea, 0x5a, 0x7d, 0xe1, 0xce, 0xbd, 0xff, 0xa4, 0x64, 0x63, 0xf4, 0x7d, - 0xbb, 0x3b, 0x61, 0x48, 0xd9, 0xfe, 0x32, 0x7a, 0x77, 0x9f, 0xcd, 0x26, 0x50, 0x4c, 0xe3, 0x1f, - 0xb8, 0x17, 0x62, 0xd9, 0x6c, 0xdc, 0xfc, 0xac, 0xed, 0x5d, 0xa3, 0xc4, 0xe6, 0x4a, 0xdf, 0x36, - 0xbc, 0x59, 0xcc, 0x26, 0x3c, 0xe1, 0xe8, 0x4a, 0x9f, 0xf8, 0x7d, 0xdc, 0x08, 0x88, 0x2b, 0x7d, - 0x0e, 0x80, 0xec, 0x9d, 0x54, 0x00, 0x5e, 0x7b, 0x8d, 0x20, 0x68, 0x4f, 0x01, 0x66, 0xd6, 0xd5, - 0xf6, 0x9a, 0xc4, 0x16, 0x5f, 0xc1, 0x33, 0x3a, 0x42, 0x4a, 0xcc, 0xba, 0x5d, 0xca, 0x74, 0x06, - 0x59, 0x7d, 0xf1, 0x3d, 0x8f, 0xc5, 0x7c, 0x9e, 0x54, 0x2b, 0xd4, 0x19, 0x54, 0x2d, 0x2d, 0x80, - 0xe8, 0x0c, 0x5e, 0xd0, 0xf4, 0xf2, 0xf6, 0x31, 0xa7, 0x17, 0xbb, 0xac, 0x62, 0x0b, 0x9e, 0x15, - 0x80, 0xbf, 0xe9, 0xa0, 0x1f, 0xa8, 0xcd, 0x10, 0xbd, 0x9c, 0x62, 0x4d, 0x56, 0x28, 0x08, 0x79, - 0x3b, 0x50, 0x7c, 0x27, 0xb6, 0xe6, 0xac, 0xc2, 0xa7, 0x83, 0xd2, 0x0a, 0x86, 0x88, 0xac, 0x90, - 0x84, 0x51, 0xdb, 0x1f, 0x65, 0xc5, 0xcc, 0xdb, 0xf6, 0x47, 0xf6, 0x57, 0x16, 0x6f, 0xd0, 0x80, - 0x89, 0xef, 0xf2, 0xa1, 0xc9, 0xef, 0x26, 0xa9, 0x37, 0x33, 0xbd, 0x0f, 0xdd, 0x26, 0x88, 0xf8, - 0xee, 0x27, 0x91, 0xab, 0x97, 0x25, 0x14, 0x30, 0x6d, 0xef, 0xc0, 0xf9, 0x5c, 0x39, 0x44, 0xd0, - 0x15, 0x26, 0x4d, 0x54, 0x15, 0xf2, 0xe3, 0x45, 0x71, 0x54, 0xb1, 0xb3, 0x2c, 0x87, 0x0a, 0x45, - 0x55, 0xa9, 0x6e, 0xc9, 0x89, 0xa8, 0xea, 0xe3, 0xcc, 0x65, 0x0a, 0x21, 0x75, 0x3e, 0x76, 0x7c, - 0x52, 0x25, 0x29, 0xbe, 0x4c, 0x21, 0x6d, 0x74, 0x31, 0x62, 0x27, 0x2d, 0x80, 0x9b, 0x9e, 0x7e, - 0x00, 0xbc, 0xca, 0xd2, 0x7a, 0x02, 0xfc, 0x28, 0xa9, 0x92, 0x39, 0x70, 0xa8, 0x70, 0x4f, 0x57, - 0xc8, 0xd8, 0x61, 0x88, 0x9e, 0x4e, 0xb1, 0xca, 0xe1, 0xef, 0x47, 0xef, 0x37, 0x81, 0x1e, 0x0a, - 0xf5, 0x5d, 0xfe, 0x17, 0xe2, 0x0f, 0x7a, 0xc4, 0x1f, 0x68, 0x1b, 0x13, 0x5e, 0x41, 0x32, 0x6f, - 0x6d, 0xbf, 0xa7, 0x7f, 0x17, 0xe0, 0x93, 0x51, 0xd3, 0x20, 0x87, 0x8c, 0x67, 0x67, 0xcd, 0xba, - 0x4a, 0x9d, 0x62, 0xa1, 0x06, 0xb1, 0xc5, 0xe3, 0xc0, 0x67, 0x0a, 0x7c, 0x9c, 0x09, 0x34, 0xb6, - 0xf4, 0x18, 0xca, 0x1c, 0x07, 0x1a, 0x47, 0x5b, 0x00, 0x44, 0xa0, 0xf1, 0x82, 0xa6, 0x77, 0xd9, - 0xe2, 0x13, 0x08, 0x57, 0xe6, 0x04, 0x86, 0x55, 0xe6, 0xc4, 0x79, 0x47, 0x20, 0x8f, 0xde, 0x3f, - 0x80, 0xf9, 0x1b, 0xa8, 0xea, 0xf3, 0xac, 0xdc, 0x6d, 0x66, 0xd8, 0x84, 0x2f, 0xf0, 0x5b, 0x74, - 0x86, 0x18, 0x6b, 0x84, 0x48, 0x43, 0x08, 0xd4, 0x84, 0x32, 0x03, 0xec, 0xd5, 0x87, 0xc9, 0x1c, - 0xc4, 0x47, 0x17, 0xe2, 0x35, 0xca, 0x88, 0x05, 0x11, 0xa1, 0x8c, 0x84, 0xad, 0xd7, 0x8d, 0x0c, - 0x73, 0x0c, 0xb3, 0xa6, 0x87, 0x55, 0x47, 0xc9, 0x6a, 0x0e, 0x05, 0x57, 0x26, 0xd1, 0x26, 0xac, - 0x65, 0xd2, 0xcf, 0x13, 0x9b, 0xb0, 0x43, 0xf4, 0xac, 0xa4, 0xdb, 0x79, 0xf0, 0x47, 0xac, 0xe2, - 0xf2, 0xaf, 0x6e, 0x9c, 0x56, 0x39, 0x4a, 0xba, 0xdd, 0x87, 0xea, 0x90, 0x44, 0xd2, 0x1d, 0xd6, - 0xb0, 0x3e, 0x57, 0xed, 0x94, 0xe1, 0x15, 0x54, 0xba, 0x9f, 0xbc, 0x98, 0x27, 0x59, 0xae, 0x7a, - 0xc3, 0x17, 0x01, 0xdb, 0x84, 0x0e, 0xf1, 0xb9, 0xea, 0xa1, 0xba, 0xd6, 0x07, 0xbe, 0xc3, 0x25, - 0x44, 0x7b, 0xc2, 0x3d, 0xf6, 0x89, 0x3d, 0xe1, 0x7e, 0x2d, 0xb3, 0x54, 0x33, 0xac, 0xe0, 0x56, - 0x82, 0xd8, 0x62, 0x53, 0xbc, 0x41, 0x64, 0xd9, 0x44, 0x20, 0xb1, 0x54, 0x0b, 0x2a, 0x98, 0xb9, - 0xcd, 0x60, 0x3b, 0x59, 0x91, 0xe4, 0xd9, 0x4f, 0xf1, 0xdd, 0x67, 0xcb, 0x4e, 0x4b, 0x10, 0x73, - 0x9b, 0x9f, 0xf4, 0xb9, 0xda, 0x05, 0x7e, 0x92, 0x35, 0xa1, 0xff, 0x41, 0xe0, 0xb9, 0x09, 0xa2, - 0xdf, 0x95, 0x45, 0x2a, 0x57, 0x3f, 0x1b, 0x45, 0xd7, 0xf1, 0x63, 0xdd, 0x2c, 0xcb, 0x49, 0x93, - 0x92, 0x1c, 0x43, 0x0a, 0x59, 0xc9, 0xe3, 0x4f, 0xc3, 0xcf, 0x0a, 0xe1, 0xc4, 0xc9, 0xfa, 0x00, - 0x35, 0xeb, 0xbc, 0xb6, 0x89, 0x25, 0x13, 0xf9, 0xe7, 0xa8, 0x4e, 0x6b, 0xa8, 0xd4, 0x4c, 0xb9, - 0x0b, 0x1c, 0x8d, 0x4e, 0x8b, 0x1b, 0x5b, 0x60, 0x53, 0x51, 0x62, 0x74, 0x86, 0x35, 0xcc, 0xee, - 0x8e, 0xc5, 0x1d, 0x43, 0xcd, 0xf2, 0x25, 0x88, 0xeb, 0x6f, 0x8f, 0x49, 0x63, 0x16, 0x45, 0xec, - 0xee, 0xd0, 0xb4, 0x49, 0x37, 0xba, 0x6e, 0x37, 0x8b, 0xd5, 0x1e, 0x3e, 0x23, 0xf7, 0x58, 0x12, - 0x18, 0x91, 0x6e, 0x04, 0x70, 0x6b, 0xf7, 0xb3, 0x62, 0xc9, 0x34, 0x4d, 0x6a, 0x7e, 0x94, 0xac, - 0x72, 0x96, 0x4c, 0xc5, 0xbc, 0x8e, 0x77, 0x3f, 0x5b, 0x66, 0x6c, 0x43, 0xd4, 0xee, 0x27, 0x05, - 0x9b, 0x95, 0x9d, 0xfa, 0x2b, 0x5b, 0xea, 0x6a, 0xe1, 0x6d, 0x94, 0x23, 0x89, 0xf2, 0xe2, 0x6b, - 0x85, 0x77, 0xc2, 0x90, 0x79, 0x25, 0x4a, 0x8a, 0x44, 0x1a, 0x72, 0xc3, 0xa7, 0xe3, 0x24, 0x20, - 0x37, 0x03, 0x84, 0xf9, 0x4c, 0x82, 0xfc, 0xbd, 0xfd, 0x43, 0x11, 0x5c, 0x7d, 0xb8, 0xf7, 0xb1, - 0x4f, 0xd7, 0x86, 0xc6, 0xf6, 0xb7, 0xcf, 0xd6, 0x07, 0xd2, 0xd2, 0xeb, 0xf3, 0x9b, 0xff, 0xf3, - 0xf5, 0xb5, 0xd1, 0xcf, 0xbf, 0xbe, 0x36, 0xfa, 0xff, 0xaf, 0xaf, 0x8d, 0x7e, 0xf6, 0xcd, 0xb5, - 0x77, 0x7e, 0xfe, 0xcd, 0xb5, 0x77, 0xfe, 0xf7, 0x9b, 0x6b, 0xef, 0x7c, 0xf5, 0xae, 0xfa, 0x73, - 0x6d, 0x6f, 0x7e, 0x49, 0xfc, 0xd1, 0xb5, 0x67, 0xbf, 0x08, 0x00, 0x00, 0xff, 0xff, 0x95, 0x20, - 0x7a, 0x41, 0xd2, 0x6d, 0x00, 0x00, + 0x52, 0xc0, 0xb7, 0x5f, 0x58, 0xa8, 0xe3, 0x16, 0xe8, 0x85, 0x65, 0x6f, 0xb9, 0x9b, 0xef, 0x19, + 0xcf, 0x8c, 0xed, 0xf6, 0xec, 0xcc, 0x7e, 0x1c, 0x7b, 0x48, 0xc8, 0x63, 0x8f, 0xbd, 0xe6, 0x6c, + 0x8f, 0x71, 0xb7, 0x67, 0xa4, 0x95, 0x90, 0xa8, 0xa9, 0x0e, 0xb7, 0x0b, 0x57, 0x57, 0xd6, 0x55, + 0x65, 0xb7, 0xa7, 0x0f, 0x81, 0x40, 0x20, 0x10, 0x08, 0xc4, 0x89, 0x8f, 0x7b, 0xe1, 0x01, 0x89, + 0xbf, 0x86, 0xc7, 0x7d, 0xe4, 0x11, 0xed, 0xfe, 0x23, 0xa8, 0x32, 0xb3, 0xf2, 0x23, 0x2a, 0x23, + 0xab, 0xbc, 0x4f, 0x33, 0xea, 0xf8, 0x45, 0x44, 0x66, 0x65, 0x64, 0x66, 0xe4, 0x47, 0x95, 0xa3, + 0x9b, 0xc5, 0x9b, 0xad, 0xa2, 0x64, 0x9c, 0x55, 0x5b, 0x15, 0x94, 0xcb, 0x34, 0x81, 0xe6, 0xdf, + 0x91, 0xf8, 0x79, 0xf8, 0x6e, 0x9c, 0xaf, 0xf8, 0xaa, 0x80, 0x8f, 0x3e, 0x34, 0x64, 0xc2, 0xe6, + 0xf3, 0x38, 0x9f, 0x56, 0x12, 0xf9, 0xe8, 0x03, 0x23, 0x81, 0x25, 0xe4, 0x5c, 0xfd, 0xfe, 0xf4, + 0x97, 0xdf, 0x0c, 0xa2, 0xf7, 0x76, 0xb2, 0x14, 0x72, 0xbe, 0xa3, 0x34, 0x86, 0x5f, 0x45, 0xdf, + 0xdf, 0x2e, 0x8a, 0x7d, 0xe0, 0xaf, 0xa0, 0xac, 0x52, 0x96, 0x0f, 0xef, 0x8e, 0x94, 0x83, 0xd1, + 0x69, 0x91, 0x8c, 0xb6, 0x8b, 0x62, 0x64, 0x84, 0xa3, 0x53, 0xf8, 0xd9, 0x02, 0x2a, 0xfe, 0xd1, + 0xbd, 0x30, 0x54, 0x15, 0x2c, 0xaf, 0x60, 0x78, 0x1e, 0xfd, 0xd6, 0x76, 0x51, 0x8c, 0x81, 0xef, + 0x42, 0x5d, 0x81, 0x31, 0x8f, 0x39, 0x0c, 0xd7, 0x5a, 0xaa, 0x2e, 0xa0, 0x7d, 0x3c, 0xec, 0x06, + 0x95, 0x9f, 0x49, 0xf4, 0xbd, 0xda, 0xcf, 0xc5, 0x82, 0x4f, 0xd9, 0x55, 0x3e, 0xbc, 0xdd, 0x56, + 0x54, 0x22, 0x6d, 0xfb, 0x4e, 0x08, 0x51, 0x56, 0x5f, 0x47, 0xbf, 0xfe, 0x3a, 0xce, 0x32, 0xe0, + 0x3b, 0x25, 0xd4, 0x05, 0x77, 0x75, 0xa4, 0x68, 0x24, 0x65, 0xda, 0xee, 0xdd, 0x20, 0xa3, 0x0c, + 0x7f, 0x15, 0x7d, 0x5f, 0x4a, 0x4e, 0x21, 0x61, 0x4b, 0x28, 0x87, 0x5e, 0x2d, 0x25, 0x24, 0x1e, + 0x79, 0x0b, 0xc2, 0xb6, 0x77, 0x58, 0xbe, 0x84, 0x92, 0xfb, 0x6d, 0x2b, 0x61, 0xd8, 0xb6, 0x81, + 0x94, 0xed, 0x7f, 0x18, 0x44, 0x3f, 0xdc, 0x4e, 0x12, 0xb6, 0xc8, 0xf9, 0x21, 0x4b, 0xe2, 0xec, + 0x30, 0xcd, 0x2f, 0x8f, 0xe1, 0x6a, 0xe7, 0xa2, 0xe6, 0xf3, 0x19, 0x0c, 0x9f, 0xb9, 0x4f, 0x55, + 0xa2, 0x23, 0xcd, 0x8e, 0x6c, 0x58, 0xfb, 0xfe, 0xe4, 0x7a, 0x4a, 0xaa, 0x2c, 0xff, 0x32, 0x88, + 0x6e, 0xe0, 0xb2, 0x8c, 0x59, 0xb6, 0x04, 0x53, 0x9a, 0x4f, 0x3b, 0x0c, 0xbb, 0xb8, 0x2e, 0xcf, + 0x67, 0xd7, 0x55, 0x53, 0x25, 0xca, 0xa2, 0xf7, 0xed, 0x70, 0x19, 0x43, 0x25, 0xba, 0xd3, 0x23, + 0x3a, 0x22, 0x14, 0xa2, 0x3d, 0x3f, 0xee, 0x83, 0x2a, 0x6f, 0x69, 0x34, 0x54, 0xde, 0x32, 0x56, + 0x69, 0x67, 0x0f, 0xbd, 0x16, 0x2c, 0x42, 0xfb, 0x7a, 0xd4, 0x83, 0x54, 0xae, 0xfe, 0x34, 0xfa, + 0x8d, 0xd7, 0xac, 0xbc, 0xac, 0x8a, 0x38, 0x01, 0xd5, 0x15, 0xee, 0xbb, 0xda, 0x8d, 0x14, 0xf7, + 0x86, 0x07, 0x5d, 0x98, 0x15, 0xb4, 0x8d, 0xf0, 0x65, 0x01, 0x78, 0x0c, 0x32, 0x8a, 0xb5, 0x90, + 0x0a, 0x5a, 0x0c, 0x29, 0xdb, 0x97, 0xd1, 0xd0, 0xd8, 0x7e, 0xf3, 0x67, 0x90, 0xf0, 0xed, 0xe9, + 0x14, 0xb7, 0x8a, 0xd1, 0x15, 0xc4, 0x68, 0x7b, 0x3a, 0xa5, 0x5a, 0xc5, 0x8f, 0x2a, 0x67, 0x57, + 0xd1, 0x07, 0xc8, 0xd9, 0x61, 0x5a, 0x09, 0x87, 0x9b, 0x61, 0x2b, 0x0a, 0xd3, 0x4e, 0x47, 0x7d, + 0x71, 0xe5, 0xf8, 0xaf, 0x06, 0xd1, 0x0f, 0x3c, 0x9e, 0x4f, 0x61, 0xce, 0x96, 0x30, 0x7c, 0xd2, + 0x6d, 0x4d, 0x92, 0xda, 0xff, 0xc7, 0xd7, 0xd0, 0xf0, 0x84, 0xc9, 0x18, 0x32, 0x48, 0x38, 0x19, + 0x26, 0x52, 0xdc, 0x19, 0x26, 0x1a, 0xb3, 0x7a, 0x58, 0x23, 0xdc, 0x07, 0xbe, 0xb3, 0x28, 0x4b, + 0xc8, 0x39, 0xd9, 0x96, 0x06, 0xe9, 0x6c, 0x4b, 0x07, 0xf5, 0xd4, 0x67, 0x1f, 0xf8, 0x76, 0x96, + 0x91, 0xf5, 0x91, 0xe2, 0xce, 0xfa, 0x68, 0x4c, 0x79, 0x48, 0xa2, 0xdf, 0xb4, 0x9e, 0x18, 0x3f, + 0xc8, 0xcf, 0xd9, 0x90, 0x7e, 0x16, 0x42, 0xae, 0x7d, 0xac, 0x75, 0x72, 0x9e, 0x6a, 0xbc, 0x78, + 0x5b, 0xb0, 0x92, 0x6e, 0x16, 0x29, 0xee, 0xac, 0x86, 0xc6, 0x94, 0x87, 0x3f, 0x89, 0xde, 0x53, + 0xa3, 0x64, 0x33, 0x9f, 0xdd, 0xf3, 0x0e, 0xa1, 0x78, 0x42, 0xbb, 0xdf, 0x41, 0x99, 0xc1, 0x41, + 0xc9, 0xd4, 0xe0, 0x73, 0xd7, 0xab, 0x87, 0x86, 0x9e, 0x7b, 0x61, 0xa8, 0x65, 0x7b, 0x17, 0x32, + 0x20, 0x6d, 0x4b, 0x61, 0x87, 0x6d, 0x0d, 0x29, 0xdb, 0x65, 0xf4, 0x3b, 0xfa, 0xb1, 0xd4, 0xf3, + 0xa8, 0x90, 0xd7, 0x83, 0xf4, 0x3a, 0x51, 0x6f, 0x1b, 0xd2, 0xbe, 0x36, 0xfa, 0xc1, 0xad, 0xfa, + 0xa8, 0x1e, 0xe8, 0xaf, 0x0f, 0xea, 0x7f, 0xf7, 0xc2, 0x90, 0xb2, 0xfd, 0x8f, 0x83, 0xe8, 0x47, + 0x4a, 0xf6, 0x22, 0x8f, 0xdf, 0x64, 0x20, 0xa6, 0xc4, 0x63, 0xe0, 0x57, 0xac, 0xbc, 0x1c, 0xaf, + 0xf2, 0x84, 0x98, 0xfe, 0xfd, 0x70, 0xc7, 0xf4, 0x4f, 0x2a, 0x59, 0x19, 0x9f, 0xaa, 0x28, 0x67, + 0x05, 0xce, 0xf8, 0x9a, 0x1a, 0x70, 0x56, 0x50, 0x19, 0x9f, 0x8b, 0xb4, 0xac, 0x1e, 0xd5, 0xc3, + 0xa6, 0xdf, 0xea, 0x91, 0x3d, 0x4e, 0xde, 0x09, 0x21, 0x66, 0xd8, 0x6a, 0x02, 0x98, 0xe5, 0xe7, + 0xe9, 0xec, 0xac, 0x98, 0xd6, 0x61, 0xfc, 0xc8, 0x1f, 0xa1, 0x16, 0x42, 0x0c, 0x5b, 0x04, 0xaa, + 0xbc, 0xfd, 0xb3, 0x49, 0x8c, 0x54, 0x57, 0xda, 0x2b, 0xd9, 0xfc, 0x10, 0x66, 0x71, 0xb2, 0x52, + 0xfd, 0xff, 0x93, 0x50, 0xc7, 0xc3, 0xb4, 0x2e, 0xc4, 0xa7, 0xd7, 0xd4, 0x52, 0xe5, 0xf9, 0xaf, + 0x41, 0x74, 0xaf, 0xa9, 0xfe, 0x45, 0x9c, 0xcf, 0x40, 0xb5, 0xa7, 0x2c, 0xfd, 0x76, 0x3e, 0x3d, + 0x85, 0x8a, 0xc7, 0x25, 0x1f, 0x7e, 0xe1, 0xaf, 0x64, 0x48, 0x47, 0x97, 0xed, 0x27, 0xdf, 0x49, + 0xd7, 0xb4, 0xfa, 0xb8, 0x1e, 0xd8, 0xd4, 0x10, 0xe0, 0xb6, 0xba, 0x90, 0xe0, 0x01, 0xe0, 0x4e, + 0x08, 0x31, 0xad, 0x2e, 0x04, 0x07, 0xf9, 0x32, 0xe5, 0xb0, 0x0f, 0x39, 0x94, 0xed, 0x56, 0x97, + 0xaa, 0x2e, 0x42, 0xb4, 0x3a, 0x81, 0x9a, 0xc1, 0xc6, 0xf1, 0xa6, 0x27, 0xc7, 0xf5, 0x80, 0x91, + 0xd6, 0xf4, 0xb8, 0xd1, 0x0f, 0x36, 0xab, 0x3b, 0xcb, 0xe7, 0x29, 0x2c, 0xd9, 0x25, 0x5e, 0xdd, + 0xd9, 0x26, 0x24, 0x40, 0xac, 0xee, 0xbc, 0xa0, 0x99, 0xc1, 0x2c, 0x3f, 0xaf, 0x52, 0xb8, 0x42, + 0x33, 0x98, 0xad, 0x5c, 0x8b, 0x89, 0x19, 0xcc, 0x83, 0x29, 0x0f, 0xc7, 0xd1, 0xaf, 0x09, 0xe1, + 0x1f, 0xb1, 0x34, 0x1f, 0xde, 0xf4, 0x28, 0xd5, 0x02, 0x6d, 0xf5, 0x16, 0x0d, 0xa0, 0x12, 0xd7, + 0xbf, 0xee, 0xc4, 0x79, 0x02, 0x99, 0xb7, 0xc4, 0x46, 0x1c, 0x2c, 0xb1, 0x83, 0x99, 0xd4, 0x41, + 0x08, 0xeb, 0xf1, 0x6b, 0x7c, 0x11, 0x97, 0x69, 0x3e, 0x1b, 0xfa, 0x74, 0x2d, 0x39, 0x91, 0x3a, + 0xf8, 0x38, 0x14, 0xc2, 0x4a, 0x71, 0xbb, 0x28, 0xca, 0x7a, 0x58, 0xf4, 0x85, 0xb0, 0x8b, 0x04, + 0x43, 0xb8, 0x85, 0xfa, 0xbd, 0xed, 0x42, 0x92, 0xa5, 0x79, 0xd0, 0x9b, 0x42, 0xfa, 0x78, 0x33, + 0x28, 0x0a, 0xde, 0x43, 0x88, 0x97, 0xd0, 0xd4, 0xcc, 0xf7, 0x64, 0x6c, 0x20, 0x18, 0xbc, 0x08, + 0x34, 0xeb, 0x34, 0x21, 0x3e, 0x8a, 0x2f, 0xa1, 0x7e, 0xc0, 0x50, 0xcf, 0x6b, 0x43, 0x9f, 0xbe, + 0x43, 0x10, 0xeb, 0x34, 0x3f, 0xa9, 0x5c, 0x2d, 0xa2, 0x0f, 0x84, 0xfc, 0x24, 0x2e, 0x79, 0x9a, + 0xa4, 0x45, 0x9c, 0x37, 0xf9, 0xbf, 0xaf, 0x5f, 0xb7, 0x28, 0xed, 0x72, 0xb3, 0x27, 0xad, 0xdc, + 0xfe, 0x72, 0x10, 0xdd, 0xc6, 0x7e, 0x4f, 0xa0, 0x9c, 0xa7, 0x62, 0x19, 0x59, 0xc9, 0x41, 0x78, + 0xf8, 0x79, 0xd8, 0x68, 0x4b, 0x41, 0x97, 0xe6, 0xc7, 0xd7, 0x57, 0x54, 0x05, 0xfb, 0xe3, 0x28, + 0x92, 0xcb, 0x15, 0xb1, 0xa4, 0x74, 0x7b, 0xad, 0x5a, 0xc7, 0x38, 0xeb, 0xc9, 0xdb, 0x01, 0xc2, + 0x4c, 0x15, 0xf2, 0x77, 0xb1, 0x52, 0x1e, 0x7a, 0x35, 0x84, 0x88, 0x98, 0x2a, 0x10, 0x82, 0x0b, + 0x3a, 0xbe, 0x60, 0x57, 0xfe, 0x82, 0xd6, 0x92, 0x70, 0x41, 0x15, 0x61, 0xf6, 0xae, 0x54, 0x41, + 0x7d, 0x7b, 0x57, 0x4d, 0x31, 0x42, 0x7b, 0x57, 0x98, 0x51, 0x86, 0x59, 0xf4, 0xdb, 0xb6, 0xe1, + 0xe7, 0x8c, 0x5d, 0xce, 0xe3, 0xf2, 0x72, 0xf8, 0x98, 0x56, 0x6e, 0x18, 0xed, 0x68, 0xbd, 0x17, + 0x6b, 0x86, 0x05, 0xdb, 0x61, 0x9d, 0x68, 0x9c, 0x95, 0x19, 0x1a, 0x16, 0x1c, 0x1b, 0x0a, 0x21, + 0x86, 0x05, 0x02, 0x35, 0x09, 0xb4, 0xf2, 0x76, 0x11, 0x8b, 0x75, 0xbb, 0xff, 0xa1, 0x48, 0x21, + 0x91, 0x40, 0xb7, 0x20, 0x33, 0x2b, 0xd8, 0x35, 0x19, 0x03, 0x5e, 0x89, 0x39, 0x45, 0x1b, 0x03, + 0xb5, 0x12, 0xf3, 0x60, 0x38, 0x3c, 0xf7, 0xcb, 0xb8, 0xb8, 0xf0, 0x87, 0xa7, 0x10, 0x85, 0xc3, + 0xb3, 0x41, 0x70, 0x2c, 0x8d, 0x21, 0x2e, 0x93, 0x0b, 0x7f, 0x2c, 0x49, 0x59, 0x38, 0x96, 0x34, + 0x83, 0x63, 0x49, 0x0a, 0x5e, 0xa7, 0xfc, 0xe2, 0x08, 0x78, 0xec, 0x8f, 0x25, 0x97, 0x09, 0xc7, + 0x52, 0x8b, 0x35, 0x59, 0x92, 0xed, 0x70, 0xbc, 0x78, 0x53, 0x25, 0x65, 0xfa, 0x06, 0x86, 0x01, + 0x2b, 0x1a, 0x22, 0xb2, 0x24, 0x12, 0x36, 0x13, 0x80, 0xf2, 0xd9, 0xc8, 0x0e, 0xa6, 0x15, 0x9a, + 0x00, 0x1a, 0x1b, 0x16, 0x41, 0x4c, 0x00, 0x7e, 0x12, 0x57, 0x6f, 0xbf, 0x64, 0x8b, 0xa2, 0xea, + 0xa8, 0x1e, 0x82, 0xc2, 0xd5, 0x6b, 0xc3, 0xca, 0xe7, 0xdb, 0xe8, 0x77, 0xed, 0x47, 0x7a, 0x96, + 0x57, 0xda, 0xeb, 0x26, 0xfd, 0x9c, 0x2c, 0x8c, 0xd8, 0xf2, 0x0a, 0xe0, 0x26, 0x05, 0x6a, 0x3c, + 0xf3, 0x5d, 0xe0, 0x71, 0x9a, 0x55, 0xc3, 0x07, 0x7e, 0x1b, 0x8d, 0x9c, 0x48, 0x81, 0x7c, 0x1c, + 0xee, 0xb3, 0xbb, 0x8b, 0x22, 0x4b, 0x93, 0xf6, 0xde, 0xa7, 0xd2, 0xd5, 0xe2, 0x70, 0x9f, 0xb5, + 0x31, 0x3c, 0xbe, 0x8d, 0x81, 0xcb, 0xff, 0x4c, 0x56, 0x05, 0xf8, 0xc7, 0x37, 0x07, 0x09, 0x8f, + 0x6f, 0x18, 0xc5, 0xf5, 0x19, 0x03, 0x3f, 0x8c, 0x57, 0x6c, 0x41, 0x8c, 0x41, 0x5a, 0x1c, 0xae, + 0x8f, 0x8d, 0x99, 0x2c, 0x44, 0x7b, 0x38, 0xc8, 0x39, 0x94, 0x79, 0x9c, 0xed, 0x65, 0xf1, 0xac, + 0x1a, 0x12, 0xfd, 0xc6, 0xa5, 0x88, 0x2c, 0x84, 0xa6, 0x3d, 0x8f, 0xf1, 0xa0, 0xda, 0x8b, 0x97, + 0xac, 0x4c, 0x39, 0xfd, 0x18, 0x0d, 0xd2, 0xf9, 0x18, 0x1d, 0xd4, 0xeb, 0x6d, 0xbb, 0x4c, 0x2e, + 0xd2, 0x25, 0x4c, 0x03, 0xde, 0x1a, 0xa4, 0x87, 0x37, 0x0b, 0xf5, 0x34, 0xda, 0x98, 0x2d, 0xca, + 0x04, 0xc8, 0x46, 0x93, 0xe2, 0xce, 0x46, 0xd3, 0x98, 0xf2, 0xf0, 0xb7, 0x83, 0xe8, 0xf7, 0xa4, + 0xd4, 0xde, 0x90, 0xdc, 0x8d, 0xab, 0x8b, 0x37, 0x2c, 0x2e, 0xa7, 0xc3, 0x8f, 0x7d, 0x76, 0xbc, + 0xa8, 0x76, 0xfd, 0xf4, 0x3a, 0x2a, 0xf8, 0xb1, 0x1e, 0xa6, 0x95, 0xd5, 0xe3, 0xbc, 0x8f, 0xd5, + 0x41, 0xc2, 0x8f, 0x15, 0xa3, 0x78, 0x00, 0x11, 0x72, 0xb9, 0xf8, 0x7f, 0x40, 0xea, 0xbb, 0x3b, + 0x00, 0x6b, 0x9d, 0x1c, 0x1e, 0x1f, 0x6b, 0xa1, 0x1b, 0x2d, 0x9b, 0x94, 0x0d, 0x7f, 0xc4, 0x8c, + 0xfa, 0xe2, 0xa4, 0x67, 0xdd, 0x2b, 0xc2, 0x9e, 0x5b, 0x3d, 0x63, 0xd4, 0x17, 0x27, 0x3c, 0x5b, + 0xc3, 0x5a, 0xc8, 0xb3, 0x67, 0x68, 0x1b, 0xf5, 0xc5, 0x71, 0x46, 0xa1, 0x98, 0x66, 0x5e, 0x78, + 0x1c, 0xb0, 0x83, 0xe7, 0x86, 0xf5, 0x5e, 0xac, 0x72, 0xf8, 0xf7, 0x83, 0xe8, 0x87, 0xc6, 0xe3, + 0x11, 0x9b, 0xa6, 0xe7, 0x2b, 0x09, 0xbd, 0x8a, 0xb3, 0x05, 0x54, 0xc3, 0xa7, 0x94, 0xb5, 0x36, + 0xab, 0x4b, 0xf0, 0xec, 0x5a, 0x3a, 0xb8, 0xef, 0x6c, 0x17, 0x45, 0xb6, 0x9a, 0xc0, 0xbc, 0xc8, + 0xc8, 0xbe, 0xe3, 0x20, 0xe1, 0xbe, 0x83, 0x51, 0x9c, 0x69, 0x4e, 0x58, 0x9d, 0xc7, 0x7a, 0x33, + 0x4d, 0x21, 0x0a, 0x67, 0x9a, 0x0d, 0x82, 0x73, 0xa5, 0x09, 0xdb, 0x61, 0x59, 0x06, 0x09, 0x6f, + 0x1f, 0x6a, 0x6a, 0x4d, 0x43, 0x84, 0x73, 0x25, 0x44, 0x9a, 0xf5, 0x7f, 0xb3, 0xe6, 0x8a, 0x4b, + 0x78, 0xbe, 0x3a, 0x4c, 0xf3, 0xcb, 0xa1, 0x3f, 0x2d, 0x30, 0x00, 0xb1, 0xfe, 0xf7, 0x82, 0x78, + 0x6d, 0x77, 0x96, 0x4f, 0x99, 0x7f, 0x6d, 0x57, 0x4b, 0xc2, 0x6b, 0x3b, 0x45, 0x60, 0x93, 0xa7, + 0x40, 0x99, 0xac, 0x25, 0x61, 0x93, 0x8a, 0xf0, 0x0d, 0x85, 0x6a, 0x97, 0x98, 0x1c, 0x0a, 0xd1, + 0xbe, 0xf0, 0x5a, 0x27, 0x87, 0x23, 0xb4, 0x59, 0xe4, 0xed, 0x01, 0x4f, 0x2e, 0xfc, 0x11, 0xea, + 0x20, 0xe1, 0x08, 0xc5, 0x28, 0xae, 0xd2, 0x84, 0xe9, 0x45, 0xea, 0x03, 0x7f, 0x7c, 0xb4, 0x16, + 0xa8, 0x6b, 0x9d, 0x1c, 0x5e, 0x1a, 0x1d, 0xcc, 0xc5, 0x33, 0xf3, 0x06, 0xb9, 0x94, 0x85, 0x97, + 0x46, 0x9a, 0xc1, 0xa5, 0x97, 0x82, 0xfa, 0x71, 0xfa, 0x4b, 0x6f, 0xe4, 0xe1, 0xd2, 0x3b, 0x9c, + 0x72, 0xf2, 0xef, 0x83, 0xe8, 0xa6, 0xed, 0xe5, 0x98, 0xd5, 0x7d, 0xe4, 0x55, 0x9c, 0xa5, 0xd3, + 0x98, 0xc3, 0x84, 0x5d, 0x42, 0x8e, 0xf6, 0x6d, 0xdc, 0xd2, 0x4a, 0x7e, 0xe4, 0x28, 0x10, 0xfb, + 0x36, 0xbd, 0x14, 0x71, 0x9c, 0x48, 0xfa, 0xac, 0x82, 0x9d, 0xb8, 0x22, 0x46, 0x32, 0x07, 0x09, + 0xc7, 0x09, 0x46, 0x71, 0xbe, 0x2a, 0xe5, 0x2f, 0xde, 0x16, 0x50, 0xa6, 0x90, 0x27, 0xe0, 0xcf, + 0x57, 0x31, 0x15, 0xce, 0x57, 0x3d, 0x74, 0x6b, 0x5b, 0x43, 0x0f, 0x4e, 0xed, 0x7b, 0x09, 0x98, + 0x08, 0xdc, 0x4b, 0x20, 0x50, 0x5c, 0x49, 0x03, 0x78, 0xb7, 0x06, 0x5b, 0x56, 0x82, 0x5b, 0x83, + 0x34, 0xdd, 0xda, 0x2c, 0xd2, 0xcc, 0xb8, 0xee, 0x26, 0x1d, 0x45, 0x1f, 0xdb, 0xdd, 0x65, 0xbd, + 0x17, 0xeb, 0xdf, 0x9d, 0x3a, 0x85, 0x2c, 0x16, 0x53, 0x48, 0x60, 0x0b, 0xa8, 0x61, 0xfa, 0xec, + 0x4e, 0x59, 0xac, 0x72, 0xf8, 0xd7, 0x83, 0xe8, 0x23, 0x9f, 0xc7, 0x97, 0x85, 0xf0, 0xfb, 0xa4, + 0xdb, 0x96, 0x24, 0x89, 0x8b, 0x17, 0x61, 0x0d, 0x55, 0x86, 0x3f, 0x8f, 0x3e, 0x6c, 0x44, 0xe6, + 0x5e, 0x86, 0x2a, 0x80, 0x9b, 0x40, 0xe9, 0xf2, 0x63, 0x4e, 0xbb, 0xdf, 0xea, 0xcd, 0x9b, 0xb5, + 0x89, 0x5b, 0xae, 0x0a, 0xad, 0x4d, 0xb4, 0x0d, 0x25, 0x26, 0xd6, 0x26, 0x1e, 0xcc, 0xec, 0x6a, + 0xd8, 0xd5, 0x7b, 0x9d, 0xf2, 0x0b, 0x91, 0xfb, 0xa0, 0x5d, 0x0d, 0xa7, 0xac, 0x1a, 0x22, 0x76, + 0x35, 0x48, 0x18, 0x67, 0x07, 0x0d, 0x58, 0xf7, 0x4d, 0xdf, 0xb8, 0xaa, 0x0d, 0xd9, 0x3d, 0xf3, + 0x61, 0x37, 0x88, 0xe3, 0xb5, 0x11, 0xab, 0x65, 0xc8, 0xe3, 0x90, 0x05, 0xb4, 0x14, 0x59, 0xef, + 0xc5, 0x2a, 0x87, 0x7f, 0x19, 0xfd, 0xa0, 0x55, 0xb1, 0x3d, 0x88, 0xf9, 0xa2, 0x84, 0xe9, 0x70, + 0xab, 0xa3, 0xdc, 0x0d, 0xa8, 0x5d, 0x3f, 0xe9, 0xaf, 0xd0, 0xca, 0x97, 0x1b, 0x4e, 0x86, 0x95, + 0x2e, 0xc3, 0xd3, 0x90, 0x49, 0x97, 0x0d, 0xe6, 0xcb, 0xb4, 0x4e, 0x6b, 0xc9, 0x6b, 0x47, 0xd7, + 0xf6, 0x32, 0x4e, 0x33, 0x71, 0x44, 0xf3, 0x71, 0xc8, 0xa8, 0x83, 0x06, 0x97, 0xbc, 0xa4, 0x4a, + 0x6b, 0x64, 0x16, 0x7d, 0xdc, 0x5a, 0x2a, 0x6d, 0xd0, 0x23, 0x81, 0x67, 0xa5, 0xb4, 0xd9, 0x93, + 0x56, 0x6e, 0x79, 0xb3, 0x55, 0x58, 0xff, 0x6c, 0x07, 0xb9, 0xcf, 0xab, 0x52, 0xf5, 0x44, 0xfa, + 0x66, 0x4f, 0x5a, 0x79, 0xfd, 0x8b, 0xe8, 0xc3, 0xb6, 0x57, 0x35, 0x11, 0x6d, 0x75, 0x9a, 0x42, + 0x73, 0xd1, 0x93, 0xfe, 0x0a, 0x66, 0x79, 0xf1, 0x65, 0x5a, 0x71, 0x56, 0xae, 0xc6, 0x17, 0xec, + 0xaa, 0xb9, 0xef, 0xec, 0xf6, 0x56, 0x05, 0x8c, 0x2c, 0x82, 0x58, 0x5e, 0xf8, 0xc9, 0x96, 0x2b, + 0x73, 0x2f, 0xba, 0x22, 0x5c, 0x59, 0x44, 0x87, 0x2b, 0x97, 0x34, 0x63, 0x55, 0x53, 0x2b, 0x73, + 0x89, 0x7b, 0xcd, 0x5f, 0xd4, 0xf6, 0x45, 0xee, 0x87, 0xdd, 0xa0, 0xc9, 0x58, 0x94, 0x78, 0x37, + 0x3d, 0x3f, 0xd7, 0x75, 0xf2, 0x97, 0xd4, 0x46, 0x88, 0x8c, 0x85, 0x40, 0x4d, 0x02, 0xbc, 0x97, + 0x66, 0x20, 0xce, 0xfb, 0x5e, 0x9e, 0x9f, 0x67, 0x2c, 0x9e, 0xa2, 0x04, 0xb8, 0x16, 0x8f, 0x6c, + 0x39, 0x91, 0x00, 0xfb, 0x38, 0x73, 0xda, 0x53, 0x4b, 0x4f, 0x21, 0x61, 0x79, 0x92, 0x66, 0xf8, + 0xfa, 0x97, 0xd0, 0xd4, 0x42, 0xe2, 0xb4, 0xa7, 0x05, 0x99, 0x89, 0xb1, 0x16, 0xd5, 0xdd, 0xbe, + 0x29, 0xff, 0xfd, 0xb6, 0xa2, 0x25, 0x26, 0x26, 0x46, 0x0f, 0x66, 0xd6, 0x81, 0xb5, 0xf0, 0xac, + 0x10, 0xc6, 0x6f, 0xb5, 0xb5, 0xa4, 0x84, 0x58, 0x07, 0xba, 0x84, 0x59, 0xcf, 0xd4, 0xbf, 0xef, + 0xb2, 0xab, 0x5c, 0x18, 0xbd, 0xd3, 0x56, 0x69, 0x64, 0xc4, 0x7a, 0x06, 0x33, 0xca, 0xf0, 0x4f, + 0xa3, 0x5f, 0x15, 0x86, 0x4b, 0x56, 0x0c, 0x6f, 0x78, 0x14, 0x4a, 0xeb, 0xa6, 0xd6, 0x4d, 0x52, + 0x6e, 0x2e, 0x1c, 0xea, 0xd8, 0x38, 0xab, 0xe2, 0x19, 0x0c, 0xef, 0x11, 0x2d, 0x2e, 0xa4, 0xc4, + 0x85, 0xc3, 0x36, 0xe5, 0x46, 0xc5, 0x31, 0x9b, 0x2a, 0xeb, 0x9e, 0x1a, 0x6a, 0x61, 0x28, 0x2a, + 0x6c, 0xc8, 0x24, 0x33, 0xc7, 0xf1, 0x32, 0x9d, 0xe9, 0x09, 0x47, 0x8e, 0x5b, 0x15, 0x4a, 0x66, + 0x0c, 0x33, 0xb2, 0x20, 0x22, 0x99, 0x21, 0x61, 0xe5, 0xf3, 0xdf, 0x06, 0xd1, 0x2d, 0xc3, 0xec, + 0x37, 0x3b, 0x67, 0x07, 0xf9, 0x39, 0xab, 0x53, 0x9f, 0xc3, 0x34, 0xbf, 0xac, 0x86, 0x9f, 0x51, + 0x26, 0xfd, 0xbc, 0x2e, 0xca, 0xe7, 0xd7, 0xd6, 0x33, 0x59, 0x6b, 0xb3, 0xad, 0x64, 0xce, 0x62, + 0xa5, 0x06, 0xca, 0x5a, 0xf5, 0xee, 0x13, 0xe6, 0x88, 0xac, 0x35, 0xc4, 0x9b, 0x26, 0xd6, 0xce, + 0x33, 0x96, 0xe3, 0x26, 0x36, 0x16, 0x6a, 0x21, 0xd1, 0xc4, 0x2d, 0xc8, 0x8c, 0xc7, 0x8d, 0x48, + 0xee, 0x80, 0x6c, 0x67, 0x19, 0x1a, 0x8f, 0xb5, 0xaa, 0x06, 0x88, 0xf1, 0xd8, 0x0b, 0x2a, 0x3f, + 0xa7, 0xd1, 0xf7, 0xea, 0x47, 0x7a, 0x52, 0xc2, 0x32, 0x05, 0x7c, 0x6d, 0xc0, 0x92, 0x10, 0xfd, + 0xdf, 0x25, 0x4c, 0xcf, 0x3a, 0xcb, 0xab, 0x22, 0x8b, 0xab, 0x0b, 0x75, 0xd8, 0xeb, 0xd6, 0xb9, + 0x11, 0xe2, 0xe3, 0xde, 0xfb, 0x1d, 0x94, 0x19, 0xd4, 0x1b, 0x99, 0x1e, 0x62, 0x1e, 0xf8, 0x55, + 0x5b, 0xc3, 0xcc, 0x5a, 0x27, 0x67, 0x76, 0x9f, 0xf7, 0xe3, 0x2c, 0x83, 0x72, 0xd5, 0xc8, 0x8e, + 0xe2, 0x3c, 0x3d, 0x87, 0x8a, 0xa3, 0xdd, 0x67, 0x45, 0x8d, 0x30, 0x46, 0xec, 0x3e, 0x07, 0x70, + 0x93, 0xcd, 0x23, 0xcf, 0x07, 0xf9, 0x14, 0xde, 0xa2, 0x6c, 0x1e, 0xdb, 0x11, 0x0c, 0x91, 0xcd, + 0x53, 0xac, 0xd9, 0x85, 0x7d, 0x9e, 0xb1, 0xe4, 0x52, 0x4d, 0x01, 0x6e, 0x03, 0x0b, 0x09, 0x9e, + 0x03, 0xee, 0x84, 0x10, 0x33, 0x09, 0x08, 0xc1, 0x29, 0x14, 0x59, 0x9c, 0xe0, 0xbb, 0x23, 0x52, + 0x47, 0xc9, 0x88, 0x49, 0x00, 0x33, 0xa8, 0xb8, 0xea, 0x4e, 0x8a, 0xaf, 0xb8, 0xe8, 0x4a, 0xca, + 0x9d, 0x10, 0x62, 0xa6, 0x41, 0x21, 0x18, 0x17, 0x59, 0xca, 0x51, 0x37, 0x90, 0x1a, 0x42, 0x42, + 0x74, 0x03, 0x97, 0x40, 0x26, 0x8f, 0xa0, 0x9c, 0x81, 0xd7, 0xa4, 0x90, 0x04, 0x4d, 0x36, 0x84, + 0xb9, 0x62, 0x28, 0xeb, 0xce, 0x8a, 0x15, 0xba, 0x62, 0xa8, 0xaa, 0xc5, 0x8a, 0x15, 0x71, 0xc5, + 0xd0, 0x01, 0x50, 0x11, 0x4f, 0xe2, 0x8a, 0xfb, 0x8b, 0x28, 0x24, 0xc1, 0x22, 0x36, 0x84, 0x99, + 0xa3, 0x65, 0x11, 0x17, 0x1c, 0xcd, 0xd1, 0xaa, 0x00, 0xd6, 0x69, 0xf0, 0x4d, 0x52, 0x6e, 0x46, + 0x12, 0xd9, 0x2a, 0xc0, 0xf7, 0x52, 0xc8, 0xa6, 0x15, 0x1a, 0x49, 0xd4, 0x73, 0x6f, 0xa4, 0xc4, + 0x48, 0xd2, 0xa6, 0x50, 0x28, 0xa9, 0xbd, 0x6a, 0x5f, 0xed, 0xd0, 0x36, 0xf5, 0x9d, 0x10, 0x62, + 0xc6, 0xa7, 0xa6, 0xd0, 0x3b, 0x71, 0x59, 0xa6, 0xf5, 0xe4, 0xff, 0xc0, 0x5f, 0xa0, 0x46, 0x4e, + 0x8c, 0x4f, 0x3e, 0x0e, 0x75, 0xaf, 0x66, 0xe0, 0xf6, 0x15, 0x0c, 0x0f, 0xdd, 0x77, 0x83, 0x8c, + 0xc9, 0x38, 0x85, 0xc4, 0x3a, 0xce, 0xf4, 0x3d, 0x4d, 0xcf, 0x69, 0xe6, 0x83, 0x2e, 0xcc, 0x7a, + 0x05, 0x40, 0xbb, 0x38, 0x62, 0x4b, 0x98, 0xb0, 0x17, 0x6f, 0xd3, 0x8a, 0xa7, 0xf9, 0x4c, 0xcd, + 0xdc, 0xcf, 0x08, 0x4b, 0x3e, 0x98, 0x78, 0x05, 0xa0, 0x53, 0xc9, 0x24, 0x10, 0xa8, 0x2c, 0xc7, + 0x70, 0xe5, 0x4d, 0x20, 0xb0, 0x45, 0xcd, 0x11, 0x09, 0x44, 0x88, 0x37, 0xfb, 0x28, 0xda, 0xb9, + 0x7a, 0x4f, 0x72, 0xc2, 0x9a, 0x5c, 0x8e, 0xb2, 0x86, 0x41, 0x62, 0x29, 0x1b, 0x54, 0x30, 0xeb, + 0x4b, 0xed, 0xdf, 0x74, 0xb1, 0x87, 0x84, 0x9d, 0x76, 0x37, 0x7b, 0xd4, 0x83, 0xf4, 0xb8, 0x32, + 0x67, 0xf2, 0x94, 0xab, 0xf6, 0x91, 0xfc, 0xa3, 0x1e, 0xa4, 0xb5, 0x27, 0x63, 0x57, 0xeb, 0x79, + 0x9c, 0x5c, 0xce, 0x4a, 0xb6, 0xc8, 0xa7, 0x3b, 0x2c, 0x63, 0x25, 0xda, 0x93, 0x71, 0x4a, 0x8d, + 0x50, 0x62, 0x4f, 0xa6, 0x43, 0xc5, 0x64, 0x70, 0x76, 0x29, 0xb6, 0xb3, 0x74, 0x86, 0x57, 0xd4, + 0x8e, 0x21, 0x01, 0x10, 0x19, 0x9c, 0x17, 0xf4, 0x04, 0x91, 0x5c, 0x71, 0xf3, 0x34, 0x89, 0x33, + 0xe9, 0x6f, 0x8b, 0x36, 0xe3, 0x80, 0x9d, 0x41, 0xe4, 0x51, 0xf0, 0xd4, 0x73, 0xb2, 0x28, 0xf3, + 0x83, 0x9c, 0x33, 0xb2, 0x9e, 0x0d, 0xd0, 0x59, 0x4f, 0x0b, 0x44, 0xc3, 0xea, 0x04, 0xde, 0xd6, + 0xa5, 0xa9, 0xff, 0xf1, 0x0d, 0xab, 0xf5, 0xef, 0x23, 0x25, 0x0f, 0x0d, 0xab, 0x88, 0x43, 0x95, + 0x51, 0x4e, 0x64, 0xc0, 0x04, 0xb4, 0xdd, 0x30, 0x79, 0xd8, 0x0d, 0xfa, 0xfd, 0x8c, 0xf9, 0x2a, + 0x83, 0x90, 0x1f, 0x01, 0xf4, 0xf1, 0xd3, 0x80, 0x66, 0xbb, 0xc5, 0xa9, 0xcf, 0x05, 0x24, 0x97, + 0xad, 0x2b, 0x46, 0x6e, 0x41, 0x25, 0x42, 0x6c, 0xb7, 0x10, 0xa8, 0xbf, 0x89, 0x0e, 0x12, 0x96, + 0x87, 0x9a, 0xa8, 0x96, 0xf7, 0x69, 0x22, 0xc5, 0x99, 0xc5, 0xaf, 0x96, 0xaa, 0xc8, 0x94, 0xcd, + 0xb4, 0x4e, 0x58, 0xb0, 0x21, 0x62, 0xf1, 0x4b, 0xc2, 0x26, 0x27, 0xc7, 0x3e, 0x8f, 0xda, 0xf7, + 0x95, 0x5b, 0x56, 0x8e, 0xe8, 0xfb, 0xca, 0x14, 0x4b, 0x57, 0x52, 0xc6, 0x48, 0x87, 0x15, 0x37, + 0x4e, 0x36, 0xfa, 0xc1, 0x66, 0xc9, 0xe3, 0xf8, 0xdc, 0xc9, 0x20, 0x2e, 0xa5, 0xd7, 0xcd, 0x80, + 0x21, 0x83, 0x11, 0x4b, 0x9e, 0x00, 0x8e, 0x86, 0x30, 0xc7, 0xf3, 0x0e, 0xcb, 0x39, 0xe4, 0xdc, + 0x37, 0x84, 0xb9, 0xc6, 0x14, 0x18, 0x1a, 0xc2, 0x28, 0x05, 0x14, 0xb7, 0x62, 0x3f, 0x08, 0xf8, + 0x71, 0x3c, 0xf7, 0x66, 0x6c, 0x72, 0xaf, 0x47, 0xca, 0x43, 0x71, 0x8b, 0x38, 0xeb, 0x90, 0xcf, + 0xf6, 0x32, 0x89, 0xcb, 0x99, 0xde, 0xdd, 0x98, 0x0e, 0x9f, 0xd0, 0x76, 0x5c, 0x92, 0x38, 0xe4, + 0x0b, 0x6b, 0xa0, 0x61, 0xe7, 0x60, 0x1e, 0xcf, 0x74, 0x4d, 0x3d, 0x35, 0x10, 0xf2, 0x56, 0x55, + 0x1f, 0x76, 0x83, 0xc8, 0xcf, 0xab, 0x74, 0x0a, 0x2c, 0xe0, 0x47, 0xc8, 0xfb, 0xf8, 0xc1, 0x20, + 0xca, 0xde, 0xea, 0x7a, 0xcb, 0x15, 0xdd, 0x76, 0x3e, 0x55, 0xeb, 0xd8, 0x11, 0xf1, 0x78, 0x10, + 0x17, 0xca, 0xde, 0x08, 0x1e, 0xf5, 0xd1, 0x66, 0x83, 0x36, 0xd4, 0x47, 0xf5, 0xfe, 0x6b, 0x9f, + 0x3e, 0xea, 0x83, 0x95, 0xcf, 0x9f, 0xab, 0x3e, 0xba, 0x1b, 0xf3, 0xb8, 0xce, 0xdb, 0x5f, 0xa5, + 0x70, 0xa5, 0x16, 0xc2, 0x9e, 0xfa, 0x36, 0xd4, 0x48, 0xbc, 0xa8, 0x86, 0x56, 0xc5, 0x5b, 0xbd, + 0xf9, 0x80, 0x6f, 0xb5, 0x42, 0xe8, 0xf4, 0x8d, 0x96, 0x0a, 0x5b, 0xbd, 0xf9, 0x80, 0x6f, 0xf5, + 0x06, 0x6c, 0xa7, 0x6f, 0xf4, 0x1a, 0xec, 0x56, 0x6f, 0x5e, 0xf9, 0xfe, 0x9b, 0xa6, 0xe3, 0xda, + 0xce, 0xeb, 0x3c, 0x2c, 0xe1, 0xe9, 0x12, 0x7c, 0xe9, 0xa4, 0x6b, 0x4f, 0xa3, 0xa1, 0x74, 0x92, + 0x56, 0xb1, 0x3e, 0x9b, 0xe2, 0x2b, 0xc5, 0x09, 0xab, 0x52, 0x71, 0x48, 0xff, 0xac, 0x87, 0xd1, + 0x06, 0x0e, 0x2d, 0x9a, 0x42, 0x4a, 0xe6, 0xb8, 0xd1, 0x41, 0xcd, 0x8d, 0xe2, 0x8d, 0x80, 0xbd, + 0xf6, 0xc5, 0xe2, 0xcd, 0x9e, 0xb4, 0x39, 0xf8, 0x73, 0x18, 0xfb, 0xc4, 0x31, 0xd4, 0xaa, 0xde, + 0x43, 0xc7, 0x27, 0xfd, 0x15, 0x94, 0xfb, 0xbf, 0x6b, 0xd6, 0x15, 0xd8, 0xbf, 0xea, 0x04, 0x4f, + 0xfb, 0x58, 0x44, 0x1d, 0xe1, 0xd9, 0xb5, 0x74, 0x54, 0x41, 0xfe, 0x73, 0x10, 0xdd, 0xf1, 0x16, + 0xc4, 0x3d, 0x7b, 0xfe, 0xfd, 0x3e, 0xb6, 0xfd, 0x67, 0xd0, 0x5f, 0x7c, 0x17, 0x55, 0x55, 0xba, + 0x7f, 0x6a, 0x96, 0xf7, 0x8d, 0x86, 0x78, 0xeb, 0xe3, 0x65, 0x39, 0x85, 0x52, 0xf5, 0xd8, 0x50, + 0xd0, 0x19, 0x18, 0xf7, 0xdb, 0x4f, 0xaf, 0xa9, 0x65, 0x7d, 0xe2, 0xc7, 0x81, 0xd5, 0xdb, 0x7c, + 0x56, 0x79, 0x42, 0x96, 0x2d, 0x1a, 0x17, 0xe8, 0xb3, 0xeb, 0xaa, 0x51, 0x3d, 0xd9, 0x82, 0xc5, + 0x17, 0x03, 0x9e, 0xf5, 0x34, 0xec, 0x7c, 0x43, 0xe0, 0x93, 0xeb, 0x29, 0xa9, 0xb2, 0xfc, 0xf7, + 0x20, 0xba, 0xef, 0xb0, 0xe6, 0xb4, 0x03, 0xed, 0xc9, 0xfc, 0x24, 0x60, 0x9f, 0x52, 0xd2, 0x85, + 0xfb, 0x83, 0xef, 0xa6, 0x6c, 0xbe, 0x87, 0xe3, 0xa8, 0xec, 0xa5, 0x19, 0x87, 0xb2, 0xfd, 0x3d, + 0x1c, 0xd7, 0xae, 0xa4, 0x46, 0xf4, 0xf7, 0x70, 0x02, 0xb8, 0xf5, 0x3d, 0x1c, 0x8f, 0x67, 0xef, + 0xf7, 0x70, 0xbc, 0xd6, 0x82, 0xdf, 0xc3, 0x09, 0x6b, 0x50, 0x93, 0x4f, 0x53, 0x04, 0xb9, 0xab, + 0xde, 0xcb, 0xa2, 0xbb, 0xc9, 0xfe, 0xf4, 0x3a, 0x2a, 0xc4, 0xf4, 0x2b, 0x39, 0x71, 0x0b, 0xaf, + 0xc7, 0x33, 0x75, 0x6e, 0xe2, 0x6d, 0xf5, 0xe6, 0x95, 0xef, 0x9f, 0xa9, 0xb5, 0x97, 0x9e, 0x6c, + 0x58, 0x29, 0xde, 0xa9, 0x5c, 0x0f, 0x4d, 0x1e, 0xb5, 0x05, 0xbb, 0xe5, 0x37, 0xfa, 0xc1, 0x44, + 0x75, 0x6b, 0x42, 0x35, 0xfa, 0xa8, 0xcb, 0x10, 0x6a, 0xf2, 0xad, 0xde, 0x3c, 0x31, 0xc9, 0x49, + 0xdf, 0xb2, 0xb5, 0x7b, 0x18, 0x73, 0xdb, 0xfa, 0x49, 0x7f, 0x05, 0xe5, 0x7e, 0xa9, 0x92, 0x5a, + 0xdb, 0xbd, 0x68, 0xe7, 0xcd, 0x2e, 0x53, 0x63, 0xa7, 0x99, 0x47, 0x7d, 0xf1, 0x50, 0x7a, 0x63, + 0x4f, 0xf0, 0x5d, 0xe9, 0x8d, 0x77, 0x92, 0xff, 0xe4, 0x7a, 0x4a, 0xaa, 0x2c, 0xff, 0x3a, 0x88, + 0x6e, 0x92, 0x65, 0x51, 0x71, 0xf0, 0x59, 0x5f, 0xcb, 0x28, 0x1e, 0x3e, 0xbf, 0xb6, 0x9e, 0x2a, + 0xd4, 0x7f, 0x0c, 0xa2, 0x5b, 0x81, 0x42, 0xc9, 0x00, 0xb9, 0x86, 0x75, 0x37, 0x50, 0x7e, 0x7c, + 0x7d, 0x45, 0x6a, 0xba, 0xb7, 0xf1, 0x71, 0xfb, 0x43, 0x31, 0x01, 0xdb, 0x63, 0xfa, 0x43, 0x31, + 0xdd, 0x5a, 0x78, 0x0b, 0xaa, 0x4e, 0x4a, 0xd4, 0xca, 0xc8, 0xb7, 0x05, 0x25, 0x72, 0x16, 0xb4, + 0x22, 0x5a, 0xeb, 0xe4, 0x7c, 0x4e, 0x5e, 0xbc, 0x2d, 0xe2, 0x7c, 0x4a, 0x3b, 0x91, 0xf2, 0x6e, + 0x27, 0x9a, 0xc3, 0x5b, 0x77, 0xb5, 0xf4, 0x94, 0x35, 0xcb, 0xbc, 0x47, 0x94, 0xbe, 0x46, 0x82, + 0x5b, 0x77, 0x2d, 0x94, 0xf0, 0xa6, 0x72, 0xda, 0x90, 0x37, 0x94, 0xca, 0x3e, 0xee, 0x83, 0xa2, + 0x05, 0x84, 0xf6, 0xa6, 0x4f, 0x04, 0x36, 0x42, 0x56, 0x5a, 0xa7, 0x02, 0x9b, 0x3d, 0x69, 0xc2, + 0xed, 0x18, 0xf8, 0x97, 0x10, 0x4f, 0xa1, 0x0c, 0xba, 0xd5, 0x54, 0x2f, 0xb7, 0x36, 0xed, 0x73, + 0xbb, 0xc3, 0xb2, 0xc5, 0x3c, 0x57, 0x8d, 0x49, 0xba, 0xb5, 0xa9, 0x6e, 0xb7, 0x88, 0xc6, 0x9b, + 0x96, 0xc6, 0xad, 0x48, 0x2f, 0x1f, 0x87, 0xcd, 0x38, 0x59, 0xe5, 0x7a, 0x2f, 0x96, 0xae, 0xa7, + 0x0a, 0xa3, 0x8e, 0x7a, 0xa2, 0x48, 0xda, 0xec, 0x49, 0xe3, 0xdd, 0x43, 0xcb, 0xad, 0x8e, 0xa7, + 0xad, 0x0e, 0x5b, 0xad, 0x90, 0x7a, 0xd2, 0x5f, 0x01, 0xef, 0xd5, 0xaa, 0xa8, 0xaa, 0xd7, 0x45, + 0x7b, 0x69, 0x96, 0x0d, 0xd7, 0x03, 0x61, 0xd2, 0x40, 0xc1, 0xbd, 0x5a, 0x0f, 0x4c, 0x44, 0x72, + 0xb3, 0xb7, 0x99, 0x0f, 0xbb, 0xec, 0x08, 0xaa, 0x57, 0x24, 0xdb, 0x34, 0xda, 0x6f, 0xb3, 0x1e, + 0xb5, 0xae, 0xed, 0x28, 0xfc, 0xe0, 0x5a, 0x15, 0xde, 0xea, 0xcd, 0xa3, 0xcb, 0x00, 0x82, 0x12, + 0x33, 0xcb, 0x3d, 0xca, 0x84, 0x33, 0x93, 0xdc, 0xef, 0xa0, 0xd0, 0x9e, 0xa5, 0xec, 0x46, 0xaf, + 0xd3, 0xe9, 0x0c, 0xb8, 0xf7, 0x1c, 0xcb, 0x06, 0x82, 0xe7, 0x58, 0x08, 0x44, 0x4d, 0x27, 0x7f, + 0xd7, 0x9b, 0xb5, 0x07, 0x53, 0x5f, 0xd3, 0x29, 0x65, 0x8b, 0x0a, 0x35, 0x9d, 0x97, 0x46, 0xa3, + 0x81, 0x76, 0xab, 0x5e, 0xdc, 0x7f, 0x1c, 0x32, 0x83, 0xde, 0xde, 0x5f, 0xef, 0xc5, 0xa2, 0x19, + 0xc5, 0x38, 0x4c, 0xe7, 0x29, 0xf7, 0xcd, 0x28, 0x96, 0x8d, 0x1a, 0x09, 0xcd, 0x28, 0x6d, 0x94, + 0xaa, 0x5e, 0x9d, 0x23, 0x1c, 0x4c, 0xc3, 0xd5, 0x93, 0x4c, 0xbf, 0xea, 0x69, 0xb6, 0x75, 0xec, + 0x9a, 0xeb, 0x90, 0xe1, 0x17, 0x6a, 0xb1, 0xec, 0x89, 0x6d, 0xf1, 0x42, 0x27, 0x06, 0x43, 0xa3, + 0x0e, 0xa5, 0x80, 0x8f, 0x13, 0x6a, 0xae, 0x39, 0x19, 0x2e, 0x0a, 0x88, 0xcb, 0x38, 0x4f, 0xbc, + 0x8b, 0x53, 0x61, 0xb0, 0x45, 0x86, 0x16, 0xa7, 0xa4, 0x06, 0x3a, 0xd4, 0x77, 0x5f, 0xc5, 0xf4, + 0x74, 0x05, 0xfd, 0xce, 0xa3, 0xfb, 0x26, 0xe6, 0xa3, 0x1e, 0x24, 0x3e, 0xd4, 0x6f, 0x00, 0xbd, + 0x2d, 0x2f, 0x9d, 0x7e, 0x1c, 0x30, 0xe5, 0xa2, 0xa1, 0x85, 0x30, 0xad, 0x82, 0x82, 0x5a, 0x27, + 0xb8, 0xc0, 0x7f, 0x0a, 0x2b, 0x5f, 0x50, 0x9b, 0xfc, 0x54, 0x20, 0xa1, 0xa0, 0x6e, 0xa3, 0x28, + 0xcf, 0xb4, 0xd7, 0x41, 0x0f, 0x02, 0xfa, 0xf6, 0xd2, 0x67, 0xad, 0x93, 0x43, 0x3d, 0x67, 0x37, + 0x5d, 0x3a, 0xa7, 0x18, 0x9e, 0x82, 0xee, 0xa6, 0x4b, 0xff, 0x21, 0xc6, 0x7a, 0x2f, 0x16, 0x5f, + 0x18, 0x88, 0x39, 0xbc, 0x6d, 0x4e, 0xf2, 0x3d, 0xc5, 0x15, 0xf2, 0xd6, 0x51, 0xfe, 0xc3, 0x6e, + 0xd0, 0x5c, 0xcf, 0x3d, 0x29, 0x59, 0x02, 0x55, 0xa5, 0xbe, 0x9e, 0xe7, 0xde, 0x7f, 0x52, 0xb2, + 0x11, 0xfa, 0x76, 0xde, 0xbd, 0x30, 0xa4, 0x6c, 0x7f, 0x19, 0xbd, 0x7b, 0xc8, 0x66, 0x63, 0xc8, + 0xa7, 0xc3, 0x1f, 0xb9, 0x17, 0x62, 0xd9, 0x6c, 0x54, 0xff, 0xac, 0xed, 0xdd, 0xa0, 0xc4, 0xe6, + 0x4a, 0xdf, 0x2e, 0xbc, 0x59, 0xcc, 0xc6, 0x3c, 0xe6, 0xe8, 0x4a, 0x9f, 0xf8, 0x7d, 0x54, 0x0b, + 0x88, 0x2b, 0x7d, 0x0e, 0x80, 0xec, 0x4d, 0x4a, 0x00, 0xaf, 0xbd, 0x5a, 0x10, 0xb4, 0xa7, 0x00, + 0x33, 0xeb, 0x6a, 0x7b, 0x75, 0x62, 0x8b, 0xaf, 0xe0, 0x19, 0x1d, 0x21, 0x25, 0x66, 0xdd, 0x36, + 0x65, 0x82, 0x41, 0x56, 0x5f, 0x7c, 0xcf, 0x63, 0x31, 0x9f, 0xc7, 0xe5, 0x0a, 0x05, 0x83, 0xaa, + 0xa5, 0x05, 0x10, 0xc1, 0xe0, 0x05, 0x4d, 0x94, 0x37, 0x8f, 0x39, 0xb9, 0xdc, 0x67, 0x25, 0x5b, + 0xf0, 0x34, 0x07, 0xfc, 0x4d, 0x07, 0xfd, 0x40, 0x6d, 0x86, 0x88, 0x72, 0x8a, 0x35, 0x59, 0xa1, + 0x20, 0xe4, 0xed, 0x40, 0xf1, 0x0d, 0xda, 0x8a, 0xb3, 0x12, 0x9f, 0x0e, 0x4a, 0x2b, 0x18, 0x22, + 0xb2, 0x42, 0x12, 0x46, 0x6d, 0x7f, 0x92, 0xe6, 0x33, 0x6f, 0xdb, 0x9f, 0xd8, 0x5f, 0x70, 0xbc, + 0x45, 0x03, 0x66, 0x7c, 0x97, 0x0f, 0x4d, 0x7e, 0x37, 0x49, 0xbd, 0x99, 0xe9, 0x7d, 0xe8, 0x36, + 0x41, 0x8c, 0xef, 0x7e, 0x12, 0xb9, 0x7a, 0x59, 0x40, 0x0e, 0xd3, 0xe6, 0x0e, 0x9c, 0xcf, 0x95, + 0x43, 0x04, 0x5d, 0x61, 0xd2, 0x8c, 0xaa, 0x42, 0x7e, 0xba, 0xc8, 0x4f, 0x4a, 0x76, 0x9e, 0x66, + 0x50, 0xa2, 0x51, 0x55, 0xaa, 0x5b, 0x72, 0x62, 0x54, 0xf5, 0x71, 0xe6, 0x32, 0x85, 0x90, 0x3a, + 0x1f, 0x52, 0x9e, 0x94, 0x71, 0x82, 0x2f, 0x53, 0x48, 0x1b, 0x6d, 0x8c, 0xd8, 0x49, 0x0b, 0xe0, + 0x26, 0xd2, 0x8f, 0x80, 0x97, 0x69, 0x52, 0x8d, 0x81, 0x9f, 0xc4, 0x65, 0x3c, 0x07, 0x0e, 0x25, + 0x8e, 0x74, 0x85, 0x8c, 0x1c, 0x86, 0x88, 0x74, 0x8a, 0x55, 0x0e, 0xff, 0x30, 0x7a, 0xbf, 0x1e, + 0xe8, 0x21, 0x57, 0xdf, 0xfc, 0x7f, 0x21, 0xfe, 0x58, 0xc8, 0xf0, 0x03, 0x6d, 0x63, 0xcc, 0x4b, + 0x88, 0xe7, 0x8d, 0xed, 0xf7, 0xf4, 0xef, 0x02, 0x7c, 0x32, 0xa8, 0x1b, 0xe4, 0x98, 0xf1, 0xf4, + 0xbc, 0x5e, 0x57, 0xa9, 0x53, 0x2c, 0xd4, 0x20, 0xb6, 0x78, 0x14, 0xf8, 0x4c, 0x81, 0x8f, 0x33, + 0x03, 0x8d, 0x2d, 0x3d, 0x85, 0x22, 0xc3, 0x03, 0x8d, 0xa3, 0x2d, 0x00, 0x62, 0xa0, 0xf1, 0x82, + 0x26, 0xba, 0x6c, 0xf1, 0x04, 0xc2, 0x95, 0x99, 0x40, 0xbf, 0xca, 0x4c, 0x9c, 0x77, 0x04, 0xb2, + 0xe8, 0xfd, 0x23, 0x98, 0xbf, 0x81, 0xb2, 0xba, 0x48, 0x8b, 0xfd, 0x7a, 0x86, 0x8d, 0xf9, 0x02, + 0xbf, 0x45, 0x67, 0x88, 0x91, 0x46, 0x88, 0x34, 0x84, 0x40, 0xcd, 0x50, 0x66, 0x80, 0x83, 0xea, + 0x38, 0x9e, 0x83, 0xf8, 0xe8, 0xc2, 0x70, 0x9d, 0x32, 0x62, 0x41, 0xc4, 0x50, 0x46, 0xc2, 0xd6, + 0xeb, 0x46, 0x86, 0x39, 0x85, 0x59, 0x1d, 0x61, 0xe5, 0x49, 0xbc, 0x9a, 0x43, 0xce, 0x95, 0x49, + 0xb4, 0x09, 0x6b, 0x99, 0xf4, 0xf3, 0xc4, 0x26, 0x6c, 0x1f, 0x3d, 0x2b, 0xe9, 0x76, 0x1e, 0xfc, + 0x09, 0x2b, 0xb9, 0xfc, 0x8b, 0x1e, 0x67, 0x65, 0x86, 0x92, 0x6e, 0xf7, 0xa1, 0x3a, 0x24, 0x91, + 0x74, 0x87, 0x35, 0xac, 0x4f, 0x61, 0x3b, 0x65, 0x78, 0x05, 0xa5, 0x8e, 0x93, 0x17, 0xf3, 0x38, + 0xcd, 0x54, 0x34, 0x7c, 0x11, 0xb0, 0x4d, 0xe8, 0x10, 0x9f, 0xc2, 0xee, 0xab, 0x6b, 0x7d, 0x3c, + 0x3c, 0x5c, 0x42, 0xb4, 0x27, 0xdc, 0x61, 0x9f, 0xd8, 0x13, 0xee, 0xd6, 0x32, 0x4b, 0x35, 0xc3, + 0x0a, 0x6e, 0x25, 0x88, 0x1d, 0x36, 0xc5, 0x1b, 0x44, 0x96, 0x4d, 0x04, 0x12, 0x4b, 0xb5, 0xa0, + 0x82, 0x99, 0xdb, 0x0c, 0xb6, 0x97, 0xe6, 0x71, 0x96, 0xfe, 0x1c, 0xdf, 0x7d, 0xb6, 0xec, 0x34, + 0x04, 0x31, 0xb7, 0xf9, 0x49, 0x9f, 0xab, 0x7d, 0xe0, 0x93, 0xb4, 0x1e, 0xfa, 0x1f, 0x06, 0x9e, + 0x9b, 0x20, 0xba, 0x5d, 0x59, 0xa4, 0x72, 0xf5, 0x8b, 0x41, 0x74, 0x13, 0x3f, 0xd6, 0xed, 0xa2, + 0x18, 0xd7, 0x29, 0xc9, 0x29, 0x24, 0x90, 0x16, 0x7c, 0xf8, 0x69, 0xf8, 0x59, 0x21, 0x9c, 0x38, + 0x59, 0xef, 0xa1, 0x66, 0x9d, 0xd7, 0xd6, 0x63, 0xc9, 0x58, 0xfe, 0xa9, 0xab, 0xb3, 0x0a, 0x4a, + 0x35, 0x53, 0xee, 0x03, 0x47, 0xbd, 0xd3, 0xe2, 0x46, 0x16, 0x58, 0x57, 0x94, 0xe8, 0x9d, 0x61, + 0x0d, 0xb3, 0xbb, 0x63, 0x71, 0xa7, 0x50, 0xb1, 0x6c, 0x09, 0xe2, 0xfa, 0xdb, 0x06, 0x69, 0xcc, + 0xa2, 0x88, 0xdd, 0x1d, 0x9a, 0x36, 0xe9, 0x46, 0xdb, 0xed, 0x76, 0xbe, 0x3a, 0xc0, 0x67, 0xe4, + 0x1e, 0x4b, 0x02, 0x23, 0xd2, 0x8d, 0x00, 0x6e, 0xed, 0x7e, 0x96, 0x2c, 0x9e, 0x26, 0x71, 0xc5, + 0x4f, 0xe2, 0x55, 0xc6, 0xe2, 0xa9, 0x98, 0xd7, 0xf1, 0xee, 0x67, 0xc3, 0x8c, 0x6c, 0x88, 0xda, + 0xfd, 0xa4, 0x60, 0xb3, 0xb2, 0x53, 0x7f, 0xc1, 0x4b, 0x5d, 0x2d, 0xbc, 0x8b, 0x72, 0x24, 0x51, + 0x5e, 0x7c, 0xad, 0xf0, 0x5e, 0x18, 0x32, 0xaf, 0x44, 0x49, 0x91, 0x48, 0x43, 0x6e, 0xf9, 0x74, + 0x9c, 0x04, 0xe4, 0x76, 0x80, 0x30, 0x9f, 0x49, 0x90, 0xbf, 0x37, 0x7f, 0x84, 0x82, 0xab, 0x0f, + 0xf7, 0x6e, 0xf8, 0x74, 0x6d, 0x68, 0x64, 0x7f, 0xfb, 0x6c, 0xb3, 0x27, 0x6d, 0x16, 0x6e, 0xea, + 0xe3, 0xc1, 0x47, 0x50, 0x79, 0xde, 0x6f, 0xae, 0x85, 0x23, 0x23, 0x25, 0x16, 0x6e, 0x6d, 0xca, + 0x04, 0x7a, 0x2d, 0x7b, 0x31, 0x4d, 0xb9, 0x92, 0x35, 0x17, 0x76, 0x37, 0xda, 0x06, 0xda, 0x14, + 0x51, 0x2b, 0x9a, 0x36, 0x63, 0x79, 0xcd, 0x4c, 0xd8, 0x6c, 0x96, 0x81, 0x82, 0x4e, 0x21, 0x96, + 0xdf, 0x78, 0xdb, 0x6a, 0xdb, 0xf2, 0x82, 0xc4, 0x58, 0x1e, 0x54, 0x30, 0x69, 0x64, 0x8d, 0xc9, + 0x33, 0x88, 0xe6, 0xc1, 0xae, 0xb5, 0xcd, 0x38, 0x00, 0x91, 0x46, 0x7a, 0x41, 0xf3, 0x1a, 0x56, + 0x2d, 0xde, 0x87, 0xe6, 0x49, 0xe0, 0x2f, 0xe2, 0x08, 0x65, 0x4b, 0x4c, 0xbc, 0x86, 0xe5, 0xc1, + 0xcc, 0x3a, 0x01, 0x79, 0x78, 0xbe, 0x3a, 0x98, 0xe2, 0x75, 0x02, 0xd6, 0x17, 0x0c, 0xb1, 0x4e, + 0xa0, 0x58, 0xb7, 0xe9, 0xf4, 0xe7, 0x7f, 0x0f, 0xe3, 0xca, 0x54, 0xce, 0xd3, 0x74, 0x5e, 0x30, + 0xd4, 0x74, 0x94, 0x82, 0xfb, 0x48, 0xed, 0x8f, 0x0b, 0x7b, 0x1e, 0xa9, 0xef, 0xa3, 0xc2, 0x0f, + 0xba, 0x30, 0xe9, 0xe1, 0xf9, 0xed, 0xff, 0xf9, 0xe6, 0xc6, 0xe0, 0xeb, 0x6f, 0x6e, 0x0c, 0xfe, + 0xef, 0x9b, 0x1b, 0x83, 0x5f, 0x7c, 0x7b, 0xe3, 0x9d, 0xaf, 0xbf, 0xbd, 0xf1, 0xce, 0xff, 0x7e, + 0x7b, 0xe3, 0x9d, 0xaf, 0xde, 0x55, 0x7f, 0x7d, 0xf1, 0xcd, 0xaf, 0x88, 0xbf, 0xa1, 0xf8, 0xec, + 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x4f, 0x9f, 0x53, 0xa1, 0x71, 0x00, 0x00, } // This is a compile-time assertion to ensure that this generated file @@ -407,6 +417,7 @@ type ClientCommandsHandler interface { ObjectCreate(context.Context, *pb.RpcObjectCreateRequest) *pb.RpcObjectCreateResponse ObjectCreateBookmark(context.Context, *pb.RpcObjectCreateBookmarkRequest) *pb.RpcObjectCreateBookmarkResponse ObjectCreateFromUrl(context.Context, *pb.RpcObjectCreateFromUrlRequest) *pb.RpcObjectCreateFromUrlResponse + ObjectChatAdd(context.Context, *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse // ObjectCreateSet just creates the new set, without adding the link to it from some other page ObjectCreateSet(context.Context, *pb.RpcObjectCreateSetRequest) *pb.RpcObjectCreateSetResponse ObjectGraph(context.Context, *pb.RpcObjectGraphRequest) *pb.RpcObjectGraphResponse @@ -657,6 +668,15 @@ type ClientCommandsHandler interface { DeviceSetName(context.Context, *pb.RpcDeviceSetNameRequest) *pb.RpcDeviceSetNameResponse DeviceList(context.Context, *pb.RpcDeviceListRequest) *pb.RpcDeviceListResponse DeviceNetworkStateSet(context.Context, *pb.RpcDeviceNetworkStateSetRequest) *pb.RpcDeviceNetworkStateSetResponse + // Chats dummy impl + ChatAddMessage(context.Context, *pb.RpcChatAddMessageRequest) *pb.RpcChatAddMessageResponse + ChatEditMessageContent(context.Context, *pb.RpcChatEditMessageContentRequest) *pb.RpcChatEditMessageContentResponse + ChatToggleMessageReaction(context.Context, *pb.RpcChatToggleMessageReactionRequest) *pb.RpcChatToggleMessageReactionResponse + ChatDeleteMessage(context.Context, *pb.RpcChatDeleteMessageRequest) *pb.RpcChatDeleteMessageResponse + ChatGetMessages(context.Context, *pb.RpcChatGetMessagesRequest) *pb.RpcChatGetMessagesResponse + ChatGetMessagesByIds(context.Context, *pb.RpcChatGetMessagesByIdsRequest) *pb.RpcChatGetMessagesByIdsResponse + ChatSubscribeLastMessages(context.Context, *pb.RpcChatSubscribeLastMessagesRequest) *pb.RpcChatSubscribeLastMessagesResponse + ChatUnsubscribe(context.Context, *pb.RpcChatUnsubscribeRequest) *pb.RpcChatUnsubscribeResponse } func registerClientCommandsHandler(srv ClientCommandsHandler) { @@ -1683,6 +1703,26 @@ func ObjectCreateFromUrl(b []byte) (resp []byte) { return resp } +func ObjectChatAdd(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcObjectChatAddResponse{Error: &pb.RpcObjectChatAddResponseError{Code: pb.RpcObjectChatAddResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcObjectChatAddRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcObjectChatAddResponse{Error: &pb.RpcObjectChatAddResponseError{Code: pb.RpcObjectChatAddResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.ObjectChatAdd(context.Background(), in).Marshal() + return resp +} + func ObjectCreateSet(b []byte) (resp []byte) { defer func() { if PanicHandler != nil { @@ -5683,6 +5723,166 @@ func DeviceNetworkStateSet(b []byte) (resp []byte) { return resp } +func ChatAddMessage(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcChatAddMessageResponse{Error: &pb.RpcChatAddMessageResponseError{Code: pb.RpcChatAddMessageResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcChatAddMessageRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcChatAddMessageResponse{Error: &pb.RpcChatAddMessageResponseError{Code: pb.RpcChatAddMessageResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.ChatAddMessage(context.Background(), in).Marshal() + return resp +} + +func ChatEditMessageContent(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcChatEditMessageContentResponse{Error: &pb.RpcChatEditMessageContentResponseError{Code: pb.RpcChatEditMessageContentResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcChatEditMessageContentRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcChatEditMessageContentResponse{Error: &pb.RpcChatEditMessageContentResponseError{Code: pb.RpcChatEditMessageContentResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.ChatEditMessageContent(context.Background(), in).Marshal() + return resp +} + +func ChatToggleMessageReaction(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcChatToggleMessageReactionResponse{Error: &pb.RpcChatToggleMessageReactionResponseError{Code: pb.RpcChatToggleMessageReactionResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcChatToggleMessageReactionRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcChatToggleMessageReactionResponse{Error: &pb.RpcChatToggleMessageReactionResponseError{Code: pb.RpcChatToggleMessageReactionResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.ChatToggleMessageReaction(context.Background(), in).Marshal() + return resp +} + +func ChatDeleteMessage(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcChatDeleteMessageResponse{Error: &pb.RpcChatDeleteMessageResponseError{Code: pb.RpcChatDeleteMessageResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcChatDeleteMessageRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcChatDeleteMessageResponse{Error: &pb.RpcChatDeleteMessageResponseError{Code: pb.RpcChatDeleteMessageResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.ChatDeleteMessage(context.Background(), in).Marshal() + return resp +} + +func ChatGetMessages(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcChatGetMessagesResponse{Error: &pb.RpcChatGetMessagesResponseError{Code: pb.RpcChatGetMessagesResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcChatGetMessagesRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcChatGetMessagesResponse{Error: &pb.RpcChatGetMessagesResponseError{Code: pb.RpcChatGetMessagesResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.ChatGetMessages(context.Background(), in).Marshal() + return resp +} + +func ChatGetMessagesByIds(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcChatGetMessagesByIdsResponse{Error: &pb.RpcChatGetMessagesByIdsResponseError{Code: pb.RpcChatGetMessagesByIdsResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcChatGetMessagesByIdsRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcChatGetMessagesByIdsResponse{Error: &pb.RpcChatGetMessagesByIdsResponseError{Code: pb.RpcChatGetMessagesByIdsResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.ChatGetMessagesByIds(context.Background(), in).Marshal() + return resp +} + +func ChatSubscribeLastMessages(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcChatSubscribeLastMessagesResponse{Error: &pb.RpcChatSubscribeLastMessagesResponseError{Code: pb.RpcChatSubscribeLastMessagesResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcChatSubscribeLastMessagesRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcChatSubscribeLastMessagesResponse{Error: &pb.RpcChatSubscribeLastMessagesResponseError{Code: pb.RpcChatSubscribeLastMessagesResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.ChatSubscribeLastMessages(context.Background(), in).Marshal() + return resp +} + +func ChatUnsubscribe(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcChatUnsubscribeResponse{Error: &pb.RpcChatUnsubscribeResponseError{Code: pb.RpcChatUnsubscribeResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcChatUnsubscribeRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcChatUnsubscribeResponse{Error: &pb.RpcChatUnsubscribeResponseError{Code: pb.RpcChatUnsubscribeResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.ChatUnsubscribe(context.Background(), in).Marshal() + return resp +} + var PanicHandler func(v interface{}) func CommandAsync(cmd string, data []byte, callback func(data []byte)) { @@ -5791,6 +5991,8 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) { cd = ObjectCreateBookmark(data) case "ObjectCreateFromUrl": cd = ObjectCreateFromUrl(data) + case "ObjectChatAdd": + cd = ObjectChatAdd(data) case "ObjectCreateSet": cd = ObjectCreateSet(data) case "ObjectGraph": @@ -6191,6 +6393,22 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) { cd = DeviceList(data) case "DeviceNetworkStateSet": cd = DeviceNetworkStateSet(data) + case "ChatAddMessage": + cd = ChatAddMessage(data) + case "ChatEditMessageContent": + cd = ChatEditMessageContent(data) + case "ChatToggleMessageReaction": + cd = ChatToggleMessageReaction(data) + case "ChatDeleteMessage": + cd = ChatDeleteMessage(data) + case "ChatGetMessages": + cd = ChatGetMessages(data) + case "ChatGetMessagesByIds": + cd = ChatGetMessagesByIds(data) + case "ChatSubscribeLastMessages": + cd = ChatSubscribeLastMessages(data) + case "ChatUnsubscribe": + cd = ChatUnsubscribe(data) default: log.Errorf("unknown command type: %s\n", cmd) } @@ -6927,6 +7145,20 @@ func (h *ClientCommandsHandlerProxy) ObjectCreateFromUrl(ctx context.Context, re call, _ := actualCall(ctx, req) return call.(*pb.RpcObjectCreateFromUrlResponse) } +func (h *ClientCommandsHandlerProxy) ObjectChatAdd(ctx context.Context, req *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.ObjectChatAdd(ctx, req.(*pb.RpcObjectChatAddRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "ObjectChatAdd", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcObjectChatAddResponse) +} func (h *ClientCommandsHandlerProxy) ObjectCreateSet(ctx context.Context, req *pb.RpcObjectCreateSetRequest) *pb.RpcObjectCreateSetResponse { actualCall := func(ctx context.Context, req any) (any, error) { return h.client.ObjectCreateSet(ctx, req.(*pb.RpcObjectCreateSetRequest)), nil @@ -9727,3 +9959,115 @@ func (h *ClientCommandsHandlerProxy) DeviceNetworkStateSet(ctx context.Context, call, _ := actualCall(ctx, req) return call.(*pb.RpcDeviceNetworkStateSetResponse) } +func (h *ClientCommandsHandlerProxy) ChatAddMessage(ctx context.Context, req *pb.RpcChatAddMessageRequest) *pb.RpcChatAddMessageResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.ChatAddMessage(ctx, req.(*pb.RpcChatAddMessageRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "ChatAddMessage", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcChatAddMessageResponse) +} +func (h *ClientCommandsHandlerProxy) ChatEditMessageContent(ctx context.Context, req *pb.RpcChatEditMessageContentRequest) *pb.RpcChatEditMessageContentResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.ChatEditMessageContent(ctx, req.(*pb.RpcChatEditMessageContentRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "ChatEditMessageContent", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcChatEditMessageContentResponse) +} +func (h *ClientCommandsHandlerProxy) ChatToggleMessageReaction(ctx context.Context, req *pb.RpcChatToggleMessageReactionRequest) *pb.RpcChatToggleMessageReactionResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.ChatToggleMessageReaction(ctx, req.(*pb.RpcChatToggleMessageReactionRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "ChatToggleMessageReaction", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcChatToggleMessageReactionResponse) +} +func (h *ClientCommandsHandlerProxy) ChatDeleteMessage(ctx context.Context, req *pb.RpcChatDeleteMessageRequest) *pb.RpcChatDeleteMessageResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.ChatDeleteMessage(ctx, req.(*pb.RpcChatDeleteMessageRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "ChatDeleteMessage", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcChatDeleteMessageResponse) +} +func (h *ClientCommandsHandlerProxy) ChatGetMessages(ctx context.Context, req *pb.RpcChatGetMessagesRequest) *pb.RpcChatGetMessagesResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.ChatGetMessages(ctx, req.(*pb.RpcChatGetMessagesRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "ChatGetMessages", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcChatGetMessagesResponse) +} +func (h *ClientCommandsHandlerProxy) ChatGetMessagesByIds(ctx context.Context, req *pb.RpcChatGetMessagesByIdsRequest) *pb.RpcChatGetMessagesByIdsResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.ChatGetMessagesByIds(ctx, req.(*pb.RpcChatGetMessagesByIdsRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "ChatGetMessagesByIds", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcChatGetMessagesByIdsResponse) +} +func (h *ClientCommandsHandlerProxy) ChatSubscribeLastMessages(ctx context.Context, req *pb.RpcChatSubscribeLastMessagesRequest) *pb.RpcChatSubscribeLastMessagesResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.ChatSubscribeLastMessages(ctx, req.(*pb.RpcChatSubscribeLastMessagesRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "ChatSubscribeLastMessages", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcChatSubscribeLastMessagesResponse) +} +func (h *ClientCommandsHandlerProxy) ChatUnsubscribe(ctx context.Context, req *pb.RpcChatUnsubscribeRequest) *pb.RpcChatUnsubscribeResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.ChatUnsubscribe(ctx, req.(*pb.RpcChatUnsubscribeRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "ChatUnsubscribe", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcChatUnsubscribeResponse) +} diff --git a/core/anytype/config/config.go b/core/anytype/config/config.go index 809722b91..76422e191 100644 --- a/core/anytype/config/config.go +++ b/core/anytype/config/config.go @@ -6,8 +6,10 @@ import ( "net" "os" "path/filepath" + "runtime" "strings" + anystore "github.com/anyproto/any-store" "github.com/anyproto/any-sync/app" //nolint:misspell "github.com/anyproto/any-sync/commonspace/config" @@ -67,7 +69,9 @@ type Config struct { PeferYamuxTransport bool SpaceStorageMode storage.SpaceStorageMode NetworkMode pb.RpcAccountNetworkMode - NetworkCustomConfigFilePath string `json:",omitempty"` // not saved to config + NetworkCustomConfigFilePath string `json:",omitempty"` // not saved to config + SqliteTempPath string `json:",omitempty"` // not saved to config + AnyStoreConfig *anystore.Config `json:",omitempty"` // not saved to config RepoPath string AnalyticsId string @@ -179,6 +183,16 @@ func (c *Config) initFromFileAndEnv(repoPath string) error { return fmt.Errorf("repo is missing") } c.RepoPath = repoPath + c.AnyStoreConfig = &anystore.Config{} + if runtime.GOOS == "android" { + split := strings.Split(repoPath, "/files/") + if len(split) == 1 { + return fmt.Errorf("failed to split repo path: %s", repoPath) + } + c.SqliteTempPath = filepath.Join(split[0], "cache") + c.AnyStoreConfig.SQLiteConnectionOptions = make(map[string]string) + c.AnyStoreConfig.SQLiteConnectionOptions["temp_store_directory"] = "'" + c.SqliteTempPath + "'" + } if !c.DisableFileConfig { var confRequired ConfigRequired @@ -284,6 +298,14 @@ func (c *Config) GetSpaceStorePath() string { return filepath.Join(c.RepoPath, "spaceStore.db") } +func (c *Config) GetTempDirPath() string { + return c.SqliteTempPath +} + +func (c *Config) GetAnyStoreConfig() *anystore.Config { + return c.AnyStoreConfig +} + func (c *Config) IsNewAccount() bool { return c.NewAccount } diff --git a/core/application/account_select.go b/core/application/account_select.go index 02c069568..05e0b70cc 100644 --- a/core/application/account_select.go +++ b/core/application/account_select.go @@ -5,6 +5,7 @@ import ( "errors" "os" "path/filepath" + "runtime" trace2 "runtime/trace" "strings" @@ -40,9 +41,10 @@ func (s *Service) AccountSelect(ctx context.Context, req *pb.RpcAccountSelectReq return nil, ErrEmptyAccountID } - s.traceRecorder.start() - defer s.traceRecorder.stop() - + if runtime.GOOS != "android" && runtime.GOOS != "ios" { + s.traceRecorder.start() + defer s.traceRecorder.stop() + } s.cancelStartIfInProcess() s.lock.Lock() defer s.lock.Unlock() diff --git a/core/application/profiler.go b/core/application/profiler.go index 22e3b0bca..9007cf1fd 100644 --- a/core/application/profiler.go +++ b/core/application/profiler.go @@ -13,6 +13,7 @@ import ( "sync" "time" + "github.com/klauspost/compress/flate" exptrace "golang.org/x/exp/trace" "github.com/anyproto/anytype-heart/util/debug" @@ -91,6 +92,9 @@ type zipFile struct { func createZipArchive(w io.Writer, files []zipFile) error { zipw := zip.NewWriter(w) + zipw.RegisterCompressor(zip.Deflate, func(w io.Writer) (io.WriteCloser, error) { + return flate.NewWriter(w, flate.BestSpeed) + }) err := func() error { for _, file := range files { f, err := zipw.Create(file.name) @@ -107,8 +111,8 @@ func createZipArchive(w io.Writer, files []zipFile) error { return errors.Join(err, zipw.Close()) } -func (s *Service) SaveLoginTrace() (string, error) { - return s.traceRecorder.save() +func (s *Service) SaveLoginTrace(dir string) (string, error) { + return s.traceRecorder.save(dir) } // traceRecorder is a helper to start and stop flight trace recorder @@ -118,7 +122,8 @@ type traceRecorder struct { lastRecordedBuf *bytes.Buffer // contains zip archive of trace } -func (r *traceRecorder) save() (string, error) { +// empty dir means use system temp dir +func (r *traceRecorder) save(dir string) (string, error) { r.lock.Lock() defer r.lock.Unlock() @@ -138,7 +143,7 @@ func (r *traceRecorder) save() (string, error) { traceReader = buf } - f, err := os.CreateTemp("", "account-select-trace-*.zip") + f, err := os.CreateTemp(dir, "account-select-trace-*.zip") if err != nil { return "", fmt.Errorf("create temp file: %w", err) } diff --git a/core/block/editor/state/state.go b/core/block/editor/state/state.go index a901a9e09..498833e40 100644 --- a/core/block/editor/state/state.go +++ b/core/block/editor/state/state.go @@ -8,7 +8,6 @@ import ( "time" "github.com/gogo/protobuf/types" - "github.com/ipfs/go-cid" "github.com/anyproto/anytype-heart/core/block/simple" "github.com/anyproto/anytype-heart/core/block/undo" @@ -1094,11 +1093,17 @@ func (s *State) FileRelationKeys() []string { var keys []string for _, rel := range s.GetRelationLinks() { // coverId can contain both hash or predefined cover id - if rel.Format == model.RelationFormat_file || rel.Key == bundle.RelationKeyCoverId.String() { + if rel.Format == model.RelationFormat_file { if slice.FindPos(keys, rel.Key) == -1 { keys = append(keys, rel.Key) } } + if rel.Key == bundle.RelationKeyCoverId.String() { + coverType := pbtypes.GetInt64(s.Details(), bundle.RelationKeyCoverType.String()) + if (coverType == 1 || coverType == 4) && slice.FindPos(keys, rel.Key) == -1 { + keys = append(keys, rel.Key) + } + } } return keys } @@ -1130,15 +1135,6 @@ func (s *State) ModifyLinkedFilesInDetails(modifier func(id string) string) { } for _, key := range s.FileRelationKeys() { - if key == bundle.RelationKeyCoverId.String() { - v := pbtypes.GetString(details, key) - _, err := cid.Decode(v) - if err != nil { - // this is an exception cause coverId can contain not a file hash but color - continue - } - } - s.modifyIdsInDetail(details, key, modifier) } } diff --git a/core/block/editor/state/state_test.go b/core/block/editor/state/state_test.go index 6ed5b7a21..919683fad 100644 --- a/core/block/editor/state/state_test.go +++ b/core/block/editor/state/state_test.go @@ -2820,3 +2820,137 @@ func TestAddBundledRealtionLinks(t *testing.T) { assert.Equal(t, want, st) }) } + +func TestState_FileRelationKeys(t *testing.T) { + t.Run("no file relations", func(t *testing.T) { + // given + s := &State{} + + // when + keys := s.FileRelationKeys() + + // then + assert.Empty(t, keys) + }) + t.Run("there are file relations", func(t *testing.T) { + // given + s := &State{ + relationLinks: pbtypes.RelationLinks{ + {Format: model.RelationFormat_file, Key: "fileKey1"}, + {Format: model.RelationFormat_file, Key: "fileKey2"}, + }, + } + + // when + keys := s.FileRelationKeys() + + // then + expectedKeys := []string{"fileKey1", "fileKey2"} + assert.ElementsMatch(t, keys, expectedKeys) + }) + t.Run("duplicated file relations", func(t *testing.T) { + // given + s := &State{ + relationLinks: pbtypes.RelationLinks{ + {Format: model.RelationFormat_file, Key: "fileKey1"}, + {Format: model.RelationFormat_file, Key: "fileKey1"}, + }, + } + + // when + keys := s.FileRelationKeys() + + // then + expectedKeys := []string{"fileKey1"} + assert.ElementsMatch(t, keys, expectedKeys) + }) + t.Run("coverId relation", func(t *testing.T) { + // given + s := &State{ + relationLinks: pbtypes.RelationLinks{ + {Key: bundle.RelationKeyCoverId.String()}, + }, + details: &types.Struct{Fields: map[string]*types.Value{ + bundle.RelationKeyCoverType.String(): pbtypes.Int64(1), + }, + }, + } + + // when + keys := s.FileRelationKeys() + + // then + expectedKeys := []string{bundle.RelationKeyCoverId.String()} + assert.ElementsMatch(t, keys, expectedKeys) + }) + t.Run("skip coverId relation", func(t *testing.T) { + // given + s := &State{ + relationLinks: pbtypes.RelationLinks{ + {Key: bundle.RelationKeyCoverId.String()}, + }, + details: &types.Struct{Fields: map[string]*types.Value{ + bundle.RelationKeyCoverType.String(): pbtypes.Int64(2), + }, + }, + } + + // when + keys := s.FileRelationKeys() + + // then + assert.Len(t, keys, 0) + }) + t.Run("skip gradient coverId relation", func(t *testing.T) { + // given + s := &State{ + relationLinks: pbtypes.RelationLinks{ + {Key: bundle.RelationKeyCoverId.String()}, + }, + details: &types.Struct{Fields: map[string]*types.Value{ + bundle.RelationKeyCoverType.String(): pbtypes.Int64(3), + }, + }, + } + + // when + keys := s.FileRelationKeys() + + // then + assert.Len(t, keys, 0) + }) + t.Run("mixed relations", func(t *testing.T) { + // given + s := &State{ + relationLinks: pbtypes.RelationLinks{ + {Format: model.RelationFormat_file, Key: "fileKey1"}, + {Key: bundle.RelationKeyCoverId.String()}, + }, + details: &types.Struct{Fields: map[string]*types.Value{ + bundle.RelationKeyCoverType.String(): pbtypes.Int64(4), + }, + }, + } + + // when + keys := s.FileRelationKeys() + + // then + expectedKeys := []string{"fileKey1", bundle.RelationKeyCoverId.String()} + assert.ElementsMatch(t, keys, expectedKeys, "Expected both file keys and cover ID") + }) + t.Run("coverType not in details", func(t *testing.T) { + // given + s := &State{ + relationLinks: pbtypes.RelationLinks{ + {Key: bundle.RelationKeyCoverId.String()}, + }, + } + + // when + keys := s.FileRelationKeys() + + // then + assert.Len(t, keys, 0) + }) +} diff --git a/core/block/import/common/common.go b/core/block/import/common/common.go index 5c3b5b926..e4a0ce912 100644 --- a/core/block/import/common/common.go +++ b/core/block/import/common/common.go @@ -311,6 +311,10 @@ func getNewObjectsIDForRelation(objectsIDs []string, oldIDtoNew map[string]strin continue } newTarget = addr.MissingObject + _, err := cid.Decode(val) // this can be url, because for notion import we store url for following upload + if err != nil { + newTarget = val + } } objectsIDs[i] = newTarget } diff --git a/core/block/import/common/error.go b/core/block/import/common/error.go index c90ae18dd..c4ab63fe8 100644 --- a/core/block/import/common/error.go +++ b/core/block/import/common/error.go @@ -79,7 +79,7 @@ func (ce *ConvertError) GetResultError(importType model.ImportType) error { case errors.Is(e, ErrFailedToReceiveListOfObjects): return ErrFailedToReceiveListOfObjects case errors.Is(e, ErrFileLoad): - return e + return fmt.Errorf("import type: %s: %w", importType.String(), e) case errors.Is(e, list.ErrInsufficientPermissions): return e case errors.Is(e, ErrNoObjectsToImport): diff --git a/core/block/import/common/objectcreator/objectcreator.go b/core/block/import/common/objectcreator/objectcreator.go index 65d91d3af..2b94e51ca 100644 --- a/core/block/import/common/objectcreator/objectcreator.go +++ b/core/block/import/common/objectcreator/objectcreator.go @@ -32,6 +32,7 @@ import ( "github.com/anyproto/anytype-heart/pkg/lib/logging" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/space" + "github.com/anyproto/anytype-heart/util/anyerror" "github.com/anyproto/anytype-heart/util/pbtypes" ) @@ -315,7 +316,7 @@ func (oc *ObjectCreator) deleteFile(hash string) { if len(inboundLinks) == 0 { err = oc.objectDeleter.DeleteObject(hash) if err != nil { - log.With("file", hash).Errorf("failed to delete file: %s", err) + log.With("file", hash).Errorf("failed to delete file: %s", anyerror.CleanupError(err)) } } } diff --git a/core/block/import/common/syncer/icon.go b/core/block/import/common/syncer/icon.go index d2a0eb186..3c66b56fd 100644 --- a/core/block/import/common/syncer/icon.go +++ b/core/block/import/common/syncer/icon.go @@ -3,6 +3,7 @@ package syncer import ( "context" "fmt" + "os" "strings" "github.com/ipfs/go-cid" @@ -47,6 +48,9 @@ func (s *IconSyncer) Sync(id domain.FullID, newIdsSet map[string]struct{}, b sim if uplErr != nil { return fmt.Errorf("%w: %s", common.ErrFileLoad, uplErr.Error()) } + if os.IsNotExist(err) { + return err + } return fmt.Errorf("%w: %s", common.ErrFileLoad, err.Error()) } if newId == iconImage { diff --git a/core/block/import/common/workerpool/workerpool.go b/core/block/import/common/workerpool/workerpool.go index 385975211..3238acc63 100644 --- a/core/block/import/common/workerpool/workerpool.go +++ b/core/block/import/common/workerpool/workerpool.go @@ -27,9 +27,9 @@ func NewPool(numWorkers int) *WorkerPool { func (p *WorkerPool) AddWork(t ITask) bool { select { - case p.tasks <- t: case <-p.quit: return true + case p.tasks <- t: } return false } @@ -50,9 +50,9 @@ func (p *WorkerPool) works(data interface{}, wg *sync.WaitGroup) { defer wg.Done() for task := range p.tasks { select { - case p.results <- task.Execute(data): case <-p.quit: return + case p.results <- task.Execute(data): } } } diff --git a/core/block/import/notion/api/block/link.go b/core/block/import/notion/api/block/link.go index f0d9e9e24..da399fca4 100644 --- a/core/block/import/notion/api/block/link.go +++ b/core/block/import/notion/api/block/link.go @@ -5,7 +5,6 @@ import ( "encoding/hex" "fmt" "regexp" - "strings" "github.com/globalsign/mgo/bson" "golang.org/x/exp/slices" @@ -345,7 +344,7 @@ func getTargetBlock(importContext *api.NotionImportContext, pageIDToName, notion // fallback to just match by title var idsWithGivenName []string for id, name := range pageIDToName { - if strings.EqualFold(name, title) { + if name == title { idsWithGivenName = append(idsWithGivenName, id) } } diff --git a/core/block/import/notion/api/commonobjects.go b/core/block/import/notion/api/commonobjects.go index 29882ecb5..6183d5719 100644 --- a/core/block/import/notion/api/commonobjects.go +++ b/core/block/import/notion/api/commonobjects.go @@ -3,12 +3,15 @@ package api import ( "encoding/json" "strings" + "sync" "time" "github.com/globalsign/mgo/bson" "github.com/gogo/protobuf/types" + "github.com/anyproto/anytype-heart/core/block/import/notion/api/files" "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/logging" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/util/pbtypes" ) @@ -306,6 +309,21 @@ func SetIcon(details map[string]*types.Value, icon *Icon) *model.RelationLink { return nil } +func SetCover(details map[string]*types.Value, cover *FileObject) { + if cover == nil || details == nil { + return + } + if cover.Type == External { + details[bundle.RelationKeyCoverId.String()] = pbtypes.String(cover.External.URL) + details[bundle.RelationKeyCoverType.String()] = pbtypes.Float64(1) + } + + if cover.Type == File { + details[bundle.RelationKeyCoverId.String()] = pbtypes.String(cover.File.URL) + details[bundle.RelationKeyCoverType.String()] = pbtypes.Float64(1) + } +} + type userType string // User represent User Object object from Notion https://developers.notion.com/reference/user @@ -341,3 +359,79 @@ func RichTextToDescription(rt []*RichText) string { } return richText.String() } + +type relationUploadData struct { + fileDownloader files.Downloader + + details map[string]*types.Value + mu sync.Mutex + + tasks []func() + wg sync.WaitGroup +} + +type relationFileMetaData struct { + relationKey string + url string + idxInDetails int +} + +func UploadFileRelationLocally(fileDownloader files.Downloader, details map[string]*types.Value, relationLinks []*model.RelationLink) { + data := &relationUploadData{fileDownloader: fileDownloader, details: details} + for _, relationLink := range relationLinks { + if relationLink.Format == model.RelationFormat_file { + fileUrl := details[relationLink.Key].GetStringValue() + if fileUrl == "" { + handleListValue(data, relationLink.Key) + } + if fileUrl != "" { + fileMetaData := &relationFileMetaData{relationKey: relationLink.Key, url: fileUrl} + stop := queueTaskWithFileDownload(data, fileMetaData) + if stop { + break + } + } + } + } + for _, task := range data.tasks { + go task() + } + data.wg.Wait() +} + +func handleListValue(data *relationUploadData, relationKey string) { + fileUrls := pbtypes.GetStringListValue(data.details[relationKey]) + for i, url := range fileUrls { + fileMetaData := &relationFileMetaData{relationKey, url, i} + stop := queueTaskWithFileDownload(data, fileMetaData) + if stop { + break + } + } +} + +func queueTaskWithFileDownload(data *relationUploadData, fileMetaData *relationFileMetaData) bool { + file, stop := data.fileDownloader.QueueFileForDownload(fileMetaData.url) + if stop { + return true + } + data.wg.Add(1) + data.tasks = append(data.tasks, func() { + defer data.wg.Done() + localPath, err := file.WaitForLocalPath() + if err != nil { + logging.Logger("notion").Errorf("failed to download file: %s", err) + } + data.mu.Lock() + defer data.mu.Unlock() + switch data.details[fileMetaData.relationKey].Kind.(type) { + case *types.Value_StringValue: + data.details[fileMetaData.relationKey] = pbtypes.String(localPath) + case *types.Value_ListValue: + fileUrlsList := pbtypes.GetStringListValue(data.details[fileMetaData.relationKey]) + fileUrlsList[fileMetaData.idxInDetails] = localPath + data.details[fileMetaData.relationKey] = pbtypes.StringList(fileUrlsList) + } + }) + return false +} diff --git a/core/block/import/notion/api/commonobjects_test.go b/core/block/import/notion/api/commonobjects_test.go index 38385d252..e0c07a793 100644 --- a/core/block/import/notion/api/commonobjects_test.go +++ b/core/block/import/notion/api/commonobjects_test.go @@ -4,8 +4,10 @@ import ( "testing" "time" + "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) @@ -257,3 +259,66 @@ func Test_GetFileBlockVideo(t *testing.T) { assert.Equal(t, imageBlock.GetFile().Name, "https:/example.ru/") assert.Equal(t, imageBlock.GetFile().Type, model.BlockContentFile_Video) } + +func TestSetCover(t *testing.T) { + t.Run("cover is nil", func(t *testing.T) { + // given + details := make(map[string]*types.Value, 0) + + // when + SetCover(details, nil) + + // then + assert.Empty(t, details) + }) + t.Run("details are nil", func(t *testing.T) { + // given + var details map[string]*types.Value + + // when + SetCover(details, &FileObject{ + Name: "filename", + Type: External, + External: FileProperty{ + URL: "url", + }, + }) + + // then + assert.Empty(t, details) + }) + t.Run("external type", func(t *testing.T) { + // given + details := make(map[string]*types.Value, 0) + + // when + SetCover(details, &FileObject{ + Name: "filename", + Type: External, + External: FileProperty{ + URL: "url", + }, + }) + + // then + assert.Equal(t, "url", details[bundle.RelationKeyCoverId.String()].GetStringValue()) + assert.Equal(t, float64(1), details[bundle.RelationKeyCoverType.String()].GetNumberValue()) + }) + t.Run("file type", func(t *testing.T) { + // given + details := make(map[string]*types.Value, 0) + + // when + SetCover(details, &FileObject{ + Name: "filename", + Type: File, + File: FileProperty{ + URL: "url", + }, + }) + + // then + assert.Equal(t, "url", details[bundle.RelationKeyCoverId.String()].GetStringValue()) + assert.Equal(t, float64(1), details[bundle.RelationKeyCoverType.String()].GetNumberValue()) + }) +} diff --git a/core/block/import/notion/api/context.go b/core/block/import/notion/api/context.go index c9e7cc6d1..feb4ef140 100644 --- a/core/block/import/notion/api/context.go +++ b/core/block/import/notion/api/context.go @@ -1,6 +1,8 @@ package api -import "sync" +import ( + "sync" +) type PageTree struct { ParentPageToChildIDs map[string][]string diff --git a/core/block/import/notion/api/database/database.go b/core/block/import/notion/api/database/database.go index eec971e53..94149146d 100644 --- a/core/block/import/notion/api/database/database.go +++ b/core/block/import/notion/api/database/database.go @@ -8,12 +8,14 @@ import ( "github.com/globalsign/mgo/bson" "github.com/gogo/protobuf/types" "github.com/google/uuid" + "github.com/samber/lo" "github.com/anyproto/anytype-heart/core/block/collection" "github.com/anyproto/anytype-heart/core/block/editor/state" "github.com/anyproto/anytype-heart/core/block/editor/template" "github.com/anyproto/anytype-heart/core/block/import/common" "github.com/anyproto/anytype-heart/core/block/import/notion/api" + "github.com/anyproto/anytype-heart/core/block/import/notion/api/files" "github.com/anyproto/anytype-heart/core/block/import/notion/api/page" "github.com/anyproto/anytype-heart/core/block/import/notion/api/property" "github.com/anyproto/anytype-heart/core/block/process" @@ -67,26 +69,26 @@ func (p *Database) GetObjectType() string { } // GetDatabase makes snapshots from notion Database objects -func (ds *Service) GetDatabase(_ context.Context, +func (ds *Service) GetDatabase( + _ context.Context, mode pb.RpcObjectImportRequestMode, databases []Database, progress process.Progress, - req *api.NotionImportContext) (*common.Response, *property.PropertiesStore, *common.ConvertError) { + req *api.NotionImportContext, + fileDownloader files.Downloader, +) (*common.Response, *property.PropertiesStore, *common.ConvertError) { var ( allSnapshots = make([]*common.Snapshot, 0) convertError = common.NewError(mode) ) progress.SetProgressMessage("Start creating pages from notion databases") - relations := &property.PropertiesStore{ - PropertyIdsToSnapshots: make(map[string]*model.SmartBlockSnapshotBase, 0), - RelationsIdsToOptions: make(map[string][]*model.SmartBlockSnapshotBase, 0), - } + relations := property.NewPropertiesStore() for _, d := range databases { if err := progress.TryStep(1); err != nil { convertError.Add(common.ErrCancel) return nil, nil, convertError } - snapshot, err := ds.makeDatabaseSnapshot(d, req, relations) + snapshot, err := ds.makeDatabaseSnapshot(d, req, relations, fileDownloader) if err != nil { convertError.Add(err) if convertError.ShouldAbortImport(0, model.Import_Notion) { @@ -102,18 +104,22 @@ func (ds *Service) GetDatabase(_ context.Context, return &common.Response{Snapshots: allSnapshots}, relations, convertError } -func (ds *Service) makeDatabaseSnapshot(d Database, +func (ds *Service) makeDatabaseSnapshot( + d Database, importContext *api.NotionImportContext, - relations *property.PropertiesStore) ([]*common.Snapshot, error) { - details := ds.getCollectionDetails(d) + relations *property.PropertiesStore, + fileDownloader files.Downloader, +) ([]*common.Snapshot, error) { + details, relationLinks := ds.getCollectionDetails(d) detailsStruct := &types.Struct{Fields: details} _, _, st, err := ds.collectionService.CreateCollection(detailsStruct, nil) if err != nil { return nil, err } + api.UploadFileRelationLocally(fileDownloader, details, relationLinks) detailsStruct = pbtypes.StructMerge(st.CombinedDetails(), detailsStruct, false) snapshots := ds.makeRelationsSnapshots(d, st, relations) - id, databaseSnapshot := ds.provideDatabaseSnapshot(d, st, detailsStruct) + id, databaseSnapshot := ds.provideDatabaseSnapshot(d, st, detailsStruct, relationLinks) ds.fillImportContext(d, importContext, id, databaseSnapshot) snapshots = append(snapshots, databaseSnapshot) return snapshots, nil @@ -188,14 +194,7 @@ func (ds *Service) makeRelationSnapshotFromDatabaseProperty(relations *property. databaseProperty property.DatabasePropertyHandler, name, relationKey string, st *state.State) *common.Snapshot { - var ( - rel *model.SmartBlockSnapshotBase - sn *common.Snapshot - ) - if rel = relations.ReadRelationsMap(databaseProperty.GetID()); rel == nil { - rel, sn = ds.getRelationSnapshot(relationKey, databaseProperty, name) - relations.WriteToRelationsMap(databaseProperty.GetID(), rel) - } + rel, sn := ds.provideRelationSnapshot(relations, databaseProperty, name, relationKey) relKey := pbtypes.GetString(rel.GetDetails(), bundle.RelationKeyRelationKey.String()) databaseProperty.SetDetail(relKey, st.Details().GetFields()) relationLinks := &model.RelationLink{ @@ -217,6 +216,23 @@ func (ds *Service) makeRelationSnapshotFromDatabaseProperty(relations *property. return sn } +func (ds *Service) provideRelationSnapshot( + relations *property.PropertiesStore, + databaseProperty property.DatabasePropertyHandler, + name, relationKey string, +) (*model.SmartBlockSnapshotBase, *common.Snapshot) { + var sn *common.Snapshot + rel := relations.GetSnapshotByNameAndFormat(name, int64(databaseProperty.GetFormat())) + if rel == nil { + if rel = relations.ReadRelationsMap(databaseProperty.GetID()); rel == nil { + rel, sn = ds.getRelationSnapshot(relationKey, databaseProperty, name) + relations.WriteToRelationsMap(databaseProperty.GetID(), rel) + relations.AddSnapshotByNameAndFormat(name, int64(databaseProperty.GetFormat()), rel) + } + } + return rel, sn +} + func (ds *Service) getRelationSnapshot(relationKey string, databaseProperty property.DatabasePropertyHandler, name string) (*model.SmartBlockSnapshotBase, *common.Snapshot) { relationDetails := ds.getRelationDetails(databaseProperty, name, relationKey) relationSnapshot := &model.SmartBlockSnapshotBase{ @@ -254,29 +270,25 @@ func (ds *Service) getRelationDetails(databaseProperty property.DatabaseProperty return details } -func (ds *Service) getCollectionDetails(d Database) map[string]*types.Value { +func (ds *Service) getCollectionDetails(d Database) (map[string]*types.Value, []*model.RelationLink) { details := make(map[string]*types.Value, 0) details[bundle.RelationKeySourceFilePath.String()] = pbtypes.String(d.ID) if len(d.Title) > 0 { details[bundle.RelationKeyName.String()] = pbtypes.String(d.Title[0].PlainText) } - if d.Icon != nil && d.Icon.Emoji != nil { - details[bundle.RelationKeyIconEmoji.String()] = pbtypes.String(*d.Icon.Emoji) - } - + var relationLinks []*model.RelationLink if d.Cover != nil { - if d.Cover.Type == api.External { - details[bundle.RelationKeyCoverId.String()] = pbtypes.String(d.Cover.External.URL) - details[bundle.RelationKeyCoverType.String()] = pbtypes.Float64(1) - } - - if d.Cover.Type == api.File { - details[bundle.RelationKeyCoverId.String()] = pbtypes.String(d.Cover.File.URL) - details[bundle.RelationKeyCoverType.String()] = pbtypes.Float64(1) - } + api.SetCover(details, d.Cover) + relationLinks = append(relationLinks, &model.RelationLink{ + Key: bundle.RelationKeyCoverId.String(), + Format: model.RelationFormat_file, + }) } if d.Icon != nil { - api.SetIcon(details, d.Icon) + relationLink := api.SetIcon(details, d.Icon) + if relationLink != nil { + relationLinks = append(relationLinks, relationLink) + } } details[bundle.RelationKeyCreator.String()] = pbtypes.String(d.CreatedBy.Name) details[bundle.RelationKeyIsArchived.String()] = pbtypes.Bool(d.Archived) @@ -287,16 +299,16 @@ func (ds *Service) getCollectionDetails(d Database) map[string]*types.Value { details[bundle.RelationKeyLastModifiedDate.String()] = pbtypes.Float64(float64(d.LastEditedTime.Unix())) details[bundle.RelationKeyCreatedDate.String()] = pbtypes.Float64(float64(d.CreatedTime.Unix())) - return details + return details, relationLinks } -func (ds *Service) provideDatabaseSnapshot(d Database, st *state.State, detailsStruct *types.Struct) (string, *common.Snapshot) { +func (ds *Service) provideDatabaseSnapshot(d Database, st *state.State, detailsStruct *types.Struct, links []*model.RelationLink) (string, *common.Snapshot) { snapshot := &model.SmartBlockSnapshotBase{ Blocks: st.Blocks(), Details: detailsStruct, ObjectTypes: []string{bundle.TypeKeyCollection.String()}, Collections: st.Store(), - RelationLinks: st.GetRelationLinks(), + RelationLinks: lo.Union(st.GetRelationLinks(), links), } id := uuid.New().String() diff --git a/core/block/import/notion/api/database/database_test.go b/core/block/import/notion/api/database/database_test.go index d7d49e348..38eef3cf1 100644 --- a/core/block/import/notion/api/database/database_test.go +++ b/core/block/import/notion/api/database/database_test.go @@ -4,11 +4,14 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" "github.com/anyproto/anytype-heart/core/block/import/notion/api" + "github.com/anyproto/anytype-heart/core/block/import/notion/api/files/mock_files" "github.com/anyproto/anytype-heart/core/block/import/notion/api/page" "github.com/anyproto/anytype-heart/core/block/import/notion/api/property" "github.com/anyproto/anytype-heart/pkg/lib/bundle" + sb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/util/pbtypes" ) @@ -379,6 +382,29 @@ func TestService_AddObjectsToNotionCollection(t *testing.T) { } func Test_makeDatabaseSnapshot(t *testing.T) { + t.Run("Databases have properties with same name and relation - don't create additional relation", func(t *testing.T) { + // given + p := property.DatabaseSelect{ + Property: property.Property{ + ID: "id", + Name: "Name", + }, + } + pr := property.DatabaseProperties{"Name": &p} + dbService := New(nil) + req := property.NewPropertiesStore() + req.AddSnapshotByNameAndFormat(p.Name, int64(p.GetFormat()), &model.SmartBlockSnapshotBase{}) + db := Database{Properties: pr} + + // when + snapshot, err := dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), req, mock_files.NewMockDownloader(t)) + assert.Nil(t, err) + + // then + assert.Len(t, snapshot, 1) + assert.NotEqual(t, sb.SmartBlockTypeRelation, snapshot[0].SbType) + }) + t.Run("Database has Select property with Tag name", func(t *testing.T) { // given p := property.DatabaseSelect{ @@ -389,14 +415,11 @@ func Test_makeDatabaseSnapshot(t *testing.T) { } pr := property.DatabaseProperties{"Tag": &p} dbService := New(nil) - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() db := Database{Properties: pr} // when - dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), req) + dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), req, mock_files.NewMockDownloader(t)) // then assert.Len(t, req.PropertyIdsToSnapshots, 1) @@ -413,14 +436,11 @@ func Test_makeDatabaseSnapshot(t *testing.T) { } properties := property.DatabaseProperties{"Tags": &selectProperty} dbService := New(nil) - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() db := Database{Properties: properties} // when - dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), req) + dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), req, mock_files.NewMockDownloader(t)) // then assert.Len(t, req.PropertyIdsToSnapshots, 1) @@ -436,14 +456,11 @@ func Test_makeDatabaseSnapshot(t *testing.T) { } selectProperty := property.DatabaseProperties{"Tags": &multiSelectProperty} dbService := New(nil) - properties := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + properties := property.NewPropertiesStore() db := Database{Properties: selectProperty} // when - dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), properties) + dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), properties, mock_files.NewMockDownloader(t)) // then assert.Len(t, properties.PropertyIdsToSnapshots, 1) @@ -459,14 +476,11 @@ func Test_makeDatabaseSnapshot(t *testing.T) { } selectProperty := property.DatabaseProperties{"Tag": &multiSelectProperty} dbService := New(nil) - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() db := Database{Properties: selectProperty} // when - dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), req) + dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), req, mock_files.NewMockDownloader(t)) // then assert.Len(t, req.PropertyIdsToSnapshots, 1) @@ -488,14 +502,11 @@ func Test_makeDatabaseSnapshot(t *testing.T) { } properties := property.DatabaseProperties{"Tag": &multiSelectProperty, "Tags": &selectProperty} dbService := New(nil) - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() db := Database{Properties: properties} // when - dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), req) + dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), req, mock_files.NewMockDownloader(t)) // then assert.Len(t, req.PropertyIdsToSnapshots, 2) @@ -518,14 +529,11 @@ func Test_makeDatabaseSnapshot(t *testing.T) { } properties := property.DatabaseProperties{"Tag": &multiSelectProperty, "tags": &selectProperty} dbService := New(nil) - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() db := Database{Properties: properties} // when - dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), req) + dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), req, mock_files.NewMockDownloader(t)) // then assert.Len(t, req.PropertyIdsToSnapshots, 2) @@ -541,7 +549,7 @@ func Test_makeDatabaseSnapshot(t *testing.T) { }} // when - snapshot, err := dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), nil) + snapshot, err := dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), nil, mock_files.NewMockDownloader(t)) // then assert.Nil(t, err) @@ -559,7 +567,9 @@ func Test_makeDatabaseSnapshot(t *testing.T) { }} // when - snapshot, err := dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), nil) + downloader := mock_files.NewMockDownloader(t) + downloader.EXPECT().QueueFileForDownload(mock.Anything).Return(nil, true) + snapshot, err := dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), nil, downloader) // then assert.Nil(t, err) @@ -577,7 +587,9 @@ func Test_makeDatabaseSnapshot(t *testing.T) { }} // when - snapshot, err := dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), nil) + downloader := mock_files.NewMockDownloader(t) + downloader.EXPECT().QueueFileForDownload(mock.Anything).Return(nil, true) + snapshot, err := dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), nil, downloader) // then assert.Nil(t, err) @@ -590,7 +602,7 @@ func Test_makeDatabaseSnapshot(t *testing.T) { db := Database{} // when - snapshot, err := dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), nil) + snapshot, err := dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), nil, mock_files.NewMockDownloader(t)) // then assert.Nil(t, err) @@ -607,17 +619,49 @@ func Test_makeDatabaseSnapshot(t *testing.T) { } properties := property.DatabaseProperties{"": &selectProperty} dbService := New(nil) - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() db := Database{Properties: properties} // when - dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), req) + dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), req, mock_files.NewMockDownloader(t)) // then assert.Len(t, req.PropertyIdsToSnapshots, 1) assert.Equal(t, property.UntitledProperty, pbtypes.GetString(req.PropertyIdsToSnapshots[selectProperty.ID].GetDetails(), bundle.RelationKeyName.String())) }) + t.Run("Database has cover file icon - details have relations coverId and coverType", func(t *testing.T) { + dbService := New(nil) + db := Database{Cover: &api.FileObject{ + Type: api.File, + File: api.FileProperty{ + URL: "url", + }, + }} + + // when + downloader := mock_files.NewMockDownloader(t) + downloader.EXPECT().QueueFileForDownload(mock.Anything).Return(nil, true) + snapshot, err := dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), nil, downloader) + + // then + assert.Nil(t, err) + assert.Len(t, snapshot, 1) + cover := pbtypes.GetString(snapshot[0].Snapshot.Data.Details, bundle.RelationKeyCoverId.String()) + coverType := pbtypes.GetInt64(snapshot[0].Snapshot.Data.Details, bundle.RelationKeyCoverType.String()) + assert.Equal(t, "url", cover) + assert.Equal(t, int64(1), coverType) + }) + t.Run("Database doesn't have cover - details don't have neither coverType nor coverId", func(t *testing.T) { + dbService := New(nil) + db := Database{} + + // when + snapshot, err := dbService.makeDatabaseSnapshot(db, api.NewNotionImportContext(), nil, mock_files.NewMockDownloader(t)) + + // then + assert.Nil(t, err) + assert.Len(t, snapshot, 1) + cover := pbtypes.GetString(snapshot[0].Snapshot.Data.Details, bundle.RelationKeyCoverId.String()) + assert.Equal(t, "", cover) + }) } diff --git a/core/block/import/notion/api/files/downloader.go b/core/block/import/notion/api/files/downloader.go new file mode 100644 index 000000000..b55d4e4a5 --- /dev/null +++ b/core/block/import/notion/api/files/downloader.go @@ -0,0 +1,127 @@ +package files + +import ( + "context" + "os" + "path/filepath" + "sync" + + "github.com/anyproto/anytype-heart/core/block/import/common/workerpool" + "github.com/anyproto/anytype-heart/core/block/process" +) + +const ( + workersNumber = 5 + anytypeNotionImportDir = "anytype_notion_import" +) + +type Downloader interface { + Init(ctx context.Context) error + QueueFileForDownload(url string) (LocalFileProvider, bool) + ProcessDownloadedFiles() + StopDownload() +} + +type fileDownloader struct { + pool *workerpool.WorkerPool + progress process.Progress + + urlToFile sync.Map + filesInProgress sync.Map +} + +func NewFileDownloader(progress process.Progress) Downloader { + return &fileDownloader{ + pool: workerpool.NewPool(workersNumber), + progress: progress, + } +} + +func (d *fileDownloader) Init(ctx context.Context) error { + dirPath, err := d.createTempDir() + if err != nil { + return err + } + go d.pool.Start(&DataObject{ + dirPath: dirPath, + ctx: ctx, + }) + return nil +} + +func (d *fileDownloader) createTempDir() (string, error) { + dirPath := filepath.Join(os.TempDir(), anytypeNotionImportDir) + err := os.MkdirAll(dirPath, 0700) + if err != nil && !os.IsExist(err) { + return "", err + } + return dirPath, nil +} + +func (d *fileDownloader) QueueFileForDownload(url string) (LocalFileProvider, bool) { + select { + case <-d.progress.Canceled(): + return nil, true + default: + } + + if cachedFile, ok := d.getFileFromCache(url); ok { + return cachedFile, false + } + + if fileInProgress, ok := d.isFileInProgress(url); ok { + return fileInProgress, false + } + + newFile := NewFile(url) + d.markFileInProgress(newFile) + return newFile, d.pool.AddWork(newFile) +} + +func (d *fileDownloader) ProcessDownloadedFiles() { + for result := range d.pool.Results() { + downloadedFile := result.(LocalFileProvider) + d.process(downloadedFile) + } +} + +func (d *fileDownloader) process(downloadedFile LocalFileProvider) { + url := downloadedFile.GetUrl() + + d.saveFileInfo(downloadedFile) + d.markFileCompleted(url) +} + +func (d *fileDownloader) getFileFromCache(url string) (LocalFileProvider, bool) { + if file, ok := d.urlToFile.Load(url); ok { + return file.(LocalFileProvider), true + } + return nil, false +} + +func (d *fileDownloader) isFileInProgress(url string) (LocalFileProvider, bool) { + file, inProgress := d.filesInProgress.Load(url) + if inProgress { + return file.(LocalFileProvider), inProgress + } + return nil, false +} + +func (d *fileDownloader) markFileInProgress(newFile LocalFileProvider) { + d.filesInProgress.Store(newFile.GetUrl(), newFile) +} + +func (d *fileDownloader) saveFileInfo(downloadedFile LocalFileProvider) { + if downloadedFile.GetLocalPath() != "" { + d.urlToFile.Store(downloadedFile.GetUrl(), downloadedFile) + } +} + +func (d *fileDownloader) markFileCompleted(url string) { + d.filesInProgress.Delete(url) +} + +func (d *fileDownloader) StopDownload() { + d.pool.Stop() + d.pool.CloseTask() +} diff --git a/core/block/import/notion/api/files/downloader_test.go b/core/block/import/notion/api/files/downloader_test.go new file mode 100644 index 000000000..0367c1956 --- /dev/null +++ b/core/block/import/notion/api/files/downloader_test.go @@ -0,0 +1,108 @@ +package files + +import ( + "context" + "os" + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/anyproto/anytype-heart/core/block/process" +) + +func TestFileDownloader_Init(t *testing.T) { + t.Run("create dir success", func(t *testing.T) { + // given + fileDownloader := NewFileDownloader(process.NewNoOp()) + + // when + err := fileDownloader.Init(context.Background()) + defer fileDownloader.StopDownload() + + // then + assert.Nil(t, err) + }) + t.Run("create dir - already exist error", func(t *testing.T) { + // given + fileDownloader := NewFileDownloader(process.NewNoOp()).(*fileDownloader) + + // when + _, err := fileDownloader.createTempDir() + assert.Nil(t, err) + _, err = fileDownloader.createTempDir() + + // then + assert.Nil(t, err) + }) +} + +func TestFileDownloader_AddToQueue(t *testing.T) { + t.Run("add to queue success, file were processed", func(t *testing.T) { + // given + fileDownloader := NewFileDownloader(process.NewNoOp()).(*fileDownloader) + + // when + fileDownloader.urlToFile.Store("test", NewFile("test")) + _, stop := fileDownloader.QueueFileForDownload("test") + + // then + assert.False(t, stop) + _, ok := fileDownloader.filesInProgress.Load("test") + assert.False(t, ok) + }) + + t.Run("add to queue success, file in progress", func(t *testing.T) { + // given + fileDownloader := NewFileDownloader(process.NewNoOp()).(*fileDownloader) + + // when + fileDownloader.filesInProgress.Store("test", NewFile("test")) + _, stop := fileDownloader.QueueFileForDownload("test") + + // then + assert.False(t, stop) + _, ok := fileDownloader.filesInProgress.Load("test") + assert.True(t, ok) + _, ok = fileDownloader.urlToFile.Load("test") + assert.False(t, ok) + }) + + t.Run("add to queue success, new file", func(t *testing.T) { + // given + fileDownloader := NewFileDownloader(process.NewNoOp()).(*fileDownloader) + + // when + err := fileDownloader.Init(context.Background()) + assert.Nil(t, err) + defer fileDownloader.StopDownload() + _, stop := fileDownloader.QueueFileForDownload("test") + + // then + assert.False(t, stop) + _, ok := fileDownloader.filesInProgress.Load("test") + assert.True(t, ok) + _, ok = fileDownloader.urlToFile.Load("test") + assert.False(t, ok) + assert.Nil(t, os.RemoveAll("tmp")) + }) +} + +func TestFileDownloader_process(t *testing.T) { + t.Run("process file success", func(t *testing.T) { + // given + fileDownloader := NewFileDownloader(process.NewNoOp()).(*fileDownloader) + + // when + f := NewFile("test") + downloadFile := f.(*file) + downloadFile.localPath = "localPath" + fileDownloader.process(downloadFile) + + // then + _, ok := fileDownloader.filesInProgress.Load("test") + assert.False(t, ok) + newFile, ok := fileDownloader.urlToFile.Load("test") + assert.True(t, ok) + assert.Equal(t, "localPath", newFile.(LocalFileProvider).GetLocalPath()) + }) +} diff --git a/core/block/import/notion/api/files/file.go b/core/block/import/notion/api/files/file.go new file mode 100644 index 000000000..04030d405 --- /dev/null +++ b/core/block/import/notion/api/files/file.go @@ -0,0 +1,213 @@ +package files + +import ( + "context" + "encoding/hex" + "fmt" + "io" + "net/http" + "net/url" + "os" + "path/filepath" + "sync" + "time" + + "github.com/miolini/datacounter" + "github.com/zeebo/blake3" + + "github.com/anyproto/anytype-heart/core/block/import/common/workerpool" +) + +var hashersPool = &sync.Pool{ + New: func() any { + return blake3.New() + }, +} + +type DataObject struct { + dirPath string + ctx context.Context +} + +type LocalFileProvider interface { + workerpool.ITask + GetUrl() string + GetLocalPath() string + WaitForLocalPath() (string, error) + LoadDone() +} + +type file struct { + *os.File + + url string + localPath string + + loadDone chan struct{} + errCh chan error +} + +func NewFile(url string) LocalFileProvider { + return &file{ + url: url, + loadDone: make(chan struct{}), + errCh: make(chan error, 1), + } +} + +func (f *file) LoadDone() { + close(f.loadDone) +} + +func (f *file) GetUrl() string { + return f.url +} + +func (f *file) GetLocalPath() string { + return f.localPath +} + +func (f *file) WaitForLocalPath() (string, error) { + for { + select { + case <-f.loadDone: + return f.localPath, nil + case err := <-f.errCh: + return "", err + } + } +} + +func (f *file) Execute(data interface{}) interface{} { + do, ok := data.(*DataObject) + if !ok { + f.loadFinishWithError(fmt.Errorf("wrong format of data for file downloading")) + return f + } + + err := f.generateFile(do) + + defer func() { + f.Close() + if err != nil && !os.IsExist(err) && f.File != nil { + os.Remove(f.Name()) + } + }() + + if err != nil { + if os.IsExist(err) { + f.LoadDone() + return f + } + f.loadFinishWithError(err) + return f + } + + if err = f.downloadFile(do.ctx); err != nil { + f.loadFinishWithError(err) + return f + } + + f.LoadDone() + return f +} + +func (f *file) downloadFile(ctx context.Context) error { + req, err := http.NewRequestWithContext(ctx, http.MethodGet, f.url, nil) + if err != nil { + return fmt.Errorf("failed to make request with context: %w", err) + } + + resp, err := http.DefaultClient.Do(req) + if err != nil { + return fmt.Errorf("failed to make http request: %w", err) + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("bad status code: %d", resp.StatusCode) + } + counter := datacounter.NewReaderCounter(resp.Body) + progressCh := make(chan struct{}, 1) + done := make(chan struct{}) + defer close(done) + go f.monitorFileDownload(counter, done, progressCh) + + _, err = io.Copy(f.File, counter) + if err != nil { + return fmt.Errorf("failed to download file: %w", err) + } + select { + case <-ctx.Done(): + return fmt.Errorf("file download were canceled") + case <-progressCh: + return fmt.Errorf("failed to download file, no progress") + default: + f.Close() + return os.Rename(f.File.Name(), f.localPath) + } +} + +func (f *file) loadFinishWithError(err error) { + f.errCh <- err + close(f.errCh) +} + +func (f *file) generateFile(do *DataObject) error { + fileName, err := f.makeFileName() + if err != nil { + return err + } + fullPath := filepath.Join(do.dirPath, fileName) + file, err := os.OpenFile(fullPath, os.O_RDWR, 0600) + if err != nil && !os.IsNotExist(err) { + return err + } + if file != nil { + f.File = file + f.localPath = fullPath + return os.ErrExist + } + tempFilePath := filepath.Join(do.dirPath, "_"+fileName) + tmpFile, err := os.Create(tempFilePath) + if err != nil { + return err + } + f.File = tmpFile + f.localPath = fullPath + return nil +} + +func (f *file) makeFileName() (string, error) { + hasher := hashersPool.Get().(*blake3.Hasher) + defer hashersPool.Put(hasher) + hasher.Reset() + parsesUrl, err := url.Parse(f.url) + if err != nil { + return "", err + } + // nolint: errcheck + hasher.Write([]byte(parsesUrl.Path)) + fileExt := filepath.Ext(parsesUrl.Path) + fileName := hex.EncodeToString(hasher.Sum(nil)) + fileExt + return fileName, nil +} + +func (f *file) monitorFileDownload(counter *datacounter.ReaderCounter, done, progressCh chan struct{}) { + timeout := time.Second * 30 + func() { + lastCount := counter.Count() + for { + select { + case <-done: + return + case <-time.After(timeout): + currentCount := counter.Count() + if currentCount == lastCount { + progressCh <- struct{}{} + return + } + lastCount = currentCount + } + } + }() +} diff --git a/core/block/import/notion/api/files/file_test.go b/core/block/import/notion/api/files/file_test.go new file mode 100644 index 000000000..a7b4f7725 --- /dev/null +++ b/core/block/import/notion/api/files/file_test.go @@ -0,0 +1,174 @@ +package files + +import ( + "context" + "net/http" + "net/http/httptest" + "os" + "path/filepath" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestFile_Execute(t *testing.T) { + t.Run("data object is wrong", func(t *testing.T) { + // given + file := NewFile("url") + + // when + file.Execute("test") + + // then + assert.Empty(t, file.GetLocalPath()) + }) + t.Run("error creating file: exist", func(t *testing.T) { + // given + filePath := filepath.Join("tmp", "68b26ffaae8944a7a8ab6951bdd0a44f0492fe65838858051ecaa24746d2a470") + err := os.MkdirAll("tmp", 0700) + assert.NoError(t, err) + tmpFile, err := os.Create(filePath) + assert.NoError(t, err) + defer os.RemoveAll("tmp") + + file := NewFile("url") + + // when + file.Execute(&DataObject{ + dirPath: "tmp", + }) + + // then + assert.Equal(t, tmpFile.Name(), file.GetLocalPath()) + }) +} +func TestFile_downloadFile(t *testing.T) { + t.Run("download success", func(t *testing.T) { + // given + tmpFile, err := os.CreateTemp("", "testfile") + assert.NoError(t, err) + defer os.Remove(tmpFile.Name()) + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) + w.Write([]byte("file content")) + })) + defer server.Close() + + file := &file{url: server.URL, File: tmpFile, localPath: tmpFile.Name()} + ctx := context.Background() + + // when + err = file.downloadFile(ctx) + + // then + assert.NoError(t, err) + }) + t.Run("download finished with http error", func(t *testing.T) { + // given + tmpFile, err := os.CreateTemp("", "testfile") + assert.NoError(t, err) + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusInternalServerError) + })) + defer server.Close() + + file := &file{url: server.URL, File: tmpFile} + ctx := context.Background() + + // when + err = file.downloadFile(ctx) + + // then + assert.Error(t, err) + assert.Contains(t, err.Error(), "bad status code") + }) + t.Run("download cancelled", func(t *testing.T) { + // given + tmpFile, err := os.CreateTemp("", "testfile") + assert.NoError(t, err) + defer os.Remove(tmpFile.Name()) + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + time.Sleep(500 * time.Millisecond) // Simulate a slow response + w.WriteHeader(http.StatusOK) + w.Write([]byte("file content")) + })) + defer server.Close() + + file := &file{url: server.URL} + + ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond) + defer cancel() + + // when + err = file.downloadFile(ctx) + + // then + assert.Error(t, err) + }) +} + +func TestFile_generateFileName(t *testing.T) { + t.Run("generate name success", func(t *testing.T) { + // given + dirPath := t.TempDir() + do := &DataObject{dirPath: dirPath} + file := NewFile("url").(*file) + + // when + err := file.generateFile(do) + + // then + assert.NoError(t, err) + assert.NotNil(t, file.File) + }) + t.Run("generate name, file exists", func(t *testing.T) { + // given + dirPath := t.TempDir() + do := &DataObject{dirPath: dirPath} + file := NewFile("url").(*file) + + // when + existingFilePath := filepath.Join(dirPath, "68b26ffaae8944a7a8ab6951bdd0a44f0492fe65838858051ecaa24746d2a470") + _, err := os.Create(existingFilePath) + assert.NoError(t, err) + + err = file.generateFile(do) + + // then + assert.ErrorIs(t, err, os.ErrExist) + assert.NotNil(t, file.File) + assert.Equal(t, existingFilePath, file.GetLocalPath()) + }) + t.Run("generate name, url error", func(t *testing.T) { + // given + dirPath := t.TempDir() + do := &DataObject{dirPath: dirPath} + file := NewFile("://invalid-url").(*file) + + // when + err := file.generateFile(do) + + // then + assert.Error(t, err) + assert.Nil(t, file.File) + assert.Equal(t, "", file.GetLocalPath()) + }) + t.Run("generate name, file creation error", func(t *testing.T) { + // given + dirPath := "/invalid/dir/path" + do := &DataObject{dirPath: dirPath} + file := NewFile("url").(*file) + + // when + err := file.generateFile(do) + + // then + assert.Error(t, err) + assert.Nil(t, file.File) + assert.Equal(t, "", file.GetLocalPath()) + }) +} diff --git a/core/block/import/notion/api/files/mock_files/mock_Downloader.go b/core/block/import/notion/api/files/mock_files/mock_Downloader.go new file mode 100644 index 000000000..c9994c86f --- /dev/null +++ b/core/block/import/notion/api/files/mock_files/mock_Downloader.go @@ -0,0 +1,205 @@ +// Code generated by mockery. DO NOT EDIT. + +package mock_files + +import ( + context "context" + + files "github.com/anyproto/anytype-heart/core/block/import/notion/api/files" + mock "github.com/stretchr/testify/mock" +) + +// MockDownloader is an autogenerated mock type for the Downloader type +type MockDownloader struct { + mock.Mock +} + +type MockDownloader_Expecter struct { + mock *mock.Mock +} + +func (_m *MockDownloader) EXPECT() *MockDownloader_Expecter { + return &MockDownloader_Expecter{mock: &_m.Mock} +} + +// Init provides a mock function with given fields: ctx +func (_m *MockDownloader) Init(ctx context.Context) error { + ret := _m.Called(ctx) + + if len(ret) == 0 { + panic("no return value specified for Init") + } + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context) error); ok { + r0 = rf(ctx) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// MockDownloader_Init_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Init' +type MockDownloader_Init_Call struct { + *mock.Call +} + +// Init is a helper method to define mock.On call +// - ctx context.Context +func (_e *MockDownloader_Expecter) Init(ctx interface{}) *MockDownloader_Init_Call { + return &MockDownloader_Init_Call{Call: _e.mock.On("Init", ctx)} +} + +func (_c *MockDownloader_Init_Call) Run(run func(ctx context.Context)) *MockDownloader_Init_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context)) + }) + return _c +} + +func (_c *MockDownloader_Init_Call) Return(_a0 error) *MockDownloader_Init_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockDownloader_Init_Call) RunAndReturn(run func(context.Context) error) *MockDownloader_Init_Call { + _c.Call.Return(run) + return _c +} + +// ProcessDownloadedFiles provides a mock function with given fields: +func (_m *MockDownloader) ProcessDownloadedFiles() { + _m.Called() +} + +// MockDownloader_ProcessDownloadedFiles_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ProcessDownloadedFiles' +type MockDownloader_ProcessDownloadedFiles_Call struct { + *mock.Call +} + +// ProcessDownloadedFiles is a helper method to define mock.On call +func (_e *MockDownloader_Expecter) ProcessDownloadedFiles() *MockDownloader_ProcessDownloadedFiles_Call { + return &MockDownloader_ProcessDownloadedFiles_Call{Call: _e.mock.On("ProcessDownloadedFiles")} +} + +func (_c *MockDownloader_ProcessDownloadedFiles_Call) Run(run func()) *MockDownloader_ProcessDownloadedFiles_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockDownloader_ProcessDownloadedFiles_Call) Return() *MockDownloader_ProcessDownloadedFiles_Call { + _c.Call.Return() + return _c +} + +func (_c *MockDownloader_ProcessDownloadedFiles_Call) RunAndReturn(run func()) *MockDownloader_ProcessDownloadedFiles_Call { + _c.Call.Return(run) + return _c +} + +// QueueFileForDownload provides a mock function with given fields: url +func (_m *MockDownloader) QueueFileForDownload(url string) (files.LocalFileProvider, bool) { + ret := _m.Called(url) + + if len(ret) == 0 { + panic("no return value specified for QueueFileForDownload") + } + + var r0 files.LocalFileProvider + var r1 bool + if rf, ok := ret.Get(0).(func(string) (files.LocalFileProvider, bool)); ok { + return rf(url) + } + if rf, ok := ret.Get(0).(func(string) files.LocalFileProvider); ok { + r0 = rf(url) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(files.LocalFileProvider) + } + } + + if rf, ok := ret.Get(1).(func(string) bool); ok { + r1 = rf(url) + } else { + r1 = ret.Get(1).(bool) + } + + return r0, r1 +} + +// MockDownloader_QueueFileForDownload_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'QueueFileForDownload' +type MockDownloader_QueueFileForDownload_Call struct { + *mock.Call +} + +// QueueFileForDownload is a helper method to define mock.On call +// - url string +func (_e *MockDownloader_Expecter) QueueFileForDownload(url interface{}) *MockDownloader_QueueFileForDownload_Call { + return &MockDownloader_QueueFileForDownload_Call{Call: _e.mock.On("QueueFileForDownload", url)} +} + +func (_c *MockDownloader_QueueFileForDownload_Call) Run(run func(url string)) *MockDownloader_QueueFileForDownload_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(string)) + }) + return _c +} + +func (_c *MockDownloader_QueueFileForDownload_Call) Return(_a0 files.LocalFileProvider, _a1 bool) *MockDownloader_QueueFileForDownload_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockDownloader_QueueFileForDownload_Call) RunAndReturn(run func(string) (files.LocalFileProvider, bool)) *MockDownloader_QueueFileForDownload_Call { + _c.Call.Return(run) + return _c +} + +// StopDownload provides a mock function with given fields: +func (_m *MockDownloader) StopDownload() { + _m.Called() +} + +// MockDownloader_StopDownload_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'StopDownload' +type MockDownloader_StopDownload_Call struct { + *mock.Call +} + +// StopDownload is a helper method to define mock.On call +func (_e *MockDownloader_Expecter) StopDownload() *MockDownloader_StopDownload_Call { + return &MockDownloader_StopDownload_Call{Call: _e.mock.On("StopDownload")} +} + +func (_c *MockDownloader_StopDownload_Call) Run(run func()) *MockDownloader_StopDownload_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockDownloader_StopDownload_Call) Return() *MockDownloader_StopDownload_Call { + _c.Call.Return() + return _c +} + +func (_c *MockDownloader_StopDownload_Call) RunAndReturn(run func()) *MockDownloader_StopDownload_Call { + _c.Call.Return(run) + return _c +} + +// NewMockDownloader creates a new instance of MockDownloader. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockDownloader(t interface { + mock.TestingT + Cleanup(func()) +}) *MockDownloader { + mock := &MockDownloader{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/core/block/import/notion/api/page/page.go b/core/block/import/notion/api/page/page.go index c61223575..d9b28e4ad 100644 --- a/core/block/import/notion/api/page/page.go +++ b/core/block/import/notion/api/page/page.go @@ -12,6 +12,7 @@ import ( "github.com/anyproto/anytype-heart/core/block/import/notion/api" "github.com/anyproto/anytype-heart/core/block/import/notion/api/block" "github.com/anyproto/anytype-heart/core/block/import/notion/api/client" + "github.com/anyproto/anytype-heart/core/block/import/notion/api/files" "github.com/anyproto/anytype-heart/core/block/import/notion/api/property" "github.com/anyproto/anytype-heart/core/block/process" "github.com/anyproto/anytype-heart/pb" @@ -60,25 +61,29 @@ func (p *Page) GetObjectType() string { } // GetPages transform Page objects from Notion to snaphots -func (ds *Service) GetPages(ctx context.Context, +func (ds *Service) GetPages( + ctx context.Context, apiKey string, mode pb.RpcObjectImportRequestMode, pages []Page, notionImportContext *api.NotionImportContext, relations *property.PropertiesStore, - progress process.Progress) (*common.Response, *common.ConvertError) { + progress process.Progress, + fileDownloader files.Downloader, +) (*common.Response, *common.ConvertError) { progress.SetProgressMessage("Start creating pages from notion") convertError := ds.fillNotionImportContext(pages, progress, notionImportContext) if convertError != nil { return nil, convertError } + numWorkers := workerPoolSize if len(pages) < workerPoolSize { numWorkers = 1 } pool := workerpool.NewPool(numWorkers) - go ds.addWorkToPool(pages, pool) + go ds.addWorkToPool(pages, pool, fileDownloader) do := NewDataObject(ctx, apiKey, mode, notionImportContext, relations) go pool.Start(do) @@ -113,7 +118,7 @@ func (ds *Service) readResultFromPool(pool *workerpool.WorkerPool, mode pb.RpcOb return allSnapshots, ce } -func (ds *Service) addWorkToPool(pages []Page, pool *workerpool.WorkerPool) { +func (ds *Service) addWorkToPool(pages []Page, pool *workerpool.WorkerPool, fileDownloader files.Downloader) { var ( relMutex = &sync.Mutex{} relOptMutex = &sync.Mutex{} @@ -125,6 +130,7 @@ func (ds *Service) addWorkToPool(pages []Page, pool *workerpool.WorkerPool) { propertyService: ds.propertyService, blockService: ds.blockService, p: p, + fileDownloader: fileDownloader, }) if stop { break diff --git a/core/block/import/notion/api/page/page_test.go b/core/block/import/notion/api/page/page_test.go index 7d4ae3e1c..0483a3c52 100644 --- a/core/block/import/notion/api/page/page_test.go +++ b/core/block/import/notion/api/page/page_test.go @@ -38,10 +38,7 @@ func Test_handlePagePropertiesSelect(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -101,10 +98,7 @@ func Test_handlePagePropertiesLastEditedTime(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -134,10 +128,7 @@ func Test_handlePagePropertiesRichText(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ ctx: context.Background(), request: &api.NotionImportContext{}, @@ -172,10 +163,7 @@ func Test_handlePagePropertiesDate(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ ctx: context.Background(), request: &api.NotionImportContext{}, @@ -211,10 +199,7 @@ func Test_handlePagePropertiesDate(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ ctx: context.Background(), request: &api.NotionImportContext{}, @@ -253,10 +238,7 @@ func Test_handlePagePropertiesStatus(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -320,10 +302,7 @@ func Test_handlePageProperties(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -355,10 +334,7 @@ func Test_handlePagePropertiesNumber(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -394,10 +370,7 @@ func Test_handlePagePropertiesMultiSelect(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -463,10 +436,7 @@ func Test_handlePagePropertiesCheckbox(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -497,10 +467,7 @@ func Test_handlePagePropertiesEmail(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -538,10 +505,7 @@ func Test_handlePagePropertiesRelation(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - store := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + store := property.NewPropertiesStore() do := &DataObject{ ctx: context.Background(), request: req, @@ -570,6 +534,14 @@ func Test_handlePagePropertiesPeople(t *testing.T) { Object: "", ID: "id", Type: string(property.PropertyConfigTypePeople), + People: []*api.User{ + { + ID: "1", + Name: "Example", + Type: "person", + Person: &api.Person{Email: "email"}, + }, + }, } properties := property.Properties{"People": &peopleProperty} pageTask := Task{ @@ -578,10 +550,7 @@ func Test_handlePagePropertiesPeople(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - store := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + store := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: store, @@ -621,10 +590,7 @@ func Test_handlePagePropertiesFormula(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - store := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + store := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: store, @@ -654,10 +620,7 @@ func Test_handlePagePropertiesTitle(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - store := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + store := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: store, @@ -709,10 +672,7 @@ func Test_handleRollupProperties(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - store := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + store := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: store, @@ -756,10 +716,7 @@ func Test_handlePagePropertiesUniqueID(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - store := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + store := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: store, @@ -797,10 +754,7 @@ func Test_handlePagePropertiesUniqueID(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - store := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + store := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: store, @@ -841,10 +795,7 @@ func Test_handlePagePropertiesSelectWithTagName(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -880,10 +831,7 @@ func Test_handlePagePropertiesSelectWithTagName(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -920,10 +868,7 @@ func Test_handlePagePropertiesSelectWithTagName(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -960,10 +905,7 @@ func Test_handlePagePropertiesSelectWithTagName(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -1010,10 +952,7 @@ func Test_handlePagePropertiesSelectWithTagName(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -1061,10 +1000,7 @@ func Test_handlePagePropertiesSelectWithTagName(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -1097,10 +1033,7 @@ func Test_handlePagePropertiesSelectWithTagName(t *testing.T) { relationCreateMutex: &sync.Mutex{}, p: Page{Properties: properties}, } - req := &property.PropertiesStore{ - PropertyIdsToSnapshots: map[string]*model.SmartBlockSnapshotBase{}, - RelationsIdsToOptions: map[string][]*model.SmartBlockSnapshotBase{}, - } + req := property.NewPropertiesStore() do := &DataObject{ request: &api.NotionImportContext{}, relations: req, @@ -1114,6 +1047,36 @@ func Test_handlePagePropertiesSelectWithTagName(t *testing.T) { assert.Len(t, req.PropertyIdsToSnapshots, 1) assert.Equal(t, property.UntitledProperty, pbtypes.GetString(req.PropertyIdsToSnapshots[selectProperty.ID].GetDetails(), bundle.RelationKeyName.String())) }) + t.Run("Page has property which already exist - don't create new relation", func(t *testing.T) { + // given + details := make(map[string]*types.Value, 0) + c := client.NewClient() + selectProperty := property.SelectItem{ + Object: "", + ID: "id1", + Type: string(property.PropertyConfigTypeSelect), + Select: property.SelectOption{}, + } + properties := property.Properties{"Name": &selectProperty} + pageTask := Task{ + propertyService: property.New(c), + relationOptCreateMutex: &sync.Mutex{}, + relationCreateMutex: &sync.Mutex{}, + p: Page{Properties: properties}, + } + req := property.NewPropertiesStore() + req.AddSnapshotByNameAndFormat("Name", int64(selectProperty.GetFormat()), &model.SmartBlockSnapshotBase{}) + do := &DataObject{ + request: &api.NotionImportContext{}, + relations: req, + } + + // when + snapshots, _ := pageTask.handlePageProperties(do, details) + + // then + assert.Len(t, snapshots, 0) + }) } func TestTask_provideDetails(t *testing.T) { @@ -1200,4 +1163,47 @@ func TestTask_provideDetails(t *testing.T) { assert.NotContains(t, details, bundle.RelationKeyIconImage.String()) assert.NotContains(t, details, bundle.RelationKeyIconEmoji.String()) }) + t.Run("Page has cover - details have relation coverId and coverType", func(t *testing.T) { + c := client.NewClient() + page := Page{ + Cover: &api.FileObject{ + Name: "file", + Type: api.File, + File: api.FileProperty{ + URL: "file", + }, + }, + } + pageTask := Task{ + propertyService: property.New(c), + relationOptCreateMutex: &sync.Mutex{}, + relationCreateMutex: &sync.Mutex{}, + p: page, + } + + // when + details, _ := pageTask.prepareDetails() + + // then + assert.Contains(t, details, bundle.RelationKeyCoverType.String()) + assert.Contains(t, details, bundle.RelationKeyCoverId.String()) + assert.Equal(t, "file", details[bundle.RelationKeyCoverId.String()].GetStringValue()) + }) + t.Run("Page doesn't have cover - details doesn't have relations coverId and coverType", func(t *testing.T) { + c := client.NewClient() + page := Page{} + pageTask := Task{ + propertyService: property.New(c), + relationOptCreateMutex: &sync.Mutex{}, + relationCreateMutex: &sync.Mutex{}, + p: page, + } + + // when + details, _ := pageTask.prepareDetails() + + // then + assert.Empty(t, details[bundle.RelationKeyCoverType.String()]) + assert.Empty(t, details[bundle.RelationKeyCoverId.String()]) + }) } diff --git a/core/block/import/notion/api/page/task.go b/core/block/import/notion/api/page/task.go index 5043a283d..701ab1d04 100644 --- a/core/block/import/notion/api/page/task.go +++ b/core/block/import/notion/api/page/task.go @@ -14,6 +14,7 @@ import ( "github.com/anyproto/anytype-heart/core/block/import/common" "github.com/anyproto/anytype-heart/core/block/import/notion/api" "github.com/anyproto/anytype-heart/core/block/import/notion/api/block" + "github.com/anyproto/anytype-heart/core/block/import/notion/api/files" "github.com/anyproto/anytype-heart/core/block/import/notion/api/property" "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pb" @@ -46,6 +47,7 @@ type Task struct { propertyService *property.Service blockService *block.Service p Page + fileDownloader files.Downloader } func (pt *Task) ID() string { @@ -55,12 +57,12 @@ func (pt *Task) ID() string { func (pt *Task) Execute(data interface{}) interface{} { do := data.(*DataObject) allErrors := common.NewError(do.mode) - snapshot, subObjectsSnapshots := pt.makeSnapshotFromPages(do, allErrors) + snapshot, relationsAndOptionsSnapshots := pt.makeSnapshotFromPages(do, allErrors) if allErrors.ShouldAbortImport(0, model.Import_Notion) { return &Result{ce: allErrors} } pageId := do.request.NotionPageIdsToAnytype[pt.p.ID] - resultSnapshots := make([]*common.Snapshot, 0, 1+len(subObjectsSnapshots)) + resultSnapshots := make([]*common.Snapshot, 0, 1+len(relationsAndOptionsSnapshots)) sn := &common.Snapshot{ Id: pageId, FileName: pt.p.URL, @@ -68,7 +70,7 @@ func (pt *Task) Execute(data interface{}) interface{} { SbType: smartblock.SmartBlockTypePage, } resultSnapshots = append(resultSnapshots, sn) - for _, objectsSnapshot := range subObjectsSnapshots { + for _, objectsSnapshot := range relationsAndOptionsSnapshots { sbType := pt.getSmartBlockTypeAndID(objectsSnapshot) resultSnapshots = append(resultSnapshots, &common.Snapshot{ Id: pbtypes.GetString(objectsSnapshot.Details, bundle.RelationKeyId.String()), @@ -80,7 +82,7 @@ func (pt *Task) Execute(data interface{}) interface{} { } func (pt *Task) makeSnapshotFromPages(object *DataObject, allErrors *common.ConvertError) (*model.SmartBlockSnapshotBase, []*model.SmartBlockSnapshotBase) { - details, subObjectsSnapshots, relationLinks := pt.provideDetails(object) + details, relationsAndOptionsSnapshots, relationLinks := pt.provideDetails(object) notionBlocks, blocksAndChildrenErr := pt.blockService.GetBlocksAndChildren(object.ctx, pt.p.ID, object.apiKey, pageSize, object.mode) if blocksAndChildrenErr != nil { allErrors.Merge(blocksAndChildrenErr) @@ -89,15 +91,75 @@ func (pt *Task) makeSnapshotFromPages(object *DataObject, allErrors *common.Conv } } resp := pt.blockService.MapNotionBlocksToAnytype(object.request, notionBlocks, pt.p.ID) + pt.uploadFilesLocally(resp.Blocks) snapshot := pt.provideSnapshot(resp.Blocks, details, relationLinks) - return snapshot, subObjectsSnapshots + return snapshot, relationsAndOptionsSnapshots +} + +func (pt *Task) uploadFilesLocally(blocks []*model.Block) { + var ( + wg sync.WaitGroup + filesUploadTasks []func() + ) + for _, block := range blocks { + if block.GetFile() != nil && block.GetFile().GetName() != "" { + task, stop := pt.uploadFileBlock(block, &wg) + if stop { + break + } + filesUploadTasks = append(filesUploadTasks, task) + } + if block.GetText() != nil && block.GetText().GetIconImage() != "" { + task, stop := pt.uploadIconImage(block, &wg) + if stop { + break + } + filesUploadTasks = append(filesUploadTasks, task) + } + } + for _, task := range filesUploadTasks { + go task() + } + wg.Wait() +} + +func (pt *Task) uploadFileBlock(block *model.Block, wg *sync.WaitGroup) (func(), bool) { + file, stop := pt.fileDownloader.QueueFileForDownload(block.GetFile().GetName()) + if stop { + return nil, true + } + wg.Add(1) + return func() { + defer wg.Done() + localPath, err := file.WaitForLocalPath() + if err != nil { + log.Errorf("failed to download file: %s", err) + } + block.GetFile().Name = localPath + }, false +} + +func (pt *Task) uploadIconImage(block *model.Block, wg *sync.WaitGroup) (func(), bool) { + file, stop := pt.fileDownloader.QueueFileForDownload(block.GetText().GetIconImage()) + if stop { + return nil, true + } + wg.Add(1) + return func() { + defer wg.Done() + localPath, err := file.WaitForLocalPath() + if err != nil { + log.Errorf("failed to download file: %s", err) + } + block.GetText().IconImage = localPath + }, false } func (pt *Task) provideDetails(object *DataObject) (map[string]*types.Value, []*model.SmartBlockSnapshotBase, []*model.RelationLink) { details, relationLinks := pt.prepareDetails() relationsSnapshots, notionRelationLinks := pt.handlePageProperties(object, details) relationLinks = append(relationLinks, notionRelationLinks...) - addCoverDetail(pt.p, details) + api.UploadFileRelationLocally(pt.fileDownloader, details, relationLinks) return details, relationsSnapshots, relationLinks } @@ -120,6 +182,14 @@ func (pt *Task) prepareDetails() (map[string]*types.Value, []*model.RelationLink relationLinks = append(relationLinks, iconRelationLink) } } + if pt.p.Cover != nil { + api.SetCover(details, pt.p.Cover) + relationLinks = append(relationLinks, &model.RelationLink{ + Key: bundle.RelationKeyCoverId.String(), + Format: model.RelationFormat_file, + }) + } + details[bundle.RelationKeyIsArchived.String()] = pbtypes.Bool(pt.p.Archived) details[bundle.RelationKeyIsFavorite.String()] = pbtypes.Bool(false) createdTime := common.ConvertStringToTime(pt.p.CreatedTime) @@ -167,22 +237,11 @@ func (pt *Task) makeRelationFromProperty(relation *property.PropertiesStore, hasTag, tagExist bool) ([]*model.SmartBlockSnapshotBase, *model.RelationLink, error) { pt.relationCreateMutex.Lock() defer pt.relationCreateMutex.Unlock() - var ( - snapshot *model.SmartBlockSnapshotBase - key string - subObjectsSnapshots []*model.SmartBlockSnapshotBase - ) - if snapshot = relation.ReadRelationsMap(propObject.GetID()); snapshot == nil { - snapshot, key = pt.getRelationSnapshot(name, propObject, hasTag, tagExist) - if snapshot != nil { - relation.WriteToRelationsMap(propObject.GetID(), snapshot) - subObjectsSnapshots = append(subObjectsSnapshots, snapshot) - } - } + snapshot, key, relationsAndOptionsSnapshots := pt.provideRelationSnapshot(relation, propObject, name, hasTag, tagExist) if key == "" { key = pbtypes.GetString(snapshot.GetDetails(), bundle.RelationKeyRelationKey.String()) } - subObjectsSnapshots = append(subObjectsSnapshots, pt.provideRelationOptionsSnapshots(key, propObject, relation)...) + relationsAndOptionsSnapshots = append(relationsAndOptionsSnapshots, pt.provideRelationOptionsSnapshots(key, propObject, relation)...) if err := pt.setDetails(propObject, key, details); err != nil { return nil, nil, err } @@ -190,10 +249,34 @@ func (pt *Task) makeRelationFromProperty(relation *property.PropertiesStore, Key: key, Format: propObject.GetFormat(), } - return subObjectsSnapshots, relationLink, nil + return relationsAndOptionsSnapshots, relationLink, nil } -func (pt *Task) getRelationSnapshot(name string, propObject property.Object, hasTag bool, tagExist bool) (*model.SmartBlockSnapshotBase, string) { +func (pt *Task) provideRelationSnapshot( + relation *property.PropertiesStore, + propObject property.Object, + name string, + hasTag, tagExist bool, +) (*model.SmartBlockSnapshotBase, string, []*model.SmartBlockSnapshotBase) { + var ( + key string + relationsAndOptionsSnapshots []*model.SmartBlockSnapshotBase + ) + snapshot := relation.GetSnapshotByNameAndFormat(name, int64(propObject.GetFormat())) + if snapshot == nil { + if snapshot = relation.ReadRelationsMap(propObject.GetID()); snapshot == nil { + snapshot, key = pt.getRelationSnapshot(name, propObject, hasTag, tagExist) + if snapshot != nil { + relation.WriteToRelationsMap(propObject.GetID(), snapshot) + relation.AddSnapshotByNameAndFormat(name, int64(propObject.GetFormat()), snapshot) + relationsAndOptionsSnapshots = append(relationsAndOptionsSnapshots, snapshot) + } + } + } + return snapshot, key, relationsAndOptionsSnapshots +} + +func (pt *Task) getRelationSnapshot(name string, propObject property.Object, hasTag, tagExist bool) (*model.SmartBlockSnapshotBase, string) { key := bson.NewObjectId().Hex() if propObject.GetPropertyType() == property.PropertyConfigTypeTitle { return nil, bundle.RelationKeyName.String() @@ -213,11 +296,11 @@ func (pt *Task) getRelationSnapshot(name string, propObject property.Object, has func (pt *Task) provideRelationOptionsSnapshots(id string, propObject property.Object, relation *property.PropertiesStore) []*model.SmartBlockSnapshotBase { pt.relationOptCreateMutex.Lock() defer pt.relationOptCreateMutex.Unlock() - subObjectsSnapshots := make([]*model.SmartBlockSnapshotBase, 0) + relationsAndOptionsSnapshots := make([]*model.SmartBlockSnapshotBase, 0) if isPropertyTag(propObject) { - subObjectsSnapshots = append(subObjectsSnapshots, getRelationOptions(propObject, id, relation)...) + relationsAndOptionsSnapshots = append(relationsAndOptionsSnapshots, getRelationOptions(propObject, id, relation)...) } - return subObjectsSnapshots + return relationsAndOptionsSnapshots } func (pt *Task) getRelationDetails(key string, name string, propObject property.Object) *types.Struct { @@ -261,6 +344,9 @@ func (pt *Task) handlePagination(ctx context.Context, apiKey string, propObject properties []interface{} err error ) + if isEmpty(propObject) { + return nil + } if properties, err = pt.propertyService.GetPropertyObject( ctx, @@ -276,6 +362,14 @@ func (pt *Task) handlePagination(ctx context.Context, apiKey string, propObject return nil } +func isEmpty(object property.Object) bool { + paginatedObject, ok := object.(property.PaginatedObject) + if !ok { + return false + } + return paginatedObject.IsEmpty() +} + func (pt *Task) handlePaginatedProperties(propObject property.Object, properties []interface{}) { switch pr := propObject.(type) { case *property.RelationItem: @@ -330,20 +424,6 @@ func handleRelationItem(properties []interface{}, pr *property.RelationItem) { pr.Relation = relationItems } -func addCoverDetail(p Page, details map[string]*types.Value) { - if p.Cover != nil { - if p.Cover.Type == api.External { - details[bundle.RelationKeyCoverId.String()] = pbtypes.String(p.Cover.External.URL) - details[bundle.RelationKeyCoverType.String()] = pbtypes.Float64(1) - } - - if p.Cover.Type == api.File { - details[bundle.RelationKeyCoverId.String()] = pbtypes.String(p.Cover.File.URL) - details[bundle.RelationKeyCoverType.String()] = pbtypes.Float64(1) - } - } -} - func isPropertyPaginated(pr property.Object) bool { if r, ok := pr.(*property.RelationItem); ok && r.HasMore { return true diff --git a/core/block/import/notion/api/property/propertyitem.go b/core/block/import/notion/api/property/propertyitem.go index 9b7e99a01..d9b57ed28 100644 --- a/core/block/import/notion/api/property/propertyitem.go +++ b/core/block/import/notion/api/property/propertyitem.go @@ -33,6 +33,11 @@ type Object interface { FormatGetter } +type PaginatedObject interface { + Object + IsEmpty() bool +} + const ( PropertyConfigTypeTitle ConfigType = "title" PropertyConfigTypeRichText ConfigType = "rich_text" @@ -103,6 +108,10 @@ type RichTextItem struct { RichText []*api.RichText `json:"rich_text"` } +func (rt *RichTextItem) IsEmpty() bool { + return len(rt.RichText) == 0 +} + func (rt *RichTextItem) SetDetail(key string, details map[string]*types.Value) { var richText strings.Builder for i, r := range rt.RichText { @@ -322,6 +331,10 @@ type PeopleItem struct { People []*api.User `json:"people"` } +func (p *PeopleItem) IsEmpty() bool { + return len(p.People) == 0 +} + func (p *PeopleItem) SetDetail(key string, details map[string]*types.Value) { peopleList := make([]string, 0, len(p.People)) for _, people := range p.People { diff --git a/core/block/import/notion/api/property/relationsmaps.go b/core/block/import/notion/api/property/relationsmaps.go index 8ebd7e777..a9c8cb30a 100644 --- a/core/block/import/notion/api/property/relationsmaps.go +++ b/core/block/import/notion/api/property/relationsmaps.go @@ -1,10 +1,44 @@ package property -import "github.com/anyproto/anytype-heart/pkg/lib/pb/model" +import ( + "fmt" + + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" +) + +type UniqueKey string + +func MakeUniqueKey(name string, format int64) UniqueKey { + return UniqueKey(fmt.Sprintf("%s_%d", name, format)) +} type PropertiesStore struct { - PropertyIdsToSnapshots map[string]*model.SmartBlockSnapshotBase - RelationsIdsToOptions map[string][]*model.SmartBlockSnapshotBase + PropertyIdsToSnapshots map[string]*model.SmartBlockSnapshotBase + RelationsIdsToOptions map[string][]*model.SmartBlockSnapshotBase + uniquePropertyToSnapshots map[UniqueKey]*model.SmartBlockSnapshotBase +} + +func NewPropertiesStore() *PropertiesStore { + return &PropertiesStore{ + PropertyIdsToSnapshots: make(map[string]*model.SmartBlockSnapshotBase, 0), + RelationsIdsToOptions: make(map[string][]*model.SmartBlockSnapshotBase, 0), + uniquePropertyToSnapshots: make(map[UniqueKey]*model.SmartBlockSnapshotBase, 0), + } +} + +func (m *PropertiesStore) GetSnapshotByNameAndFormat(name string, format int64) *model.SmartBlockSnapshotBase { + uk := MakeUniqueKey(name, format) + if snapshot, ok := m.uniquePropertyToSnapshots[uk]; ok { + return snapshot + } + return nil +} + +func (m *PropertiesStore) AddSnapshotByNameAndFormat(name string, format int64, sn *model.SmartBlockSnapshotBase) { + uk := MakeUniqueKey(name, format) + if _, ok := m.uniquePropertyToSnapshots[uk]; !ok { + m.uniquePropertyToSnapshots[uk] = sn + } } func (m *PropertiesStore) ReadRelationsMap(key string) *model.SmartBlockSnapshotBase { diff --git a/core/block/import/notion/api/search/search_test.go b/core/block/import/notion/api/search/search_test.go index 28d597e35..13943e029 100644 --- a/core/block/import/notion/api/search/search_test.go +++ b/core/block/import/notion/api/search/search_test.go @@ -7,10 +7,12 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" "github.com/anyproto/anytype-heart/core/block/import/notion/api" "github.com/anyproto/anytype-heart/core/block/import/notion/api/client" "github.com/anyproto/anytype-heart/core/block/import/notion/api/database" + "github.com/anyproto/anytype-heart/core/block/import/notion/api/files/mock_files" "github.com/anyproto/anytype-heart/core/block/process" "github.com/anyproto/anytype-heart/pb" ) @@ -32,10 +34,13 @@ func Test_GetDatabaseSuccess(t *testing.T) { assert.Nil(t, err) ds := database.New(nil) - databases, _, ce := ds.GetDatabase(context.Background(), pb.RpcObjectImportRequest_ALL_OR_NOTHING, db, process.NewProgress(pb.ModelProcess_Import), api.NewNotionImportContext()) + progress := process.NewProgress(pb.ModelProcess_Import) + downloader := mock_files.NewMockDownloader(t) + downloader.EXPECT().QueueFileForDownload(mock.Anything).Return(nil, true) + databases, _, ce := ds.GetDatabase(context.Background(), pb.RpcObjectImportRequest_ALL_OR_NOTHING, db, progress, api.NewNotionImportContext(), downloader) assert.NotNil(t, databases) - assert.Len(t, databases.Snapshots, 16) //1 database + 15 properties (name doesn't count) + assert.Len(t, databases.Snapshots, 16) // 1 database + 15 properties (name doesn't count) assert.Nil(t, ce) } diff --git a/core/block/import/notion/converter.go b/core/block/import/notion/converter.go index 31cb3006d..92ba43b0a 100644 --- a/core/block/import/notion/converter.go +++ b/core/block/import/notion/converter.go @@ -11,6 +11,7 @@ import ( "github.com/anyproto/anytype-heart/core/block/import/notion/api" "github.com/anyproto/anytype-heart/core/block/import/notion/api/client" "github.com/anyproto/anytype-heart/core/block/import/notion/api/database" + "github.com/anyproto/anytype-heart/core/block/import/notion/api/files" "github.com/anyproto/anytype-heart/core/block/import/notion/api/page" "github.com/anyproto/anytype-heart/core/block/import/notion/api/property" "github.com/anyproto/anytype-heart/core/block/import/notion/api/search" @@ -78,8 +79,15 @@ func (n *Notion) GetSnapshots(ctx context.Context, req *pb.RpcObjectImportReques return nil, common.NewFromError(common.ErrNoObjectsToImport, req.Mode) } + fileDownloader := files.NewFileDownloader(progress) + err = fileDownloader.Init(ctx) + if err != nil { + return nil, common.NewFromError(err, req.Mode) + } + go fileDownloader.ProcessDownloadedFiles() + defer fileDownloader.StopDownload() notionImportContext := api.NewNotionImportContext() - dbSnapshots, relations, dbErr := n.dbService.GetDatabase(context.TODO(), req.Mode, db, progress, notionImportContext) + dbSnapshots, relations, dbErr := n.dbService.GetDatabase(ctx, req.Mode, db, progress, notionImportContext, fileDownloader) if dbErr != nil { log.With("error", dbErr).Warnf("import from notion db failed") ce.Merge(dbErr) @@ -88,7 +96,7 @@ func (n *Notion) GetSnapshots(ctx context.Context, req *pb.RpcObjectImportReques return nil, ce } - pgSnapshots, pgErr := n.pgService.GetPages(ctx, apiKey, req.Mode, pages, notionImportContext, relations, progress) + pgSnapshots, pgErr := n.pgService.GetPages(ctx, apiKey, req.Mode, pages, notionImportContext, relations, progress, fileDownloader) if pgErr != nil { log.With("error", pgErr).Warnf("import from notion pages failed") ce.Merge(pgErr) diff --git a/core/block/service.go b/core/block/service.go index 550a9af1a..2a1cd0043 100644 --- a/core/block/service.go +++ b/core/block/service.go @@ -36,7 +36,6 @@ import ( "github.com/anyproto/anytype-heart/core/files/fileobject" "github.com/anyproto/anytype-heart/core/files/fileuploader" "github.com/anyproto/anytype-heart/core/session" - "github.com/anyproto/anytype-heart/core/syncstatus" "github.com/anyproto/anytype-heart/metrics" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -89,7 +88,6 @@ func New() *Service { } type Service struct { - syncStatus syncstatus.Service eventSender event.Sender process process.Service objectStore objectstore.ObjectStore @@ -130,7 +128,6 @@ func (s *Service) Name() string { } func (s *Service) Init(a *app.App) (err error) { - s.syncStatus = a.MustComponent(syncstatus.CName).(syncstatus.Service) s.process = a.MustComponent(process.CName).(process.Service) s.eventSender = a.MustComponent(event.CName).(event.Sender) s.objectStore = a.MustComponent(objectstore.CName).(objectstore.ObjectStore) @@ -195,14 +192,6 @@ func (s *Service) OpenBlock(sctx session.Context, id domain.FullID, includeRelat } afterShowTime := time.Now() - _, err = s.syncStatus.Watch(id.SpaceID, id.ObjectID, nil) - - if err == nil { - ob.AddHook(func(_ smartblock.ApplyInfo) error { - s.syncStatus.Unwatch(id.SpaceID, id.ObjectID) - return nil - }, smartblock.HookOnClose) - } if err != nil && !errors.Is(err, treestorage.ErrUnknownTreeId) { log.Errorf("failed to watch status for object %s: %s", id, err) } diff --git a/core/chats.go b/core/chats.go new file mode 100644 index 000000000..994a57bdc --- /dev/null +++ b/core/chats.go @@ -0,0 +1,99 @@ +package core + +import ( + "context" + + "github.com/anyproto/anytype-heart/pb" +) + +// TODO: chats are temporary done as dummy API for clients to merge the API + +func (mw *Middleware) ObjectChatAdd(ctx context.Context, request *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse { + // TODO implement me + return &pb.RpcObjectChatAddResponse{ + Error: &pb.RpcObjectChatAddResponseError{ + Code: pb.RpcObjectChatAddResponseError_UNKNOWN_ERROR, + Description: "not implemented", + }, + } +} + +func (mw *Middleware) ChatAddMessage(ctx context.Context, request *pb.RpcChatAddMessageRequest) *pb.RpcChatAddMessageResponse { + // TODO implement me + return &pb.RpcChatAddMessageResponse{ + Error: &pb.RpcChatAddMessageResponseError{ + Code: pb.RpcChatAddMessageResponseError_UNKNOWN_ERROR, + Description: "not implemented", + }, + } +} + +func (mw *Middleware) ChatEditMessageContent(ctx context.Context, request *pb.RpcChatEditMessageContentRequest) *pb.RpcChatEditMessageContentResponse { + // TODO implement me + return &pb.RpcChatEditMessageContentResponse{ + Error: &pb.RpcChatEditMessageContentResponseError{ + Code: pb.RpcChatEditMessageContentResponseError_UNKNOWN_ERROR, + Description: "not implemented", + }, + } +} + +func (mw *Middleware) ChatToggleMessageReaction(ctx context.Context, request *pb.RpcChatToggleMessageReactionRequest) *pb.RpcChatToggleMessageReactionResponse { + // TODO implement me + return &pb.RpcChatToggleMessageReactionResponse{ + Error: &pb.RpcChatToggleMessageReactionResponseError{ + Code: pb.RpcChatToggleMessageReactionResponseError_UNKNOWN_ERROR, + Description: "not implemented", + }, + } +} + +func (mw *Middleware) ChatDeleteMessage(ctx context.Context, request *pb.RpcChatDeleteMessageRequest) *pb.RpcChatDeleteMessageResponse { + // TODO implement me + return &pb.RpcChatDeleteMessageResponse{ + Error: &pb.RpcChatDeleteMessageResponseError{ + Code: pb.RpcChatDeleteMessageResponseError_UNKNOWN_ERROR, + Description: "not implemented", + }, + } +} + +func (mw *Middleware) ChatGetMessages(ctx context.Context, request *pb.RpcChatGetMessagesRequest) *pb.RpcChatGetMessagesResponse { + // TODO implement me + return &pb.RpcChatGetMessagesResponse{ + Error: &pb.RpcChatGetMessagesResponseError{ + Code: pb.RpcChatGetMessagesResponseError_UNKNOWN_ERROR, + Description: "not implemented", + }, + } +} + +func (mw *Middleware) ChatGetMessagesByIds(ctx context.Context, request *pb.RpcChatGetMessagesByIdsRequest) *pb.RpcChatGetMessagesByIdsResponse { + // TODO implement me + return &pb.RpcChatGetMessagesByIdsResponse{ + Error: &pb.RpcChatGetMessagesByIdsResponseError{ + Code: pb.RpcChatGetMessagesByIdsResponseError_UNKNOWN_ERROR, + Description: "not implemented", + }, + } +} + +func (mw *Middleware) ChatSubscribeLastMessages(ctx context.Context, request *pb.RpcChatSubscribeLastMessagesRequest) *pb.RpcChatSubscribeLastMessagesResponse { + // TODO implement me + return &pb.RpcChatSubscribeLastMessagesResponse{ + Error: &pb.RpcChatSubscribeLastMessagesResponseError{ + Code: pb.RpcChatSubscribeLastMessagesResponseError_UNKNOWN_ERROR, + Description: "not implemented", + }, + } +} + +func (mw *Middleware) ChatUnsubscribe(ctx context.Context, request *pb.RpcChatUnsubscribeRequest) *pb.RpcChatUnsubscribeResponse { + // TODO implement me + return &pb.RpcChatUnsubscribeResponse{ + Error: &pb.RpcChatUnsubscribeResponseError{ + Code: pb.RpcChatUnsubscribeResponseError_UNKNOWN_ERROR, + Description: "not implemented", + }, + } +} diff --git a/core/debug.go b/core/debug.go index 1e73a752f..d1ba42908 100644 --- a/core/debug.go +++ b/core/debug.go @@ -224,7 +224,7 @@ func (mw *Middleware) DebugRunProfiler(cctx context.Context, req *pb.RpcDebugRun } func (mw *Middleware) DebugAccountSelectTrace(cctx context.Context, req *pb.RpcDebugAccountSelectTraceRequest) *pb.RpcDebugAccountSelectTraceResponse { - path, err := mw.applicationService.SaveLoginTrace() + path, err := mw.applicationService.SaveLoginTrace(req.Dir) if err != nil { return &pb.RpcDebugAccountSelectTraceResponse{ Error: &pb.RpcDebugAccountSelectTraceResponseError{ diff --git a/core/device/mock_device/mock_NetworkState.go b/core/device/mock_device/mock_NetworkState.go new file mode 100644 index 000000000..ba6c34e59 --- /dev/null +++ b/core/device/mock_device/mock_NetworkState.go @@ -0,0 +1,240 @@ +// Code generated by mockery. DO NOT EDIT. + +package mock_device + +import ( + app "github.com/anyproto/any-sync/app" + + mock "github.com/stretchr/testify/mock" + + model "github.com/anyproto/anytype-heart/pkg/lib/pb/model" +) + +// MockNetworkState is an autogenerated mock type for the NetworkState type +type MockNetworkState struct { + mock.Mock +} + +type MockNetworkState_Expecter struct { + mock *mock.Mock +} + +func (_m *MockNetworkState) EXPECT() *MockNetworkState_Expecter { + return &MockNetworkState_Expecter{mock: &_m.Mock} +} + +// GetNetworkState provides a mock function with given fields: +func (_m *MockNetworkState) GetNetworkState() model.DeviceNetworkType { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for GetNetworkState") + } + + var r0 model.DeviceNetworkType + if rf, ok := ret.Get(0).(func() model.DeviceNetworkType); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(model.DeviceNetworkType) + } + + return r0 +} + +// MockNetworkState_GetNetworkState_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetNetworkState' +type MockNetworkState_GetNetworkState_Call struct { + *mock.Call +} + +// GetNetworkState is a helper method to define mock.On call +func (_e *MockNetworkState_Expecter) GetNetworkState() *MockNetworkState_GetNetworkState_Call { + return &MockNetworkState_GetNetworkState_Call{Call: _e.mock.On("GetNetworkState")} +} + +func (_c *MockNetworkState_GetNetworkState_Call) Run(run func()) *MockNetworkState_GetNetworkState_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockNetworkState_GetNetworkState_Call) Return(_a0 model.DeviceNetworkType) *MockNetworkState_GetNetworkState_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockNetworkState_GetNetworkState_Call) RunAndReturn(run func() model.DeviceNetworkType) *MockNetworkState_GetNetworkState_Call { + _c.Call.Return(run) + return _c +} + +// Init provides a mock function with given fields: a +func (_m *MockNetworkState) Init(a *app.App) error { + ret := _m.Called(a) + + if len(ret) == 0 { + panic("no return value specified for Init") + } + + var r0 error + if rf, ok := ret.Get(0).(func(*app.App) error); ok { + r0 = rf(a) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// MockNetworkState_Init_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Init' +type MockNetworkState_Init_Call struct { + *mock.Call +} + +// Init is a helper method to define mock.On call +// - a *app.App +func (_e *MockNetworkState_Expecter) Init(a interface{}) *MockNetworkState_Init_Call { + return &MockNetworkState_Init_Call{Call: _e.mock.On("Init", a)} +} + +func (_c *MockNetworkState_Init_Call) Run(run func(a *app.App)) *MockNetworkState_Init_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(*app.App)) + }) + return _c +} + +func (_c *MockNetworkState_Init_Call) Return(err error) *MockNetworkState_Init_Call { + _c.Call.Return(err) + return _c +} + +func (_c *MockNetworkState_Init_Call) RunAndReturn(run func(*app.App) error) *MockNetworkState_Init_Call { + _c.Call.Return(run) + return _c +} + +// Name provides a mock function with given fields: +func (_m *MockNetworkState) Name() string { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for Name") + } + + var r0 string + if rf, ok := ret.Get(0).(func() string); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(string) + } + + return r0 +} + +// MockNetworkState_Name_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Name' +type MockNetworkState_Name_Call struct { + *mock.Call +} + +// Name is a helper method to define mock.On call +func (_e *MockNetworkState_Expecter) Name() *MockNetworkState_Name_Call { + return &MockNetworkState_Name_Call{Call: _e.mock.On("Name")} +} + +func (_c *MockNetworkState_Name_Call) Run(run func()) *MockNetworkState_Name_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockNetworkState_Name_Call) Return(name string) *MockNetworkState_Name_Call { + _c.Call.Return(name) + return _c +} + +func (_c *MockNetworkState_Name_Call) RunAndReturn(run func() string) *MockNetworkState_Name_Call { + _c.Call.Return(run) + return _c +} + +// RegisterHook provides a mock function with given fields: hook +func (_m *MockNetworkState) RegisterHook(hook func(model.DeviceNetworkType)) { + _m.Called(hook) +} + +// MockNetworkState_RegisterHook_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RegisterHook' +type MockNetworkState_RegisterHook_Call struct { + *mock.Call +} + +// RegisterHook is a helper method to define mock.On call +// - hook func(model.DeviceNetworkType) +func (_e *MockNetworkState_Expecter) RegisterHook(hook interface{}) *MockNetworkState_RegisterHook_Call { + return &MockNetworkState_RegisterHook_Call{Call: _e.mock.On("RegisterHook", hook)} +} + +func (_c *MockNetworkState_RegisterHook_Call) Run(run func(hook func(model.DeviceNetworkType))) *MockNetworkState_RegisterHook_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(func(model.DeviceNetworkType))) + }) + return _c +} + +func (_c *MockNetworkState_RegisterHook_Call) Return() *MockNetworkState_RegisterHook_Call { + _c.Call.Return() + return _c +} + +func (_c *MockNetworkState_RegisterHook_Call) RunAndReturn(run func(func(model.DeviceNetworkType))) *MockNetworkState_RegisterHook_Call { + _c.Call.Return(run) + return _c +} + +// SetNetworkState provides a mock function with given fields: networkState +func (_m *MockNetworkState) SetNetworkState(networkState model.DeviceNetworkType) { + _m.Called(networkState) +} + +// MockNetworkState_SetNetworkState_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetNetworkState' +type MockNetworkState_SetNetworkState_Call struct { + *mock.Call +} + +// SetNetworkState is a helper method to define mock.On call +// - networkState model.DeviceNetworkType +func (_e *MockNetworkState_Expecter) SetNetworkState(networkState interface{}) *MockNetworkState_SetNetworkState_Call { + return &MockNetworkState_SetNetworkState_Call{Call: _e.mock.On("SetNetworkState", networkState)} +} + +func (_c *MockNetworkState_SetNetworkState_Call) Run(run func(networkState model.DeviceNetworkType)) *MockNetworkState_SetNetworkState_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(model.DeviceNetworkType)) + }) + return _c +} + +func (_c *MockNetworkState_SetNetworkState_Call) Return() *MockNetworkState_SetNetworkState_Call { + _c.Call.Return() + return _c +} + +func (_c *MockNetworkState_SetNetworkState_Call) RunAndReturn(run func(model.DeviceNetworkType)) *MockNetworkState_SetNetworkState_Call { + _c.Call.Return(run) + return _c +} + +// NewMockNetworkState creates a new instance of MockNetworkState. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockNetworkState(t interface { + mock.TestingT + Cleanup(func()) +}) *MockNetworkState { + mock := &MockNetworkState{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/core/device/networkstate.go b/core/device/networkstate.go index 52c06dc5f..ef31f0282 100644 --- a/core/device/networkstate.go +++ b/core/device/networkstate.go @@ -10,20 +10,18 @@ import ( const CName = "networkState" -type OnNetworkUpdateHook func(network model.DeviceNetworkType) - type NetworkState interface { app.Component GetNetworkState() model.DeviceNetworkType SetNetworkState(networkState model.DeviceNetworkType) - RegisterHook(hook OnNetworkUpdateHook) + RegisterHook(hook func(network model.DeviceNetworkType)) } type networkState struct { networkState model.DeviceNetworkType networkMu sync.Mutex - onNetworkUpdateHooks []OnNetworkUpdateHook + onNetworkUpdateHooks []func(network model.DeviceNetworkType) hookMu sync.Mutex } @@ -47,12 +45,17 @@ func (n *networkState) GetNetworkState() model.DeviceNetworkType { func (n *networkState) SetNetworkState(networkState model.DeviceNetworkType) { n.networkMu.Lock() - n.networkState = networkState defer n.networkMu.Unlock() + + if n.networkState == networkState { + // to avoid unnecessary hook calls + return + } + n.networkState = networkState n.runOnNetworkUpdateHook() } -func (n *networkState) RegisterHook(hook OnNetworkUpdateHook) { +func (n *networkState) RegisterHook(hook func(network model.DeviceNetworkType)) { n.hookMu.Lock() defer n.hookMu.Unlock() n.onNetworkUpdateHooks = append(n.onNetworkUpdateHooks, hook) diff --git a/core/files/fileuploader/uploader.go b/core/files/fileuploader/uploader.go index 36c3dba65..7fae11eb2 100644 --- a/core/files/fileuploader/uploader.go +++ b/core/files/fileuploader/uploader.go @@ -269,7 +269,6 @@ func (u *uploader) SetUrl(url string) Uploader { // setting timeout to avoid locking for a long time cl := http.DefaultClient - cl.Timeout = time.Second * 20 resp, err := cl.Do(req) if err != nil { diff --git a/core/peerstatus/mock_peerstatus/mock_LocalDiscoveryHook.go b/core/peerstatus/mock_peerstatus/mock_LocalDiscoveryHook.go index 9452e1f63..0783aaf7d 100644 --- a/core/peerstatus/mock_peerstatus/mock_LocalDiscoveryHook.go +++ b/core/peerstatus/mock_peerstatus/mock_LocalDiscoveryHook.go @@ -4,6 +4,7 @@ package mock_peerstatus import ( app "github.com/anyproto/any-sync/app" + localdiscovery "github.com/anyproto/anytype-heart/space/spacecore/localdiscovery" mock "github.com/stretchr/testify/mock" ) @@ -111,68 +112,35 @@ func (_c *MockLocalDiscoveryHook_Name_Call) RunAndReturn(run func() string) *Moc return _c } -// RegisterP2PNotPossible provides a mock function with given fields: hook -func (_m *MockLocalDiscoveryHook) RegisterP2PNotPossible(hook func()) { +// RegisterDiscoveryPossibilityHook provides a mock function with given fields: hook +func (_m *MockLocalDiscoveryHook) RegisterDiscoveryPossibilityHook(hook func(localdiscovery.DiscoveryPossibility)) { _m.Called(hook) } -// MockLocalDiscoveryHook_RegisterP2PNotPossible_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RegisterP2PNotPossible' -type MockLocalDiscoveryHook_RegisterP2PNotPossible_Call struct { +// MockLocalDiscoveryHook_RegisterDiscoveryPossibilityHook_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RegisterDiscoveryPossibilityHook' +type MockLocalDiscoveryHook_RegisterDiscoveryPossibilityHook_Call struct { *mock.Call } -// RegisterP2PNotPossible is a helper method to define mock.On call -// - hook func() -func (_e *MockLocalDiscoveryHook_Expecter) RegisterP2PNotPossible(hook interface{}) *MockLocalDiscoveryHook_RegisterP2PNotPossible_Call { - return &MockLocalDiscoveryHook_RegisterP2PNotPossible_Call{Call: _e.mock.On("RegisterP2PNotPossible", hook)} +// RegisterDiscoveryPossibilityHook is a helper method to define mock.On call +// - hook func(localdiscovery.DiscoveryPossibility) +func (_e *MockLocalDiscoveryHook_Expecter) RegisterDiscoveryPossibilityHook(hook interface{}) *MockLocalDiscoveryHook_RegisterDiscoveryPossibilityHook_Call { + return &MockLocalDiscoveryHook_RegisterDiscoveryPossibilityHook_Call{Call: _e.mock.On("RegisterDiscoveryPossibilityHook", hook)} } -func (_c *MockLocalDiscoveryHook_RegisterP2PNotPossible_Call) Run(run func(hook func())) *MockLocalDiscoveryHook_RegisterP2PNotPossible_Call { +func (_c *MockLocalDiscoveryHook_RegisterDiscoveryPossibilityHook_Call) Run(run func(hook func(localdiscovery.DiscoveryPossibility))) *MockLocalDiscoveryHook_RegisterDiscoveryPossibilityHook_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(func())) + run(args[0].(func(localdiscovery.DiscoveryPossibility))) }) return _c } -func (_c *MockLocalDiscoveryHook_RegisterP2PNotPossible_Call) Return() *MockLocalDiscoveryHook_RegisterP2PNotPossible_Call { +func (_c *MockLocalDiscoveryHook_RegisterDiscoveryPossibilityHook_Call) Return() *MockLocalDiscoveryHook_RegisterDiscoveryPossibilityHook_Call { _c.Call.Return() return _c } -func (_c *MockLocalDiscoveryHook_RegisterP2PNotPossible_Call) RunAndReturn(run func(func())) *MockLocalDiscoveryHook_RegisterP2PNotPossible_Call { - _c.Call.Return(run) - return _c -} - -// RegisterResetNotPossible provides a mock function with given fields: hook -func (_m *MockLocalDiscoveryHook) RegisterResetNotPossible(hook func()) { - _m.Called(hook) -} - -// MockLocalDiscoveryHook_RegisterResetNotPossible_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RegisterResetNotPossible' -type MockLocalDiscoveryHook_RegisterResetNotPossible_Call struct { - *mock.Call -} - -// RegisterResetNotPossible is a helper method to define mock.On call -// - hook func() -func (_e *MockLocalDiscoveryHook_Expecter) RegisterResetNotPossible(hook interface{}) *MockLocalDiscoveryHook_RegisterResetNotPossible_Call { - return &MockLocalDiscoveryHook_RegisterResetNotPossible_Call{Call: _e.mock.On("RegisterResetNotPossible", hook)} -} - -func (_c *MockLocalDiscoveryHook_RegisterResetNotPossible_Call) Run(run func(hook func())) *MockLocalDiscoveryHook_RegisterResetNotPossible_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(func())) - }) - return _c -} - -func (_c *MockLocalDiscoveryHook_RegisterResetNotPossible_Call) Return() *MockLocalDiscoveryHook_RegisterResetNotPossible_Call { - _c.Call.Return() - return _c -} - -func (_c *MockLocalDiscoveryHook_RegisterResetNotPossible_Call) RunAndReturn(run func(func())) *MockLocalDiscoveryHook_RegisterResetNotPossible_Call { +func (_c *MockLocalDiscoveryHook_RegisterDiscoveryPossibilityHook_Call) RunAndReturn(run func(func(localdiscovery.DiscoveryPossibility))) *MockLocalDiscoveryHook_RegisterDiscoveryPossibilityHook_Call { _c.Call.Return(run) return _c } diff --git a/core/peerstatus/status.go b/core/peerstatus/status.go index 3ab5cfb3d..381cb3aee 100644 --- a/core/peerstatus/status.go +++ b/core/peerstatus/status.go @@ -13,6 +13,7 @@ import ( "github.com/anyproto/anytype-heart/core/session" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/logging" + "github.com/anyproto/anytype-heart/space/spacecore/localdiscovery" "github.com/anyproto/anytype-heart/space/spacecore/peerstore" ) @@ -29,6 +30,7 @@ const ( Connected Status = 1 NotPossible Status = 2 NotConnected Status = 3 + Restricted Status = 4 ) func (s Status) ToPb() pb.EventP2PStatusStatus { @@ -39,6 +41,9 @@ func (s Status) ToPb() pb.EventP2PStatusStatus { return pb.EventP2PStatus_NotConnected case NotPossible: return pb.EventP2PStatus_NotPossible + case Restricted: + return pb.EventP2PStatus_Restricted + } // default status is NotConnected return pb.EventP2PStatus_NotConnected @@ -46,8 +51,7 @@ func (s Status) ToPb() pb.EventP2PStatusStatus { type LocalDiscoveryHook interface { app.Component - RegisterP2PNotPossible(hook func()) - RegisterResetNotPossible(hook func()) + RegisterDiscoveryPossibilityHook(hook func(state localdiscovery.DiscoveryPossibility)) } type PeerToPeerStatus interface { @@ -69,7 +73,7 @@ type p2pStatus struct { peerStore peerstore.PeerStore sync.Mutex - p2pNotPossible bool // global flag means p2p is not possible because of network + p2pLastState localdiscovery.DiscoveryPossibility workerFinished chan struct{} refreshSpaceId chan string @@ -92,8 +96,7 @@ func (p *p2pStatus) Init(a *app.App) (err error) { p.peersConnectionPool = app.MustComponent[pool.Service](a) localDiscoveryHook := app.MustComponent[LocalDiscoveryHook](a) sessionHookRunner := app.MustComponent[session.HookRunner](a) - localDiscoveryHook.RegisterP2PNotPossible(p.setNotPossibleStatus) - localDiscoveryHook.RegisterResetNotPossible(p.resetNotPossibleStatus) + localDiscoveryHook.RegisterDiscoveryPossibilityHook(p.setNotPossibleStatus) sessionHookRunner.RegisterHook(p.sendStatusForNewSession) p.ctx, p.contextCancel = context.WithCancel(context.Background()) p.peerStore.AddObserver(func(peerId string, spaceIdsBefore, spaceIdsAfter []string, peerRemoved bool) { @@ -136,24 +139,13 @@ func (p *p2pStatus) Name() (name string) { return CName } -func (p *p2pStatus) setNotPossibleStatus() { +func (p *p2pStatus) setNotPossibleStatus(state localdiscovery.DiscoveryPossibility) { p.Lock() - if p.p2pNotPossible { + if p.p2pLastState == state { p.Unlock() return } - p.p2pNotPossible = true - p.Unlock() - p.refreshAllSpaces() -} - -func (p *p2pStatus) resetNotPossibleStatus() { - p.Lock() - if !p.p2pNotPossible { - p.Unlock() - return - } - p.p2pNotPossible = false + p.p2pLastState = state p.Unlock() p.refreshAllSpaces() } @@ -232,7 +224,7 @@ func (p *p2pStatus) processSpaceStatusUpdate(spaceId string) { p.spaceIds[spaceId] = currentStatus } connectionCount := p.countOpenConnections(spaceId) - newStatus := p.getResultStatus(p.p2pNotPossible, connectionCount) + newStatus := p.getResultStatus(p.p2pLastState, connectionCount) if currentStatus.status != newStatus || currentStatus.connectionsCount != connectionCount { p.sendEvent("", spaceId, newStatus.ToPb(), connectionCount) @@ -241,15 +233,18 @@ func (p *p2pStatus) processSpaceStatusUpdate(spaceId string) { } } -func (p *p2pStatus) getResultStatus(notPossible bool, connectionCount int64) Status { - if notPossible && connectionCount == 0 { - return NotPossible - } +func (p *p2pStatus) getResultStatus(state localdiscovery.DiscoveryPossibility, connectionCount int64) Status { if connectionCount == 0 { + if state == localdiscovery.DiscoveryNoInterfaces { + return NotPossible + } + if state == localdiscovery.DiscoveryLocalNetworkRestricted { + return Restricted + } return NotConnected - } else { - return Connected } + + return Connected } func (p *p2pStatus) countOpenConnections(spaceId string) int64 { diff --git a/core/peerstatus/status_test.go b/core/peerstatus/status_test.go index 51090e4be..2a9b2d2aa 100644 --- a/core/peerstatus/status_test.go +++ b/core/peerstatus/status_test.go @@ -18,6 +18,7 @@ import ( "github.com/anyproto/anytype-heart/core/peerstatus/mock_peerstatus" "github.com/anyproto/anytype-heart/core/session" "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/space/spacecore/localdiscovery" "github.com/anyproto/anytype-heart/space/spacecore/peerstore" "github.com/anyproto/anytype-heart/tests/testutil" ) @@ -61,7 +62,7 @@ func TestP2pStatus_SendNewStatus(t *testing.T) { }, }) - f.setNotPossibleStatus() + f.setNotPossibleStatus(localdiscovery.DiscoveryNoInterfaces) // then @@ -82,7 +83,7 @@ func TestP2pStatus_SendNewStatus(t *testing.T) { }, }, }) - f.resetNotPossibleStatus() + f.setNotPossibleStatus(localdiscovery.DiscoveryPossible) err = f.refreshSpaces([]string{"spaceId"}) assert.Nil(t, err) @@ -200,7 +201,7 @@ func TestP2pStatus_SendPeerUpdate(t *testing.T) { }, }, }) - f.setNotPossibleStatus() + f.setNotPossibleStatus(localdiscovery.DiscoveryNoInterfaces) checkStatus(t, "spaceId", f.p2pStatus, NotPossible) f.sender.EXPECT().Broadcast(&pb.Event{ @@ -277,11 +278,11 @@ func TestP2pStatus_SendPeerUpdate(t *testing.T) { }, }, }) - f.setNotPossibleStatus() + f.setNotPossibleStatus(localdiscovery.DiscoveryNoInterfaces) checkStatus(t, "spaceId", f.p2pStatus, NotPossible) // double set should not generate new event - f.setNotPossibleStatus() + f.setNotPossibleStatus(localdiscovery.DiscoveryNoInterfaces) checkStatus(t, "spaceId", f.p2pStatus, NotPossible) f.sender.EXPECT().Broadcast(&pb.Event{ @@ -298,7 +299,7 @@ func TestP2pStatus_SendPeerUpdate(t *testing.T) { }, }) - f.resetNotPossibleStatus() + f.setNotPossibleStatus(localdiscovery.DiscoveryPossible) checkStatus(t, "spaceId", f.p2pStatus, NotConnected) // then f.Close(nil) @@ -310,7 +311,7 @@ func TestP2pStatus_SendPeerUpdate(t *testing.T) { // when checkStatus(t, "spaceId", f.p2pStatus, NotConnected) - f.resetNotPossibleStatus() + f.setNotPossibleStatus(localdiscovery.DiscoveryPossible) checkStatus(t, "spaceId", f.p2pStatus, NotConnected) // then f.Close(nil) @@ -401,8 +402,7 @@ func newFixture(t *testing.T, spaceId string, initialStatus pb.EventP2PStatusSta pool.AddPeer(context.Background(), peer) store := peerstore.New() hookRegister := mock_peerstatus.NewMockLocalDiscoveryHook(t) - hookRegister.EXPECT().RegisterP2PNotPossible(mock.Anything).Return() - hookRegister.EXPECT().RegisterResetNotPossible(mock.Anything).Return() + hookRegister.EXPECT().RegisterDiscoveryPossibilityHook(mock.Anything).Return() a := &app.App{} ctx := context.Background() diff --git a/core/syncstatus/filestatus.go b/core/syncstatus/filestatus.go deleted file mode 100644 index e03e18d5b..000000000 --- a/core/syncstatus/filestatus.go +++ /dev/null @@ -1,46 +0,0 @@ -package syncstatus - -import ( - "context" - "fmt" - - "github.com/anyproto/anytype-heart/core/block/cache" - "github.com/anyproto/anytype-heart/core/block/editor/smartblock" - "github.com/anyproto/anytype-heart/core/domain" - "github.com/anyproto/anytype-heart/core/syncstatus/filesyncstatus" - "github.com/anyproto/anytype-heart/pkg/lib/bundle" - "github.com/anyproto/anytype-heart/util/pbtypes" -) - -func (s *service) onFileUploadStarted(objectId string, _ domain.FullFileId) error { - return s.indexFileSyncStatus(objectId, filesyncstatus.Syncing) -} - -func (s *service) onFileUploaded(objectId string, _ domain.FullFileId) error { - return s.indexFileSyncStatus(objectId, filesyncstatus.Synced) -} - -func (s *service) onFileLimited(objectId string, _ domain.FullFileId, bytesLeftPercentage float64) error { - return s.indexFileSyncStatus(objectId, filesyncstatus.Limited) -} - -func (s *service) indexFileSyncStatus(fileObjectId string, status filesyncstatus.Status) error { - err := cache.Do(s.objectGetter, fileObjectId, func(sb smartblock.SmartBlock) (err error) { - prevStatus := pbtypes.GetInt64(sb.Details(), bundle.RelationKeyFileBackupStatus.String()) - newStatus := int64(status) - if prevStatus == newStatus { - return nil - } - st := sb.NewState() - st.SetDetailAndBundledRelation(bundle.RelationKeyFileBackupStatus, pbtypes.Int64(newStatus)) - return sb.Apply(st) - }) - if err != nil { - return fmt.Errorf("get object: %w", err) - } - err = s.updateReceiver.UpdateTree(context.Background(), fileObjectId, status.ToSyncStatus()) - if err != nil { - return fmt.Errorf("update tree: %w", err) - } - return nil -} diff --git a/core/syncstatus/objectsyncstatus/mock_UpdateReceiver.go b/core/syncstatus/objectsyncstatus/mock_UpdateReceiver.go deleted file mode 100644 index 4164f1325..000000000 --- a/core/syncstatus/objectsyncstatus/mock_UpdateReceiver.go +++ /dev/null @@ -1,116 +0,0 @@ -// Code generated by mockery. DO NOT EDIT. - -package objectsyncstatus - -import ( - context "context" - - mock "github.com/stretchr/testify/mock" -) - -// MockUpdateReceiver is an autogenerated mock type for the UpdateReceiver type -type MockUpdateReceiver struct { - mock.Mock -} - -type MockUpdateReceiver_Expecter struct { - mock *mock.Mock -} - -func (_m *MockUpdateReceiver) EXPECT() *MockUpdateReceiver_Expecter { - return &MockUpdateReceiver_Expecter{mock: &_m.Mock} -} - -// UpdateNodeStatus provides a mock function with given fields: -func (_m *MockUpdateReceiver) UpdateNodeStatus() { - _m.Called() -} - -// MockUpdateReceiver_UpdateNodeStatus_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'UpdateNodeStatus' -type MockUpdateReceiver_UpdateNodeStatus_Call struct { - *mock.Call -} - -// UpdateNodeStatus is a helper method to define mock.On call -func (_e *MockUpdateReceiver_Expecter) UpdateNodeStatus() *MockUpdateReceiver_UpdateNodeStatus_Call { - return &MockUpdateReceiver_UpdateNodeStatus_Call{Call: _e.mock.On("UpdateNodeStatus")} -} - -func (_c *MockUpdateReceiver_UpdateNodeStatus_Call) Run(run func()) *MockUpdateReceiver_UpdateNodeStatus_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockUpdateReceiver_UpdateNodeStatus_Call) Return() *MockUpdateReceiver_UpdateNodeStatus_Call { - _c.Call.Return() - return _c -} - -func (_c *MockUpdateReceiver_UpdateNodeStatus_Call) RunAndReturn(run func()) *MockUpdateReceiver_UpdateNodeStatus_Call { - _c.Call.Return(run) - return _c -} - -// UpdateTree provides a mock function with given fields: ctx, treeId, status -func (_m *MockUpdateReceiver) UpdateTree(ctx context.Context, treeId string, status SyncStatus) error { - ret := _m.Called(ctx, treeId, status) - - if len(ret) == 0 { - panic("no return value specified for UpdateTree") - } - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string, SyncStatus) error); ok { - r0 = rf(ctx, treeId, status) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// MockUpdateReceiver_UpdateTree_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'UpdateTree' -type MockUpdateReceiver_UpdateTree_Call struct { - *mock.Call -} - -// UpdateTree is a helper method to define mock.On call -// - ctx context.Context -// - treeId string -// - status SyncStatus -func (_e *MockUpdateReceiver_Expecter) UpdateTree(ctx interface{}, treeId interface{}, status interface{}) *MockUpdateReceiver_UpdateTree_Call { - return &MockUpdateReceiver_UpdateTree_Call{Call: _e.mock.On("UpdateTree", ctx, treeId, status)} -} - -func (_c *MockUpdateReceiver_UpdateTree_Call) Run(run func(ctx context.Context, treeId string, status SyncStatus)) *MockUpdateReceiver_UpdateTree_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(string), args[2].(SyncStatus)) - }) - return _c -} - -func (_c *MockUpdateReceiver_UpdateTree_Call) Return(err error) *MockUpdateReceiver_UpdateTree_Call { - _c.Call.Return(err) - return _c -} - -func (_c *MockUpdateReceiver_UpdateTree_Call) RunAndReturn(run func(context.Context, string, SyncStatus) error) *MockUpdateReceiver_UpdateTree_Call { - _c.Call.Return(run) - return _c -} - -// NewMockUpdateReceiver creates a new instance of MockUpdateReceiver. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewMockUpdateReceiver(t interface { - mock.TestingT - Cleanup(func()) -}) *MockUpdateReceiver { - mock := &MockUpdateReceiver{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/core/syncstatus/objectsyncstatus/syncstatus.go b/core/syncstatus/objectsyncstatus/syncstatus.go index 90c9f77a1..5c85c19e9 100644 --- a/core/syncstatus/objectsyncstatus/syncstatus.go +++ b/core/syncstatus/objectsyncstatus/syncstatus.go @@ -7,18 +7,15 @@ import ( "github.com/anyproto/any-sync/app" "github.com/anyproto/any-sync/app/logger" - "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" "github.com/anyproto/any-sync/commonspace/spacestate" "github.com/anyproto/any-sync/commonspace/syncstatus" - "github.com/anyproto/any-sync/commonspace/spacestorage" "github.com/anyproto/any-sync/nodeconf" "github.com/anyproto/any-sync/util/periodicsync" "golang.org/x/exp/slices" "github.com/anyproto/anytype-heart/core/anytype/config" "github.com/anyproto/anytype-heart/core/domain" - "github.com/anyproto/anytype-heart/core/syncstatus/nodestatus" "github.com/anyproto/anytype-heart/util/slice" ) @@ -29,11 +26,6 @@ const ( var log = logger.NewNamed(syncstatus.CName) -type UpdateReceiver interface { - UpdateTree(ctx context.Context, treeId string, status SyncStatus) (err error) - UpdateNodeStatus() -} - type SyncStatus int const ( @@ -55,16 +47,9 @@ type StatusUpdater interface { RemoveAllExcept(senderId string, differentRemoteIds []string) } -type StatusWatcher interface { - Watch(treeId string) (err error) - Unwatch(treeId string) - SetUpdateReceiver(updater UpdateReceiver) -} - type StatusService interface { app.ComponentRunnable StatusUpdater - StatusWatcher } type treeStatus struct { @@ -79,21 +64,17 @@ type Updater interface { type syncStatusService struct { sync.Mutex - periodicSync periodicsync.PeriodicSync - updateReceiver UpdateReceiver - storage spacestorage.SpaceStorage + periodicSync periodicsync.PeriodicSync spaceId string synced []string tempSynced map[string]struct{} treeHeads map[string]treeHeadsEntry - watchers map[string]struct{} updateIntervalSecs int updateTimeout time.Duration syncDetailsUpdater Updater - nodeStatus nodestatus.NodeStatus config *config.Config nodeConfService nodeconf.Service } @@ -102,7 +83,6 @@ func NewSyncStatusService() StatusService { return &syncStatusService{ tempSynced: map[string]struct{}{}, treeHeads: map[string]treeHeadsEntry{}, - watchers: map[string]struct{}{}, } } @@ -111,7 +91,6 @@ func (s *syncStatusService) Init(a *app.App) (err error) { s.updateIntervalSecs = syncUpdateInterval s.updateTimeout = syncTimeout s.spaceId = sharedState.SpaceId - s.storage = app.MustComponent[spacestorage.SpaceStorage](a) s.periodicSync = periodicsync.NewPeriodicSync( s.updateIntervalSecs, s.updateTimeout, @@ -120,7 +99,6 @@ func (s *syncStatusService) Init(a *app.App) (err error) { s.syncDetailsUpdater = app.MustComponent[Updater](a) s.config = app.MustComponent[*config.Config](a) s.nodeConfService = app.MustComponent[nodeconf.Service](a) - s.nodeStatus = app.MustComponent[nodestatus.NodeStatus](a) return } @@ -128,13 +106,6 @@ func (s *syncStatusService) Name() (name string) { return syncstatus.CName } -func (s *syncStatusService) SetUpdateReceiver(updater UpdateReceiver) { - s.Lock() - defer s.Unlock() - - s.updateReceiver = updater -} - func (s *syncStatusService) Run(ctx context.Context) error { s.periodicSync.Run() return nil @@ -186,36 +157,15 @@ func (s *syncStatusService) HeadsApply(senderId, treeId string, heads []string, func (s *syncStatusService) update(ctx context.Context) (err error) { s.Lock() - var ( - updateDetailsStatuses = make([]treeStatus, 0, len(s.synced)) - updateThreadStatuses = make([]treeStatus, 0, len(s.watchers)) - ) - if s.updateReceiver == nil { - s.Unlock() - return - } + var updateDetailsStatuses = make([]treeStatus, 0, len(s.synced)) for _, treeId := range s.synced { updateDetailsStatuses = append(updateDetailsStatuses, treeStatus{treeId, StatusSynced}) } - for treeId := range s.watchers { - treeHeads, exists := s.treeHeads[treeId] - if !exists { - continue - } - updateThreadStatuses = append(updateThreadStatuses, treeStatus{treeId, treeHeads.syncStatus}) - } s.synced = s.synced[:0] s.Unlock() - s.updateReceiver.UpdateNodeStatus() for _, entry := range updateDetailsStatuses { s.updateDetails(entry.treeId, mapStatus(entry.status)) } - for _, entry := range updateThreadStatuses { - err = s.updateReceiver.UpdateTree(ctx, entry.treeId, entry.status) - if err != nil { - return - } - } return } @@ -238,36 +188,6 @@ func (s *syncStatusService) addTreeHead(treeId string, heads []string, status Sy } } -func (s *syncStatusService) Watch(treeId string) (err error) { - s.Lock() - defer s.Unlock() - _, ok := s.treeHeads[treeId] - if !ok { - var ( - st treestorage.TreeStorage - heads []string - ) - st, err = s.storage.TreeStorage(treeId) - if err != nil { - return - } - heads, err = st.Heads() - if err != nil { - return - } - s.addTreeHead(treeId, heads, StatusUnknown) - } - - s.watchers[treeId] = struct{}{} - return -} - -func (s *syncStatusService) Unwatch(treeId string) { - s.Lock() - defer s.Unlock() - delete(s.watchers, treeId) -} - func (s *syncStatusService) RemoveAllExcept(senderId string, differentRemoteIds []string) { // if sender is not a responsible node, then this should have no effect if !s.isSenderResponsible(senderId) { diff --git a/core/syncstatus/objectsyncstatus/syncstatus_test.go b/core/syncstatus/objectsyncstatus/syncstatus_test.go index c570c7984..a1da2c8b6 100644 --- a/core/syncstatus/objectsyncstatus/syncstatus_test.go +++ b/core/syncstatus/objectsyncstatus/syncstatus_test.go @@ -5,8 +5,6 @@ import ( "testing" "github.com/anyproto/any-sync/app" - "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" - "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" "github.com/anyproto/any-sync/commonspace/spacestate" "github.com/anyproto/any-sync/commonspace/spacestorage/mock_spacestorage" "github.com/anyproto/any-sync/nodeconf/mock_nodeconf" @@ -90,50 +88,6 @@ func Test_UseCases(t *testing.T) { }) } -func TestSyncStatusService_Watch_Unwatch(t *testing.T) { - t.Run("watch", func(t *testing.T) { - s := newFixture(t, "spaceId") - - s.spaceStorage.EXPECT().TreeStorage("id").Return(treestorage.NewInMemoryTreeStorage(&treechangeproto.RawTreeChangeWithId{Id: "id"}, []string{"head3", "head2", "head1"}, nil)) - err := s.Watch("id") - assert.Nil(t, err) - assert.Contains(t, s.watchers, "id") - assert.Equal(t, []string{"head1", "head2", "head3"}, s.treeHeads["id"].heads, "should be sorted") - }) - t.Run("unwatch", func(t *testing.T) { - s := newFixture(t, "spaceId") - - s.spaceStorage.EXPECT().TreeStorage("id").Return(treestorage.NewInMemoryTreeStorage(&treechangeproto.RawTreeChangeWithId{Id: "id"}, []string{"headId"}, nil)) - err := s.Watch("id") - assert.Nil(t, err) - - s.Unwatch("id") - assert.NotContains(t, s.watchers, "id") - assert.Equal(t, []string{"headId"}, s.treeHeads["id"].heads) - }) -} - -func TestSyncStatusService_update(t *testing.T) { - t.Run("update: got updates on objects", func(t *testing.T) { - s := newFixture(t, "spaceId") - updateReceiver := NewMockUpdateReceiver(t) - updateReceiver.EXPECT().UpdateNodeStatus().Return() - updateReceiver.EXPECT().UpdateTree(context.Background(), "id", StatusSynced).Return(nil) - updateReceiver.EXPECT().UpdateTree(context.Background(), "id2", StatusNotSynced).Return(nil) - s.SetUpdateReceiver(updateReceiver) - - s.syncDetailsUpdater.EXPECT().UpdateDetails("id3", domain.ObjectSyncStatusSynced, "spaceId") - s.synced = []string{"id3"} - s.tempSynced["id4"] = struct{}{} - s.treeHeads["id"] = treeHeadsEntry{syncStatus: StatusSynced, heads: []string{"headId"}} - s.treeHeads["id2"] = treeHeadsEntry{syncStatus: StatusNotSynced, heads: []string{"headId"}} - s.watchers["id"] = struct{}{} - s.watchers["id2"] = struct{}{} - err := s.update(context.Background()) - require.NoError(t, err) - }) -} - func TestSyncStatusService_Run(t *testing.T) { t.Run("successful run", func(t *testing.T) { s := newFixture(t, "spaceId") diff --git a/core/syncstatus/service.go b/core/syncstatus/service.go index 5c86885d8..2e57c736e 100644 --- a/core/syncstatus/service.go +++ b/core/syncstatus/service.go @@ -2,63 +2,42 @@ package syncstatus import ( "context" - "sync" + "fmt" "github.com/anyproto/any-sync/app" - "github.com/anyproto/any-sync/commonspace" - "github.com/anyproto/any-sync/nodeconf" - "github.com/anyproto/anytype-heart/core/anytype/config" "github.com/anyproto/anytype-heart/core/block/cache" - "github.com/anyproto/anytype-heart/core/event" + "github.com/anyproto/anytype-heart/core/block/editor/smartblock" + "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/core/filestorage/filesync" - "github.com/anyproto/anytype-heart/core/syncstatus/nodestatus" - "github.com/anyproto/anytype-heart/core/syncstatus/objectsyncstatus" - "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" + "github.com/anyproto/anytype-heart/core/syncstatus/filesyncstatus" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/util/pbtypes" ) const CName = "status" type Service interface { - Watch(spaceId string, id string, filesGetter func() []string) (new bool, err error) - Unwatch(spaceID string, id string) - RegisterSpace(space commonspace.Space, sw objectsyncstatus.StatusWatcher) - app.ComponentRunnable } var _ Service = (*service)(nil) type service struct { - updateReceiver *updateReceiver fileSyncService filesync.FileSync - - objectWatchersLock sync.Mutex - objectWatchers map[string]objectsyncstatus.StatusWatcher - - objectStore objectstore.ObjectStore - objectGetter cache.ObjectGetter + objectGetter cache.ObjectGetter } func New() Service { - return &service{ - objectWatchers: map[string]objectsyncstatus.StatusWatcher{}, - } + return &service{} } func (s *service) Init(a *app.App) (err error) { s.fileSyncService = app.MustComponent[filesync.FileSync](a) - s.objectStore = app.MustComponent[objectstore.ObjectStore](a) s.objectGetter = app.MustComponent[cache.ObjectGetter](a) s.fileSyncService.OnUploaded(s.onFileUploaded) s.fileSyncService.OnUploadStarted(s.onFileUploadStarted) s.fileSyncService.OnLimited(s.onFileLimited) - - nodeConfService := app.MustComponent[nodeconf.Service](a) - cfg := app.MustComponent[*config.Config](a) - eventSender := app.MustComponent[event.Sender](a) - nodeStatus := app.MustComponent[nodestatus.NodeStatus](a) - s.updateReceiver = newUpdateReceiver(nodeConfService, cfg, eventSender, s.objectStore, nodeStatus) return nil } @@ -70,50 +49,35 @@ func (s *service) Name() string { return CName } -func (s *service) RegisterSpace(space commonspace.Space, sw objectsyncstatus.StatusWatcher) { - s.objectWatchersLock.Lock() - defer s.objectWatchersLock.Unlock() - - sw.SetUpdateReceiver(s.updateReceiver) - s.objectWatchers[space.Id()] = sw - s.updateReceiver.setSpaceId(space.Id()) -} - -func (s *service) UnregisterSpace(space commonspace.Space) { - s.objectWatchersLock.Lock() - defer s.objectWatchersLock.Unlock() - - // TODO: [MR] now we can't set a nil update receiver, but maybe it doesn't matter that much - // and we can just leave as it is, because no events will come through - delete(s.objectWatchers, space.Id()) -} - -func (s *service) Unwatch(spaceID string, id string) { - s.unwatch(spaceID, id) -} - -func (s *service) Watch(spaceId string, id string, filesGetter func() []string) (new bool, err error) { - s.objectWatchersLock.Lock() - defer s.objectWatchersLock.Unlock() - objectWatcher := s.objectWatchers[spaceId] - if objectWatcher != nil { - if err = objectWatcher.Watch(id); err != nil { - return false, err - } - } - return true, nil - -} - -func (s *service) unwatch(spaceID string, id string) { - s.objectWatchersLock.Lock() - defer s.objectWatchersLock.Unlock() - objectWatcher := s.objectWatchers[spaceID] - if objectWatcher != nil { - objectWatcher.Unwatch(id) - } -} - func (s *service) Close(ctx context.Context) (err error) { return nil } + +func (s *service) onFileUploadStarted(objectId string, _ domain.FullFileId) error { + return s.indexFileSyncStatus(objectId, filesyncstatus.Syncing) +} + +func (s *service) onFileUploaded(objectId string, _ domain.FullFileId) error { + return s.indexFileSyncStatus(objectId, filesyncstatus.Synced) +} + +func (s *service) onFileLimited(objectId string, _ domain.FullFileId, bytesLeftPercentage float64) error { + return s.indexFileSyncStatus(objectId, filesyncstatus.Limited) +} + +func (s *service) indexFileSyncStatus(fileObjectId string, status filesyncstatus.Status) error { + err := cache.Do(s.objectGetter, fileObjectId, func(sb smartblock.SmartBlock) (err error) { + prevStatus := pbtypes.GetInt64(sb.Details(), bundle.RelationKeyFileBackupStatus.String()) + newStatus := int64(status) + if prevStatus == newStatus { + return nil + } + st := sb.NewState() + st.SetDetailAndBundledRelation(bundle.RelationKeyFileBackupStatus, pbtypes.Int64(newStatus)) + return sb.Apply(st) + }) + if err != nil { + return fmt.Errorf("get object: %w", err) + } + return nil +} diff --git a/core/syncstatus/syncsubscriptions/objectsubscription.go b/core/syncstatus/syncsubscriptions/objectsubscription.go index a3d5e4654..90545517d 100644 --- a/core/syncstatus/syncsubscriptions/objectsubscription.go +++ b/core/syncstatus/syncsubscriptions/objectsubscription.go @@ -55,17 +55,6 @@ func NewIdSubscription(service subscription.Service, request subscription.Subscr } } -func NewObjectSubscription[T any](service subscription.Service, params SubscriptionParams[T]) *ObjectSubscription[T] { - return &ObjectSubscription[T]{ - request: params.Request, - service: service, - ch: make(chan struct{}), - extract: params.Extract, - update: params.Update, - unset: params.Unset, - } -} - type ObjectSubscription[T any] struct { request subscription.SubscribeRequest service subscription.Service diff --git a/core/syncstatus/updatereceiver.go b/core/syncstatus/updatereceiver.go deleted file mode 100644 index 09b55a599..000000000 --- a/core/syncstatus/updatereceiver.go +++ /dev/null @@ -1,132 +0,0 @@ -package syncstatus - -import ( - "context" - "fmt" - "sync" - - "github.com/anyproto/any-sync/nodeconf" - - "github.com/anyproto/anytype-heart/core/anytype/config" - "github.com/anyproto/anytype-heart/core/event" - "github.com/anyproto/anytype-heart/core/syncstatus/filesyncstatus" - "github.com/anyproto/anytype-heart/core/syncstatus/nodestatus" - "github.com/anyproto/anytype-heart/core/syncstatus/objectsyncstatus" - "github.com/anyproto/anytype-heart/pb" - "github.com/anyproto/anytype-heart/pkg/lib/bundle" - "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" -) - -type updateReceiver struct { - eventSender event.Sender - - nodeConfService nodeconf.Service - lock sync.Mutex - nodeConnected bool - objectStore objectstore.ObjectStore - nodeStatus nodestatus.NodeStatus - spaceId string -} - -func newUpdateReceiver( - nodeConfService nodeconf.Service, - cfg *config.Config, - eventSender event.Sender, - objectStore objectstore.ObjectStore, - nodeStatus nodestatus.NodeStatus, -) *updateReceiver { - if cfg.DisableThreadsSyncEvents { - eventSender = nil - } - return &updateReceiver{ - nodeConfService: nodeConfService, - eventSender: eventSender, - objectStore: objectStore, - nodeStatus: nodeStatus, - } -} - -func (r *updateReceiver) UpdateTree(_ context.Context, objId string, status objectsyncstatus.SyncStatus) error { - objStatusEvent := r.getObjectSyncStatus(objId, status) - r.notify(objId, objStatusEvent) - return nil -} - -func (r *updateReceiver) getFileStatus(fileId string) (filesyncstatus.Status, error) { - details, err := r.objectStore.GetDetails(fileId) - if err != nil { - return filesyncstatus.Unknown, fmt.Errorf("get file details: %w", err) - } - if v, ok := details.GetDetails().GetFields()[bundle.RelationKeyFileBackupStatus.String()]; ok { - return filesyncstatus.Status(v.GetNumberValue()), nil - } - return filesyncstatus.Unknown, fmt.Errorf("no backup status") -} - -func (r *updateReceiver) getObjectSyncStatus(objectId string, status objectsyncstatus.SyncStatus) pb.EventStatusThreadSyncStatus { - fileStatus, err := r.getFileStatus(objectId) - if err == nil { - // Prefer file backup status - if fileStatus != filesyncstatus.Synced { - status = fileStatus.ToSyncStatus() - } - } - - if r.nodeConfService.NetworkCompatibilityStatus() == nodeconf.NetworkCompatibilityStatusIncompatible { - return pb.EventStatusThread_IncompatibleVersion - } - - if !r.isNodeConnected() { - return pb.EventStatusThread_Offline - } - - switch status { - case objectsyncstatus.StatusUnknown: - return pb.EventStatusThread_Unknown - case objectsyncstatus.StatusSynced: - return pb.EventStatusThread_Synced - } - return pb.EventStatusThread_Syncing -} - -func (r *updateReceiver) isNodeConnected() bool { - r.lock.Lock() - defer r.lock.Unlock() - return r.nodeConnected -} - -func (r *updateReceiver) setSpaceId(spaceId string) { - r.lock.Lock() - defer r.lock.Unlock() - - r.spaceId = spaceId -} - -func (r *updateReceiver) UpdateNodeStatus() { - r.lock.Lock() - defer r.lock.Unlock() - r.nodeConnected = r.nodeStatus.GetNodeStatus(r.spaceId) == nodestatus.Online -} - -func (r *updateReceiver) notify( - objId string, - objStatus pb.EventStatusThreadSyncStatus, -) { - r.sendEvent(objId, &pb.EventMessageValueOfThreadStatus{ThreadStatus: &pb.EventStatusThread{ - Summary: &pb.EventStatusThreadSummary{Status: objStatus}, - Cafe: &pb.EventStatusThreadCafe{ - Status: objStatus, - Files: &pb.EventStatusThreadCafePinStatus{}, - }, - }}) -} - -func (r *updateReceiver) sendEvent(ctx string, event pb.IsEventMessageValue) { - if r.eventSender == nil { - return - } - r.eventSender.Broadcast(&pb.Event{ - Messages: []*pb.EventMessage{{Value: event}}, - ContextId: ctx, - }) -} diff --git a/core/syncstatus/updatereceiver_test.go b/core/syncstatus/updatereceiver_test.go deleted file mode 100644 index eaafcd50b..000000000 --- a/core/syncstatus/updatereceiver_test.go +++ /dev/null @@ -1,244 +0,0 @@ -package syncstatus - -import ( - "testing" - - "github.com/anyproto/any-sync/nodeconf" - "github.com/anyproto/any-sync/nodeconf/mock_nodeconf" - "github.com/stretchr/testify/assert" - "go.uber.org/mock/gomock" - - "github.com/anyproto/anytype-heart/core/anytype/config" - "github.com/anyproto/anytype-heart/core/event/mock_event" - "github.com/anyproto/anytype-heart/core/syncstatus/filesyncstatus" - "github.com/anyproto/anytype-heart/core/syncstatus/nodestatus" - "github.com/anyproto/anytype-heart/core/syncstatus/objectsyncstatus" - "github.com/anyproto/anytype-heart/pb" - "github.com/anyproto/anytype-heart/pkg/lib/bundle" - "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" - "github.com/anyproto/anytype-heart/util/pbtypes" -) - -func TestUpdateReceiver_UpdateTree(t *testing.T) { - t.Run("update to sync status", func(t *testing.T) { - // given - receiver := newFixture(t) - receiver.nodeConnected = true - receiver.nodeConf.EXPECT().NetworkCompatibilityStatus().Return(nodeconf.NetworkCompatibilityStatusOk) - receiver.sender.EXPECT().Broadcast(&pb.Event{ - Messages: []*pb.EventMessage{{Value: &pb.EventMessageValueOfThreadStatus{ThreadStatus: &pb.EventStatusThread{ - Summary: &pb.EventStatusThreadSummary{Status: pb.EventStatusThread_Synced}, - Cafe: &pb.EventStatusThreadCafe{ - Status: pb.EventStatusThread_Synced, - Files: &pb.EventStatusThreadCafePinStatus{}, - }, - }}}}, - ContextId: "id", - }).Return() - - // when - err := receiver.UpdateTree(nil, "id", objectsyncstatus.StatusSynced) - - // then - assert.Nil(t, err) - }) - t.Run("network incompatible", func(t *testing.T) { - // given - receiver := newFixture(t) - receiver.nodeConnected = true - receiver.nodeConf.EXPECT().NetworkCompatibilityStatus().Return(nodeconf.NetworkCompatibilityStatusIncompatible) - receiver.sender.EXPECT().Broadcast(&pb.Event{ - Messages: []*pb.EventMessage{{Value: &pb.EventMessageValueOfThreadStatus{ThreadStatus: &pb.EventStatusThread{ - Summary: &pb.EventStatusThreadSummary{Status: pb.EventStatusThread_IncompatibleVersion}, - Cafe: &pb.EventStatusThreadCafe{ - Status: pb.EventStatusThread_IncompatibleVersion, - Files: &pb.EventStatusThreadCafePinStatus{}, - }, - }}}}, - ContextId: "id", - }).Return() - - // when - err := receiver.UpdateTree(nil, "id", objectsyncstatus.StatusNotSynced) - - // then - assert.Nil(t, err) - }) - t.Run("file storage limited", func(t *testing.T) { - // given - receiver := newFixture(t) - receiver.nodeConnected = true - receiver.nodeConf.EXPECT().NetworkCompatibilityStatus().Return(nodeconf.NetworkCompatibilityStatusOk) - receiver.sender.EXPECT().Broadcast(&pb.Event{ - Messages: []*pb.EventMessage{{Value: &pb.EventMessageValueOfThreadStatus{ThreadStatus: &pb.EventStatusThread{ - Summary: &pb.EventStatusThreadSummary{Status: pb.EventStatusThread_Syncing}, - Cafe: &pb.EventStatusThreadCafe{ - Status: pb.EventStatusThread_Syncing, - Files: &pb.EventStatusThreadCafePinStatus{}, - }, - }}}}, - ContextId: "id", - }).Return() - - receiver.store.AddObjects(t, []objectstore.TestObject{ - { - bundle.RelationKeyId: pbtypes.String("id"), - bundle.RelationKeyFileBackupStatus: pbtypes.Int64(int64(filesyncstatus.Limited)), - }, - }) - - // when - err := receiver.UpdateTree(nil, "id", objectsyncstatus.StatusNotSynced) - - // then - assert.Nil(t, err) - }) - t.Run("object sync status - syncing", func(t *testing.T) { - // given - receiver := newFixture(t) - receiver.nodeConnected = true - receiver.nodeConf.EXPECT().NetworkCompatibilityStatus().Return(nodeconf.NetworkCompatibilityStatusOk) - receiver.sender.EXPECT().Broadcast(&pb.Event{ - Messages: []*pb.EventMessage{{Value: &pb.EventMessageValueOfThreadStatus{ThreadStatus: &pb.EventStatusThread{ - Summary: &pb.EventStatusThreadSummary{Status: pb.EventStatusThread_Syncing}, - Cafe: &pb.EventStatusThreadCafe{ - Status: pb.EventStatusThread_Syncing, - Files: &pb.EventStatusThreadCafePinStatus{}, - }, - }}}}, - ContextId: "id", - }).Return() - - // when - err := receiver.UpdateTree(nil, "id", objectsyncstatus.StatusNotSynced) - - // then - assert.Nil(t, err) - }) - t.Run("object sync status - unknown", func(t *testing.T) { - // given - receiver := newFixture(t) - receiver.nodeConnected = true - receiver.nodeConf.EXPECT().NetworkCompatibilityStatus().Return(nodeconf.NetworkCompatibilityStatusOk) - receiver.sender.EXPECT().Broadcast(&pb.Event{ - Messages: []*pb.EventMessage{{Value: &pb.EventMessageValueOfThreadStatus{ThreadStatus: &pb.EventStatusThread{ - Summary: &pb.EventStatusThreadSummary{Status: pb.EventStatusThread_Unknown}, - Cafe: &pb.EventStatusThreadCafe{ - Status: pb.EventStatusThread_Unknown, - Files: &pb.EventStatusThreadCafePinStatus{}, - }, - }}}}, - ContextId: "id", - }).Return() - - // when - err := receiver.UpdateTree(nil, "id", objectsyncstatus.StatusUnknown) - - // then - assert.Nil(t, err) - }) - t.Run("object sync status - connection error", func(t *testing.T) { - // given - receiver := newFixture(t) - receiver.nodeConnected = false - receiver.nodeConf.EXPECT().NetworkCompatibilityStatus().Return(nodeconf.NetworkCompatibilityStatusOk) - receiver.sender.EXPECT().Broadcast(&pb.Event{ - Messages: []*pb.EventMessage{{Value: &pb.EventMessageValueOfThreadStatus{ThreadStatus: &pb.EventStatusThread{ - Summary: &pb.EventStatusThreadSummary{Status: pb.EventStatusThread_Offline}, - Cafe: &pb.EventStatusThreadCafe{ - Status: pb.EventStatusThread_Offline, - Files: &pb.EventStatusThreadCafePinStatus{}, - }, - }}}}, - ContextId: "id", - }).Return() - - // when - err := receiver.UpdateTree(nil, "id", objectsyncstatus.StatusSynced) - - // then - assert.Nil(t, err) - }) - t.Run("file sync status - synced", func(t *testing.T) { - // given - receiver := newFixture(t) - receiver.nodeConnected = true - receiver.nodeConf.EXPECT().NetworkCompatibilityStatus().Return(nodeconf.NetworkCompatibilityStatusOk) - receiver.sender.EXPECT().Broadcast(&pb.Event{ - Messages: []*pb.EventMessage{{Value: &pb.EventMessageValueOfThreadStatus{ThreadStatus: &pb.EventStatusThread{ - Summary: &pb.EventStatusThreadSummary{Status: pb.EventStatusThread_Synced}, - Cafe: &pb.EventStatusThreadCafe{ - Status: pb.EventStatusThread_Synced, - Files: &pb.EventStatusThreadCafePinStatus{}, - }, - }}}}, - ContextId: "id", - }).Return() - - receiver.store.AddObjects(t, []objectstore.TestObject{ - { - bundle.RelationKeyId: pbtypes.String("id"), - bundle.RelationKeyFileBackupStatus: pbtypes.Int64(int64(filesyncstatus.Synced)), - }, - }) - - // when - err := receiver.UpdateTree(nil, "id", objectsyncstatus.StatusSynced) - - // then - assert.Nil(t, err) - }) - t.Run("file sync status - syncing", func(t *testing.T) { - // given - receiver := newFixture(t) - receiver.nodeConnected = true - receiver.nodeConf.EXPECT().NetworkCompatibilityStatus().Return(nodeconf.NetworkCompatibilityStatusOk) - receiver.sender.EXPECT().Broadcast(&pb.Event{ - Messages: []*pb.EventMessage{{Value: &pb.EventMessageValueOfThreadStatus{ThreadStatus: &pb.EventStatusThread{ - Summary: &pb.EventStatusThreadSummary{Status: pb.EventStatusThread_Syncing}, - Cafe: &pb.EventStatusThreadCafe{ - Status: pb.EventStatusThread_Syncing, - Files: &pb.EventStatusThreadCafePinStatus{}, - }, - }}}}, - ContextId: "id", - }).Return() - - receiver.store.AddObjects(t, []objectstore.TestObject{ - { - bundle.RelationKeyId: pbtypes.String("id"), - bundle.RelationKeyFileBackupStatus: pbtypes.Int64(int64(filesyncstatus.Syncing)), - }, - }) - - // when - err := receiver.UpdateTree(nil, "id", objectsyncstatus.StatusUnknown) - - // then - assert.Nil(t, err) - }) -} - -func newFixture(t *testing.T) *fixture { - ctrl := gomock.NewController(t) - nodeConf := mock_nodeconf.NewMockService(ctrl) - conf := &config.Config{} - sender := mock_event.NewMockSender(t) - storeFixture := objectstore.NewStoreFixture(t) - status := nodestatus.NewNodeStatus() - - receiver := newUpdateReceiver(nodeConf, conf, sender, storeFixture, status) - return &fixture{ - updateReceiver: receiver, - sender: sender, - nodeConf: nodeConf, - store: storeFixture, - } -} - -type fixture struct { - *updateReceiver - sender *mock_event.MockSender - nodeConf *mock_nodeconf.MockService - store *objectstore.StoreFixture -} diff --git a/docs/proto.md b/docs/proto.md index 361f9a484..0744df30b 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -526,6 +526,39 @@ - [Rpc.Broadcast.PayloadEvent.Request](#anytype-Rpc-Broadcast-PayloadEvent-Request) - [Rpc.Broadcast.PayloadEvent.Response](#anytype-Rpc-Broadcast-PayloadEvent-Response) - [Rpc.Broadcast.PayloadEvent.Response.Error](#anytype-Rpc-Broadcast-PayloadEvent-Response-Error) + - [Rpc.Chat](#anytype-Rpc-Chat) + - [Rpc.Chat.AddMessage](#anytype-Rpc-Chat-AddMessage) + - [Rpc.Chat.AddMessage.Request](#anytype-Rpc-Chat-AddMessage-Request) + - [Rpc.Chat.AddMessage.Response](#anytype-Rpc-Chat-AddMessage-Response) + - [Rpc.Chat.AddMessage.Response.Error](#anytype-Rpc-Chat-AddMessage-Response-Error) + - [Rpc.Chat.DeleteMessage](#anytype-Rpc-Chat-DeleteMessage) + - [Rpc.Chat.DeleteMessage.Request](#anytype-Rpc-Chat-DeleteMessage-Request) + - [Rpc.Chat.DeleteMessage.Response](#anytype-Rpc-Chat-DeleteMessage-Response) + - [Rpc.Chat.DeleteMessage.Response.Error](#anytype-Rpc-Chat-DeleteMessage-Response-Error) + - [Rpc.Chat.EditMessageContent](#anytype-Rpc-Chat-EditMessageContent) + - [Rpc.Chat.EditMessageContent.Request](#anytype-Rpc-Chat-EditMessageContent-Request) + - [Rpc.Chat.EditMessageContent.Response](#anytype-Rpc-Chat-EditMessageContent-Response) + - [Rpc.Chat.EditMessageContent.Response.Error](#anytype-Rpc-Chat-EditMessageContent-Response-Error) + - [Rpc.Chat.GetMessages](#anytype-Rpc-Chat-GetMessages) + - [Rpc.Chat.GetMessages.Request](#anytype-Rpc-Chat-GetMessages-Request) + - [Rpc.Chat.GetMessages.Response](#anytype-Rpc-Chat-GetMessages-Response) + - [Rpc.Chat.GetMessages.Response.Error](#anytype-Rpc-Chat-GetMessages-Response-Error) + - [Rpc.Chat.GetMessagesByIds](#anytype-Rpc-Chat-GetMessagesByIds) + - [Rpc.Chat.GetMessagesByIds.Request](#anytype-Rpc-Chat-GetMessagesByIds-Request) + - [Rpc.Chat.GetMessagesByIds.Response](#anytype-Rpc-Chat-GetMessagesByIds-Response) + - [Rpc.Chat.GetMessagesByIds.Response.Error](#anytype-Rpc-Chat-GetMessagesByIds-Response-Error) + - [Rpc.Chat.SubscribeLastMessages](#anytype-Rpc-Chat-SubscribeLastMessages) + - [Rpc.Chat.SubscribeLastMessages.Request](#anytype-Rpc-Chat-SubscribeLastMessages-Request) + - [Rpc.Chat.SubscribeLastMessages.Response](#anytype-Rpc-Chat-SubscribeLastMessages-Response) + - [Rpc.Chat.SubscribeLastMessages.Response.Error](#anytype-Rpc-Chat-SubscribeLastMessages-Response-Error) + - [Rpc.Chat.ToggleMessageReaction](#anytype-Rpc-Chat-ToggleMessageReaction) + - [Rpc.Chat.ToggleMessageReaction.Request](#anytype-Rpc-Chat-ToggleMessageReaction-Request) + - [Rpc.Chat.ToggleMessageReaction.Response](#anytype-Rpc-Chat-ToggleMessageReaction-Response) + - [Rpc.Chat.ToggleMessageReaction.Response.Error](#anytype-Rpc-Chat-ToggleMessageReaction-Response-Error) + - [Rpc.Chat.Unsubscribe](#anytype-Rpc-Chat-Unsubscribe) + - [Rpc.Chat.Unsubscribe.Request](#anytype-Rpc-Chat-Unsubscribe-Request) + - [Rpc.Chat.Unsubscribe.Response](#anytype-Rpc-Chat-Unsubscribe-Response) + - [Rpc.Chat.Unsubscribe.Response.Error](#anytype-Rpc-Chat-Unsubscribe-Response-Error) - [Rpc.Debug](#anytype-Rpc-Debug) - [Rpc.Debug.AccountSelectTrace](#anytype-Rpc-Debug-AccountSelectTrace) - [Rpc.Debug.AccountSelectTrace.Request](#anytype-Rpc-Debug-AccountSelectTrace-Request) @@ -760,6 +793,10 @@ - [Rpc.Object.BookmarkFetch.Request](#anytype-Rpc-Object-BookmarkFetch-Request) - [Rpc.Object.BookmarkFetch.Response](#anytype-Rpc-Object-BookmarkFetch-Response) - [Rpc.Object.BookmarkFetch.Response.Error](#anytype-Rpc-Object-BookmarkFetch-Response-Error) + - [Rpc.Object.ChatAdd](#anytype-Rpc-Object-ChatAdd) + - [Rpc.Object.ChatAdd.Request](#anytype-Rpc-Object-ChatAdd-Request) + - [Rpc.Object.ChatAdd.Response](#anytype-Rpc-Object-ChatAdd-Response) + - [Rpc.Object.ChatAdd.Response.Error](#anytype-Rpc-Object-ChatAdd-Response-Error) - [Rpc.Object.Close](#anytype-Rpc-Object-Close) - [Rpc.Object.Close.Request](#anytype-Rpc-Object-Close-Request) - [Rpc.Object.Close.Response](#anytype-Rpc-Object-Close-Response) @@ -1285,6 +1322,14 @@ - [Rpc.BlockWidget.SetTargetId.Response.Error.Code](#anytype-Rpc-BlockWidget-SetTargetId-Response-Error-Code) - [Rpc.BlockWidget.SetViewId.Response.Error.Code](#anytype-Rpc-BlockWidget-SetViewId-Response-Error-Code) - [Rpc.Broadcast.PayloadEvent.Response.Error.Code](#anytype-Rpc-Broadcast-PayloadEvent-Response-Error-Code) + - [Rpc.Chat.AddMessage.Response.Error.Code](#anytype-Rpc-Chat-AddMessage-Response-Error-Code) + - [Rpc.Chat.DeleteMessage.Response.Error.Code](#anytype-Rpc-Chat-DeleteMessage-Response-Error-Code) + - [Rpc.Chat.EditMessageContent.Response.Error.Code](#anytype-Rpc-Chat-EditMessageContent-Response-Error-Code) + - [Rpc.Chat.GetMessages.Response.Error.Code](#anytype-Rpc-Chat-GetMessages-Response-Error-Code) + - [Rpc.Chat.GetMessagesByIds.Response.Error.Code](#anytype-Rpc-Chat-GetMessagesByIds-Response-Error-Code) + - [Rpc.Chat.SubscribeLastMessages.Response.Error.Code](#anytype-Rpc-Chat-SubscribeLastMessages-Response-Error-Code) + - [Rpc.Chat.ToggleMessageReaction.Response.Error.Code](#anytype-Rpc-Chat-ToggleMessageReaction-Response-Error-Code) + - [Rpc.Chat.Unsubscribe.Response.Error.Code](#anytype-Rpc-Chat-Unsubscribe-Response-Error-Code) - [Rpc.Debug.AccountSelectTrace.Response.Error.Code](#anytype-Rpc-Debug-AccountSelectTrace-Response-Error-Code) - [Rpc.Debug.ExportLocalstore.Response.Error.Code](#anytype-Rpc-Debug-ExportLocalstore-Response-Error-Code) - [Rpc.Debug.OpenedObjects.Response.Error.Code](#anytype-Rpc-Debug-OpenedObjects-Response-Error-Code) @@ -1341,6 +1386,7 @@ - [Rpc.Notification.Test.Response.Error.Code](#anytype-Rpc-Notification-Test-Response-Error-Code) - [Rpc.Object.ApplyTemplate.Response.Error.Code](#anytype-Rpc-Object-ApplyTemplate-Response-Error-Code) - [Rpc.Object.BookmarkFetch.Response.Error.Code](#anytype-Rpc-Object-BookmarkFetch-Response-Error-Code) + - [Rpc.Object.ChatAdd.Response.Error.Code](#anytype-Rpc-Object-ChatAdd-Response-Error-Code) - [Rpc.Object.Close.Response.Error.Code](#anytype-Rpc-Object-Close-Response-Error-Code) - [Rpc.Object.Create.Response.Error.Code](#anytype-Rpc-Object-Create-Response-Error-Code) - [Rpc.Object.CreateBookmark.Response.Error.Code](#anytype-Rpc-Object-CreateBookmark-Response-Error-Code) @@ -1583,6 +1629,11 @@ - [Event.Block.Set.Widget.Layout](#anytype-Event-Block-Set-Widget-Layout) - [Event.Block.Set.Widget.Limit](#anytype-Event-Block-Set-Widget-Limit) - [Event.Block.Set.Widget.ViewId](#anytype-Event-Block-Set-Widget-ViewId) + - [Event.Chat](#anytype-Event-Chat) + - [Event.Chat.Add](#anytype-Event-Chat-Add) + - [Event.Chat.Delete](#anytype-Event-Chat-Delete) + - [Event.Chat.Update](#anytype-Event-Chat-Update) + - [Event.Chat.UpdateReactions](#anytype-Event-Chat-UpdateReactions) - [Event.File](#anytype-Event-File) - [Event.File.LimitReached](#anytype-Event-File-LimitReached) - [Event.File.LimitUpdated](#anytype-Event-File-LimitUpdated) @@ -1676,6 +1727,7 @@ - [Block](#anytype-model-Block) - [Block.Content](#anytype-model-Block-Content) - [Block.Content.Bookmark](#anytype-model-Block-Content-Bookmark) + - [Block.Content.Chat](#anytype-model-Block-Content-Chat) - [Block.Content.Dataview](#anytype-model-Block-Content-Dataview) - [Block.Content.Dataview.Checkbox](#anytype-model-Block-Content-Dataview-Checkbox) - [Block.Content.Dataview.Date](#anytype-model-Block-Content-Dataview-Date) @@ -1708,6 +1760,12 @@ - [Block.Content.Widget](#anytype-model-Block-Content-Widget) - [Block.Restrictions](#anytype-model-Block-Restrictions) - [BlockMetaOnly](#anytype-model-BlockMetaOnly) + - [ChatMessage](#anytype-model-ChatMessage) + - [ChatMessage.Attachment](#anytype-model-ChatMessage-Attachment) + - [ChatMessage.MessageContent](#anytype-model-ChatMessage-MessageContent) + - [ChatMessage.Reactions](#anytype-model-ChatMessage-Reactions) + - [ChatMessage.Reactions.IdentityList](#anytype-model-ChatMessage-Reactions-IdentityList) + - [ChatMessage.Reactions.ReactionsEntry](#anytype-model-ChatMessage-Reactions-ReactionsEntry) - [Detail](#anytype-model-Detail) - [DeviceInfo](#anytype-model-DeviceInfo) - [Export](#anytype-model-Export) @@ -1788,6 +1846,7 @@ - [Block.Content.Widget.Layout](#anytype-model-Block-Content-Widget-Layout) - [Block.Position](#anytype-model-Block-Position) - [Block.VerticalAlign](#anytype-model-Block-VerticalAlign) + - [ChatMessage.Attachment.AttachmentType](#anytype-model-ChatMessage-Attachment-AttachmentType) - [DeviceNetworkType](#anytype-model-DeviceNetworkType) - [Export.Format](#anytype-model-Export-Format) - [FileIndexingStatus](#anytype-model-FileIndexingStatus) @@ -1893,6 +1952,7 @@ | ObjectCreate | [Rpc.Object.Create.Request](#anytype-Rpc-Object-Create-Request) | [Rpc.Object.Create.Response](#anytype-Rpc-Object-Create-Response) | ObjectCreate just creates the new page, without adding the link to it from some other page | | ObjectCreateBookmark | [Rpc.Object.CreateBookmark.Request](#anytype-Rpc-Object-CreateBookmark-Request) | [Rpc.Object.CreateBookmark.Response](#anytype-Rpc-Object-CreateBookmark-Response) | | | ObjectCreateFromUrl | [Rpc.Object.CreateFromUrl.Request](#anytype-Rpc-Object-CreateFromUrl-Request) | [Rpc.Object.CreateFromUrl.Response](#anytype-Rpc-Object-CreateFromUrl-Response) | | +| ObjectChatAdd | [Rpc.Object.ChatAdd.Request](#anytype-Rpc-Object-ChatAdd-Request) | [Rpc.Object.ChatAdd.Response](#anytype-Rpc-Object-ChatAdd-Response) | | | ObjectCreateSet | [Rpc.Object.CreateSet.Request](#anytype-Rpc-Object-CreateSet-Request) | [Rpc.Object.CreateSet.Response](#anytype-Rpc-Object-CreateSet-Response) | ObjectCreateSet just creates the new set, without adding the link to it from some other page | | ObjectGraph | [Rpc.Object.Graph.Request](#anytype-Rpc-Object-Graph-Request) | [Rpc.Object.Graph.Response](#anytype-Rpc-Object-Graph-Response) | | | ObjectSearch | [Rpc.Object.Search.Request](#anytype-Rpc-Object-Search-Request) | [Rpc.Object.Search.Response](#anytype-Rpc-Object-Search-Response) | | @@ -2094,6 +2154,14 @@ | DeviceSetName | [Rpc.Device.SetName.Request](#anytype-Rpc-Device-SetName-Request) | [Rpc.Device.SetName.Response](#anytype-Rpc-Device-SetName-Response) | | | DeviceList | [Rpc.Device.List.Request](#anytype-Rpc-Device-List-Request) | [Rpc.Device.List.Response](#anytype-Rpc-Device-List-Response) | | | DeviceNetworkStateSet | [Rpc.Device.NetworkState.Set.Request](#anytype-Rpc-Device-NetworkState-Set-Request) | [Rpc.Device.NetworkState.Set.Response](#anytype-Rpc-Device-NetworkState-Set-Response) | | +| ChatAddMessage | [Rpc.Chat.AddMessage.Request](#anytype-Rpc-Chat-AddMessage-Request) | [Rpc.Chat.AddMessage.Response](#anytype-Rpc-Chat-AddMessage-Response) | Chats dummy impl | +| ChatEditMessageContent | [Rpc.Chat.EditMessageContent.Request](#anytype-Rpc-Chat-EditMessageContent-Request) | [Rpc.Chat.EditMessageContent.Response](#anytype-Rpc-Chat-EditMessageContent-Response) | | +| ChatToggleMessageReaction | [Rpc.Chat.ToggleMessageReaction.Request](#anytype-Rpc-Chat-ToggleMessageReaction-Request) | [Rpc.Chat.ToggleMessageReaction.Response](#anytype-Rpc-Chat-ToggleMessageReaction-Response) | | +| ChatDeleteMessage | [Rpc.Chat.DeleteMessage.Request](#anytype-Rpc-Chat-DeleteMessage-Request) | [Rpc.Chat.DeleteMessage.Response](#anytype-Rpc-Chat-DeleteMessage-Response) | | +| ChatGetMessages | [Rpc.Chat.GetMessages.Request](#anytype-Rpc-Chat-GetMessages-Request) | [Rpc.Chat.GetMessages.Response](#anytype-Rpc-Chat-GetMessages-Response) | | +| ChatGetMessagesByIds | [Rpc.Chat.GetMessagesByIds.Request](#anytype-Rpc-Chat-GetMessagesByIds-Request) | [Rpc.Chat.GetMessagesByIds.Response](#anytype-Rpc-Chat-GetMessagesByIds-Response) | | +| ChatSubscribeLastMessages | [Rpc.Chat.SubscribeLastMessages.Request](#anytype-Rpc-Chat-SubscribeLastMessages-Request) | [Rpc.Chat.SubscribeLastMessages.Response](#anytype-Rpc-Chat-SubscribeLastMessages-Response) | | +| ChatUnsubscribe | [Rpc.Chat.Unsubscribe.Request](#anytype-Rpc-Chat-Unsubscribe-Request) | [Rpc.Chat.Unsubscribe.Response](#anytype-Rpc-Chat-Unsubscribe-Response) | | @@ -9721,6 +9789,480 @@ Get marks list in the selected range in text block. + + +### Rpc.Chat + + + + + + + + + +### Rpc.Chat.AddMessage + + + + + + + + + +### Rpc.Chat.AddMessage.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| chatObjectId | [string](#string) | | | +| message | [model.ChatMessage](#anytype-model-ChatMessage) | | | + + + + + + + + +### Rpc.Chat.AddMessage.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Chat.AddMessage.Response.Error](#anytype-Rpc-Chat-AddMessage-Response-Error) | | | +| messageId | [string](#string) | | | +| event | [ResponseEvent](#anytype-ResponseEvent) | | | + + + + + + + + +### Rpc.Chat.AddMessage.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Chat.AddMessage.Response.Error.Code](#anytype-Rpc-Chat-AddMessage-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + + + +### Rpc.Chat.DeleteMessage + + + + + + + + + +### Rpc.Chat.DeleteMessage.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| chatObjectId | [string](#string) | | | +| messageId | [string](#string) | | | + + + + + + + + +### Rpc.Chat.DeleteMessage.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Chat.DeleteMessage.Response.Error](#anytype-Rpc-Chat-DeleteMessage-Response-Error) | | | + + + + + + + + +### Rpc.Chat.DeleteMessage.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Chat.DeleteMessage.Response.Error.Code](#anytype-Rpc-Chat-DeleteMessage-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + + + +### Rpc.Chat.EditMessageContent + + + + + + + + + +### Rpc.Chat.EditMessageContent.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| chatObjectId | [string](#string) | | | +| messageId | [string](#string) | | | +| editedMessage | [model.ChatMessage](#anytype-model-ChatMessage) | | | + + + + + + + + +### Rpc.Chat.EditMessageContent.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Chat.EditMessageContent.Response.Error](#anytype-Rpc-Chat-EditMessageContent-Response-Error) | | | + + + + + + + + +### Rpc.Chat.EditMessageContent.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Chat.EditMessageContent.Response.Error.Code](#anytype-Rpc-Chat-EditMessageContent-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + + + +### Rpc.Chat.GetMessages + + + + + + + + + +### Rpc.Chat.GetMessages.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| chatObjectId | [string](#string) | | | +| beforeOrderId | [string](#string) | | OrderId of the message before which to get messages | +| limit | [int32](#int32) | | | + + + + + + + + +### Rpc.Chat.GetMessages.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Chat.GetMessages.Response.Error](#anytype-Rpc-Chat-GetMessages-Response-Error) | | | +| messages | [model.ChatMessage](#anytype-model-ChatMessage) | repeated | | + + + + + + + + +### Rpc.Chat.GetMessages.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Chat.GetMessages.Response.Error.Code](#anytype-Rpc-Chat-GetMessages-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + + + +### Rpc.Chat.GetMessagesByIds + + + + + + + + + +### Rpc.Chat.GetMessagesByIds.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| chatObjectId | [string](#string) | | | +| messageIds | [string](#string) | repeated | | + + + + + + + + +### Rpc.Chat.GetMessagesByIds.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Chat.GetMessagesByIds.Response.Error](#anytype-Rpc-Chat-GetMessagesByIds-Response-Error) | | | +| messages | [model.ChatMessage](#anytype-model-ChatMessage) | repeated | | + + + + + + + + +### Rpc.Chat.GetMessagesByIds.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Chat.GetMessagesByIds.Response.Error.Code](#anytype-Rpc-Chat-GetMessagesByIds-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + + + +### Rpc.Chat.SubscribeLastMessages + + + + + + + + + +### Rpc.Chat.SubscribeLastMessages.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| chatObjectId | [string](#string) | | Identifier for the chat | +| limit | [int32](#int32) | | Number of max last messages to return and subscribe | + + + + + + + + +### Rpc.Chat.SubscribeLastMessages.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Chat.SubscribeLastMessages.Response.Error](#anytype-Rpc-Chat-SubscribeLastMessages-Response-Error) | | | +| messages | [model.ChatMessage](#anytype-model-ChatMessage) | repeated | List of messages | +| numMessagesBefore | [int32](#int32) | | Number of messages before the returned messages | + + + + + + + + +### Rpc.Chat.SubscribeLastMessages.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Chat.SubscribeLastMessages.Response.Error.Code](#anytype-Rpc-Chat-SubscribeLastMessages-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + + + +### Rpc.Chat.ToggleMessageReaction + + + + + + + + + +### Rpc.Chat.ToggleMessageReaction.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| chatObjectId | [string](#string) | | | +| messageId | [string](#string) | | | +| emoji | [string](#string) | | | + + + + + + + + +### Rpc.Chat.ToggleMessageReaction.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Chat.ToggleMessageReaction.Response.Error](#anytype-Rpc-Chat-ToggleMessageReaction-Response-Error) | | | + + + + + + + + +### Rpc.Chat.ToggleMessageReaction.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Chat.ToggleMessageReaction.Response.Error.Code](#anytype-Rpc-Chat-ToggleMessageReaction-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + + + +### Rpc.Chat.Unsubscribe + + + + + + + + + +### Rpc.Chat.Unsubscribe.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| chatObjectId | [string](#string) | | Identifier for the chat | + + + + + + + + +### Rpc.Chat.Unsubscribe.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Chat.Unsubscribe.Response.Error](#anytype-Rpc-Chat-Unsubscribe-Response-Error) | | | + + + + + + + + +### Rpc.Chat.Unsubscribe.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Chat.Unsubscribe.Response.Error.Code](#anytype-Rpc-Chat-Unsubscribe-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + ### Rpc.Debug @@ -9747,6 +10289,11 @@ Get marks list in the selected range in text block. +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| dir | [string](#string) | | empty means using OS-provided temp dir | + + @@ -13034,6 +13581,63 @@ Get the info for page alongside with info for all inbound and outbound links fro + + +### Rpc.Object.ChatAdd + + + + + + + + + +### Rpc.Object.ChatAdd.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| objectId | [string](#string) | | | + + + + + + + + +### Rpc.Object.ChatAdd.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Object.ChatAdd.Response.Error](#anytype-Rpc-Object-ChatAdd-Response-Error) | | | +| chatId | [string](#string) | | | + + + + + + + + +### Rpc.Object.ChatAdd.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Object.ChatAdd.Response.Error.Code](#anytype-Rpc-Object-ChatAdd-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + ### Rpc.Object.Close @@ -20561,6 +21165,110 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er + + +### Rpc.Chat.AddMessage.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | ... | + + + + + +### Rpc.Chat.DeleteMessage.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | ... | + + + + + +### Rpc.Chat.EditMessageContent.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | ... | + + + + + +### Rpc.Chat.GetMessages.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | ... | + + + + + +### Rpc.Chat.GetMessagesByIds.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | ... | + + + + + +### Rpc.Chat.SubscribeLastMessages.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | ... | + + + + + +### Rpc.Chat.ToggleMessageReaction.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | ... | + + + + + +### Rpc.Chat.Unsubscribe.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | ... | + + + ### Rpc.Debug.AccountSelectTrace.Response.Error.Code @@ -21376,6 +22084,19 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er + + +### Rpc.Object.ChatAdd.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | ... | + + + ### Rpc.Object.Close.Response.Error.Code @@ -24988,6 +25709,80 @@ Precondition: user A opened a block + + +### Event.Chat + + + + + + + + + +### Event.Chat.Add + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| orderId | [string](#string) | | | +| message | [model.ChatMessage](#anytype-model-ChatMessage) | | | + + + + + + + + +### Event.Chat.Delete + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | + + + + + + + + +### Event.Chat.Update + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| message | [model.ChatMessage](#anytype-model-ChatMessage) | | | + + + + + + + + +### Event.Chat.UpdateReactions + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| reactions | [model.ChatMessage.Reactions](#anytype-model-ChatMessage-Reactions) | | | + + + + + + ### Event.File @@ -25190,6 +25985,10 @@ Precondition: user A opened a block | spaceSyncStatusUpdate | [Event.Space.SyncStatus.Update](#anytype-Event-Space-SyncStatus-Update) | | | | p2pStatusUpdate | [Event.P2PStatus.Update](#anytype-Event-P2PStatus-Update) | | | | importFinish | [Event.Import.Finish](#anytype-Event-Import-Finish) | | | +| chatAdd | [Event.Chat.Add](#anytype-Event-Chat-Add) | | | +| chatUpdate | [Event.Chat.Update](#anytype-Event-Chat-Update) | | | +| chatUpdateReactions | [Event.Chat.UpdateReactions](#anytype-Event-Chat-UpdateReactions) | | | +| chatDelete | [Event.Chat.Delete](#anytype-Event-Chat-Delete) | | | @@ -25978,6 +26777,7 @@ Precondition: user A and user B opened the same block | NotConnected | 0 | | | NotPossible | 1 | | | Connected | 2 | | +| Restricted | 3 | only for ios for now, fallback to NotPossible if not implemented on client | @@ -26036,6 +26836,7 @@ Precondition: user A and user B opened the same block | Synced | 3 | | | Failed | 4 | | | IncompatibleVersion | 5 | | +| NetworkNeedsUpdate | 6 | | @@ -26412,6 +27213,7 @@ Contains basic information about a user account | tableColumn | [Block.Content.TableColumn](#anytype-model-Block-Content-TableColumn) | | | | tableRow | [Block.Content.TableRow](#anytype-model-Block-Content-TableRow) | | | | widget | [Block.Content.Widget](#anytype-model-Block-Content-Widget) | | | +| chat | [Block.Content.Chat](#anytype-model-Block-Content-Chat) | | | @@ -26450,6 +27252,16 @@ Bookmark is to keep a web-link and to preview a content. + + +### Block.Content.Chat + + + + + + + ### Block.Content.Dataview @@ -26983,6 +27795,108 @@ Used to decode block meta only, without the content itself + + +### ChatMessage + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | Unique message identifier | +| orderId | [string](#string) | | Used for subscriptions | +| creator | [string](#string) | | Identifier for the message creator | +| createdAt | [int64](#int64) | | | +| modifiedAt | [int64](#int64) | | | +| replyToMessageId | [string](#string) | | Identifier for the message being replied to | +| message | [ChatMessage.MessageContent](#anytype-model-ChatMessage-MessageContent) | | Message content | +| attachments | [ChatMessage.Attachment](#anytype-model-ChatMessage-Attachment) | repeated | Attachments slice | +| reactions | [ChatMessage.Reactions](#anytype-model-ChatMessage-Reactions) | | Reactions to the message | + + + + + + + + +### ChatMessage.Attachment + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| target | [string](#string) | | Identifier for the attachment object | +| type | [ChatMessage.Attachment.AttachmentType](#anytype-model-ChatMessage-Attachment-AttachmentType) | | Type of attachment | + + + + + + + + +### ChatMessage.MessageContent + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| text | [string](#string) | | The text content of the message part | +| style | [Block.Content.Text.Style](#anytype-model-Block-Content-Text-Style) | | The style/type of the message part | +| marks | [Block.Content.Text.Mark](#anytype-model-Block-Content-Text-Mark) | repeated | List of marks applied to the text | + + + + + + + + +### ChatMessage.Reactions + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| reactions | [ChatMessage.Reactions.ReactionsEntry](#anytype-model-ChatMessage-Reactions-ReactionsEntry) | repeated | Map of emoji to list of user IDs | + + + + + + + + +### ChatMessage.Reactions.IdentityList + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ids | [string](#string) | repeated | List of user IDs | + + + + + + + + +### ChatMessage.Reactions.ReactionsEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [ChatMessage.Reactions.IdentityList](#anytype-model-ChatMessage-Reactions-IdentityList) | | | + + + + + + ### Detail @@ -28346,6 +29260,19 @@ stored | + + +### ChatMessage.Attachment.AttachmentType + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| FILE | 0 | File attachment | +| IMAGE | 1 | Image attachment | +| LINK | 2 | Link attachment | + + + ### DeviceNetworkType @@ -28620,6 +29547,8 @@ Look https://github.com/golang/protobuf/issues/1135 for more information. | spaceView | 18 | | | participant | 19 | | | pdf | 20 | | +| chat | 21 | | +| chatDerived | 22 | | @@ -28772,6 +29701,8 @@ RelationFormat describes how the underlying data is stored in the google.protobu | FileObject | 533 | | | NotificationObject | 535 | | | DevicesObject | 536 | | +| ChatObject | 537 | Container for any-store based chats | +| ChatDerivedObject | 544 | Any-store based object for chat | diff --git a/go.mod b/go.mod index 057a3abaa..ff8d95865 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/PuerkitoBio/goquery v1.9.2 github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 - github.com/anyproto/any-store v0.0.4 + github.com/anyproto/any-store v0.0.5 github.com/anyproto/any-sync v0.4.30 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/tantivy-go v0.1.0 @@ -76,7 +76,7 @@ require ( github.com/otiai10/copy v1.14.0 github.com/otiai10/opengraph/v2 v2.1.0 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.20.3 + github.com/prometheus/client_golang v1.20.4 github.com/pseudomuto/protoc-gen-doc v1.5.1 github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd github.com/samber/lo v1.47.0 @@ -99,7 +99,7 @@ require ( golang.org/x/net v0.29.0 golang.org/x/oauth2 v0.23.0 golang.org/x/text v0.18.0 - google.golang.org/grpc v1.66.1 + google.golang.org/grpc v1.66.2 gopkg.in/Graylog2/go-gelf.v2 v2.0.0-20180125164251-1832d8546a9f gopkg.in/yaml.v3 v3.0.1 storj.io/drpc v0.0.34 diff --git a/go.sum b/go.sum index 44e1cea6e..feb946452 100644 --- a/go.sum +++ b/go.sum @@ -83,8 +83,8 @@ github.com/andybalholm/cascadia v1.2.0/go.mod h1:YCyR8vOZT9aZ1CHEd8ap0gMVm2aFgxB github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss= github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= -github.com/anyproto/any-store v0.0.4 h1:Iv5XXOi0WM0g0yPNYixFA/MQpAxwHpJ5VtNuRszvE3g= -github.com/anyproto/any-store v0.0.4/go.mod h1:MA3sSqRXIp0h9bC2LnMuDGVEFGB3BkI/UuWNCleGHMs= +github.com/anyproto/any-store v0.0.5 h1:ToUbPNkGJcuYOpS2IWlbuxZadvsOOKLeLfKe8DeO3Hc= +github.com/anyproto/any-store v0.0.5/go.mod h1:MA3sSqRXIp0h9bC2LnMuDGVEFGB3BkI/UuWNCleGHMs= github.com/anyproto/any-sync v0.4.30 h1:2nnoVQF9WiBIw8pzwuOubwqf7a+xvZPDkXHmykTPi0k= github.com/anyproto/any-sync v0.4.30/go.mod h1:YjwTdTRL6b6GuutJNboJJ1M5D/kkdeSf9qF5xP6wG7Y= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= @@ -1220,8 +1220,8 @@ github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDf github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.20.3 h1:oPksm4K8B+Vt35tUhw6GbSNSgVlVSBH0qELP/7u83l4= -github.com/prometheus/client_golang v1.20.3/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1953,8 +1953,8 @@ google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.66.1 h1:hO5qAXR19+/Z44hmvIM4dQFMSYX9XcWsByfoxutBpAM= -google.golang.org/grpc v1.66.1/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= +google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/net/addrs/common.go b/net/addrs/common.go index bdf094e2d..e1f8257a4 100644 --- a/net/addrs/common.go +++ b/net/addrs/common.go @@ -1,15 +1,22 @@ package addrs import ( + "cmp" + "fmt" "net" "regexp" + "runtime" "strconv" + "strings" "golang.org/x/exp/slices" + "github.com/anyproto/anytype-heart/pkg/lib/logging" "github.com/anyproto/anytype-heart/util/slice" ) +var log = logging.Logger("anytype-net") + type Interface struct { net.Interface Addrs []InterfaceAddr @@ -20,9 +27,73 @@ type InterfaceAddr struct { Prefix int } +type NetInterfaceWithAddrCache struct { + net.Interface + cachedAddrs []net.Addr // ipv4 addresses + cachedErr error +} type InterfacesAddrs struct { - Interfaces []net.Interface - Addrs []net.Addr + Interfaces []NetInterfaceWithAddrCache + Addrs []net.Addr // addrs without attachment to specific interface. Used as cheap(1 syscall) way to check if smth has changed +} + +func WrapInterface(iface net.Interface) NetInterfaceWithAddrCache { + return NetInterfaceWithAddrCache{ + Interface: iface, + } +} + +func WrapInterfaces(ifaces []net.Interface) []NetInterfaceWithAddrCache { + var m = make([]NetInterfaceWithAddrCache, 0, len(ifaces)) + for i := range ifaces { + m = append(m, NetInterfaceWithAddrCache{ + Interface: ifaces[i], + }) + } + return m +} + +// GetAddr returns ipv4 only addresses for interface or cached one if set +func (i NetInterfaceWithAddrCache) GetAddr() []net.Addr { + if i.cachedAddrs != nil { + return i.cachedAddrs + } + if i.cachedErr != nil { + return nil + } + i.cachedAddrs, i.cachedErr = i.Interface.Addrs() + if i.cachedErr != nil { + log.Warn("interface GetAddr error: %v", i.cachedErr) + } + // filter-out ipv6 + i.cachedAddrs = slice.Filter(i.cachedAddrs, func(addr net.Addr) bool { + if ip, ok := addr.(*net.IPNet); ok { + if ip.IP.To4() == nil { + return false + } + } + return true + }) + return i.cachedAddrs +} + +func NetAddrsEqualUnordered(a, b []net.Addr) bool { + if len(a) != len(b) { + return false + } + for _, addr := range a { + found := false + for _, addr2 := range b { + if addr.String() == addr2.String() { + found = true + break + } + } + if !found { + return false + } + } + return true } func (i InterfacesAddrs) Equal(other InterfacesAddrs) bool { @@ -34,35 +105,110 @@ func (i InterfacesAddrs) Equal(other InterfacesAddrs) bool { } myStr := getStrings(i) otherStr := getStrings(other) - return slices.Equal(myStr, otherStr) + // compare slices without order + if !slices.Equal(myStr, otherStr) { + log.Debug(fmt.Sprintf("addrs compare: strings mismatch: %v != %v", myStr, otherStr)) + return false + } + return true } var ( - ifaceRe = regexp.MustCompile(`^([a-z]*?)([0-9]+)$`) + ifaceRe = regexp.MustCompile(`^([a-z]*?)([0-9]+)$`) + ifaceWindowsRe = regexp.MustCompile(`^(.*?)([0-9]*)$`) + // ifaceReBusSlot used for prefixBusSlot naming schema used in newer linux distros https://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_id.c#n20 - ifaceReBusSlot = regexp.MustCompile(`^([a-z]*?)p([0-9]+)s([0-9a-f]+)$`) + ifaceReBusSlot = regexp.MustCompile(`^(?Penp|eno|ens|enx|wlp|wlx)(?P[0-9a-fA-F]*)s?(?P[0-9a-fA-F]*)?$`) ) -func parseInterfaceName(name string) (prefix string, bus int, num int64) { +func cleanInterfaceName(name string) (clean string, namingType NamingType) { + if strings.HasPrefix(name, "en") || + strings.HasPrefix(name, "wl") || + strings.HasPrefix(name, "eth") { + + lastSymbol := name[len(name)-1] + switch NamingType(lastSymbol) { + case NamingTypeBusSlot, NamingTypeHotplug, NamingTypeMac, NamingTypeOnboard: + return name[0 : len(name)-1], NamingType(lastSymbol) + } + } + + return name, NamingTypeOld +} + +type NamingType string + +const ( + NamingTypeOld NamingType = "" + NamingTypeOnboard NamingType = "o" + NamingTypeBusSlot NamingType = "p" + NamingTypeMac NamingType = "x" + NamingTypeHotplug NamingType = "s" +) + +func (n NamingType) Priority() int { + switch n { + case NamingTypeOld: + return 0 + case NamingTypeOnboard: + return 1 + case NamingTypeBusSlot: + return 2 + case NamingTypeMac: + return 3 + case NamingTypeHotplug: + return 4 + default: + return 5 + } +} + +// parseInterfaceName parses interface name and returns prefix, naming type, bus number and slot number +// e.g. enp0s3 -> en, NamingTypeBusSlot, 0, 3 +// bus and slot are interpreted as hex numbers +// bus is also used for mac address +// in case of enx001122334455 -> en, NamingTypeMac, 0x001122334455, 0 +func parseInterfaceName(name string) (iface string, namingType NamingType, busNum int64, num int64) { + if runtime.GOOS == "windows" { + name, num = parseInterfaceWindowsName(name) + return + } // try new-style naming schema first (enp0s3, wlp2s0, ...) res := ifaceReBusSlot.FindStringSubmatch(name) if len(res) > 0 { - if len(res) > 1 { - prefix = res[1] - } - if len(res) > 2 { - bus, _ = strconv.Atoi(res[2]) - } - if len(res) > 3 { - numHex := res[3] - num, _ = strconv.ParseInt(numHex, 16, 32) + + for i, subName := range ifaceReBusSlot.SubexpNames() { + if i > 0 && res[i] != "" { + switch subName { + case "type": + iface, namingType = cleanInterfaceName(res[i]) + case "bus": + busNum, _ = strconv.ParseInt(res[i], 16, 64) + case "slot": // or mac + num, _ = strconv.ParseInt(res[i], 16, 64) + } + } } return } // try old-style naming schema (eth0, wlan0, ...) res = ifaceRe.FindStringSubmatch(name) if len(res) > 1 { - prefix = res[1] + iface = res[1] + } + if len(res) > 2 { + num, _ = strconv.ParseInt(res[2], 10, 32) + } + if iface == "" { + + } + return +} + +func parseInterfaceWindowsName(name string) (iface string, num int64) { + res := ifaceWindowsRe.FindStringSubmatch(name) + if len(res) > 1 { + iface = res[1] } if len(res) > 2 { num, _ = strconv.ParseInt(res[2], 10, 32) @@ -70,42 +216,62 @@ func parseInterfaceName(name string) (prefix string, bus int, num int64) { return } -func (i InterfacesAddrs) SortWithPriority(priority []string) { - less := func(a, b net.Interface) bool { - aPrefix, aBus, aNum := parseInterfaceName(a.Name) - bPrefix, bBus, bNum := parseInterfaceName(b.Name) +type interfaceComparer struct { + priority []string +} - aPrioirity := slice.FindPos(priority, aPrefix) - bPrioirity := slice.FindPos(priority, bPrefix) +func (i interfaceComparer) Compare(a, b string) int { + aPrefix, aType, aBus, aNum := parseInterfaceName(a) + bPrefix, bType, bBus, bNum := parseInterfaceName(b) - if aPrefix == bPrefix { - return aNum < bNum - } else if aPrioirity == -1 && bPrioirity == -1 { - // sort alphabetically - return aPrefix < bPrefix - } else if aPrioirity != -1 && bPrioirity != -1 { - // in case we have [eth, wlan] - if aPrioirity == bPrioirity { - // prioritize eth0 over wlan0 - return aPrioirity < bPrioirity + aPrioirity := slice.FindPos(i.priority, aPrefix) + bPrioirity := slice.FindPos(i.priority, bPrefix) + + if aPrioirity != -1 && bPrioirity != -1 || aPrioirity == -1 && bPrioirity == -1 { + if aPrefix != bPrefix { + if aPrioirity != -1 && bPrioirity != -1 { + // prioritize by priority + return cmp.Compare(aPrioirity, bPrioirity) + } else { + // prioritize by prefix + return cmp.Compare(aPrefix, bPrefix) } - // prioritise wlan1 over eth8 - if aBus != bBus { - return aBus < bBus - } - return aNum < bNum - } else if aPrioirity != -1 { - return true - } else { - return false } + if aType != bType { + return cmp.Compare(aType.Priority(), bType.Priority()) + } + if aBus != bBus { + return cmp.Compare(aBus, bBus) + } + if aNum != bNum { + return cmp.Compare(aNum, bNum) + } + // shouldn't be a case + return cmp.Compare(a, b) } - slices.SortFunc(i.Interfaces, func(a, b net.Interface) int { - if less(a, b) { - return -1 - } + + if aPrioirity == -1 { return 1 - }) + } else { + return -1 + } +} + +func (i InterfacesAddrs) SortInterfacesWithPriority(priority []string) { + sorter := interfaceComparer{priority: priority} + + compare := func(a, b NetInterfaceWithAddrCache) int { + return sorter.Compare(a.Name, b.Name) + } + slices.SortFunc(i.Interfaces, compare) +} + +func (i InterfacesAddrs) NetInterfaces() []net.Interface { + var s = make([]net.Interface, 0, len(i.Interfaces)) + for _, iface := range i.Interfaces { + s = append(s, iface.Interface) + } + return s } func getStrings(i InterfacesAddrs) (allStrings []string) { @@ -118,3 +284,54 @@ func getStrings(i InterfacesAddrs) (allStrings []string) { slices.Sort(allStrings) return } + +func (i InterfacesAddrs) GetInterfaceByAddr(addr net.Addr) (net.Interface, bool) { + for _, iface := range i.Interfaces { + for _, addrInIface := range iface.GetAddr() { + if addr.String() == addrInIface.String() { + return iface.Interface, true + } + } + } + return net.Interface{}, false +} + +// SortIPsLikeInterfaces sort IPs in a way they match sorted interface addresses(via mask matching) +// e.g. we have interfaces +// - en0: 192.168.1.10/24 +// - lo0: 127.0.0.1/8 +// we pass IPs: 10.124.22.1, 127.0.0.1, 192.168.1.25 +// we will get: 192.168.1.25, 127.0.0.1, 10.124.22.1 +// 10.124.22.1 does not match any interface, so it will be at the end +func (i InterfacesAddrs) SortIPsLikeInterfaces(ips []net.IP) { + slices.SortFunc(ips, func(a, b net.IP) int { + posA, _ := i.findInterfacePosByIP(a) + posB, _ := i.findInterfacePosByIP(b) + + if posA == -1 && posB != -1 { + return 1 + } + if posA != -1 && posB == -1 { + return -1 + } + if posA < posB { + return -1 + } else if posA > posB { + return 1 + } + return 0 + }) +} + +func (i InterfacesAddrs) findInterfacePosByIP(ip net.IP) (pos int, equal bool) { + for position, iface := range i.Interfaces { + for _, addr := range iface.GetAddr() { + if ni, ok := addr.(*net.IPNet); ok { + if ni.Contains(ip) { + return position, ni.IP.Equal(ip) + } + } + } + } + return -1, false +} diff --git a/net/addrs/common_test.go b/net/addrs/common_test.go index 8d916c276..6ed49705a 100644 --- a/net/addrs/common_test.go +++ b/net/addrs/common_test.go @@ -1,6 +1,11 @@ package addrs -import "testing" +import ( + "sort" + "testing" + + "github.com/stretchr/testify/assert" +) func Test_parseInterfaceName(t *testing.T) { type args struct { @@ -10,18 +15,27 @@ func Test_parseInterfaceName(t *testing.T) { name string args args wantPrefix string - wantBus int + wantType NamingType + wantBus int64 wantNum int64 }{ - {"eth0", args{"eth0"}, "eth", 0, 0}, - {"eth1", args{"eth1"}, "eth", 0, 1}, - {"eth10", args{"eth10"}, "eth", 0, 10}, - {"enp0s10", args{"enp0s10"}, "en", 0, 16}, - {"wlp0s20f3", args{"wlp0s20f3"}, "wl", 0, 8435}, + {"eth0", args{"eth0"}, "eth", NamingTypeOld, 0, 0}, + {"eth1", args{"eth1"}, "eth", NamingTypeOld, 0, 1}, + {"eth10", args{"eth10"}, "eth", NamingTypeOld, 0, 10}, + {"enp0s10", args{"enp0s10"}, "en", NamingTypeBusSlot, 0, 0x10}, + {"wlp0s20f3", args{"wlp0s20f3"}, "wl", NamingTypeBusSlot, 0, 0x20f3}, + {"tun0", args{"tun0"}, "tun", NamingTypeOld, 0, 0}, + {"tap0", args{"tap0"}, "tap", NamingTypeOld, 0, 0}, + {"lo0", args{"lo0"}, "lo", NamingTypeOld, 0, 0}, + {"lo1", args{"lo1"}, "lo", NamingTypeOld, 0, 1}, + {"lo10", args{"lo10"}, "lo", NamingTypeOld, 0, 10}, + {"wlx001122334455", args{"wlx001122334455"}, "wl", NamingTypeMac, 0x001122334455, 0}, + {"wlxffffffffffff", args{"wlxffffffffffff"}, "wl", NamingTypeMac, 0xffffffffffff, 0}, + {"eno16777736", args{"eno16777736"}, "en", NamingTypeOnboard, 0x16777736, 0}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - gotPrefix, gotBus, gotNum := parseInterfaceName(tt.args.name) + gotPrefix, gotType, gotBus, gotNum := parseInterfaceName(tt.args.name) if gotPrefix != tt.wantPrefix { t.Errorf("parseInterfaceName() gotPrefix = %v, want %v", gotPrefix, tt.wantPrefix) } @@ -31,6 +45,54 @@ func Test_parseInterfaceName(t *testing.T) { if gotNum != tt.wantNum { t.Errorf("parseInterfaceName() gotNum = %v, want %v", gotNum, tt.wantNum) } + if gotType != tt.wantType { + t.Errorf("parseInterfaceName() gotType = %v, want %v", gotType, tt.wantType) + } }) } } + +// TestInterfaceSorterSorting tests sorting a list of interface names using the Compare method. +func TestInterfaceSorterSorting(t *testing.T) { + sorter := interfaceComparer{ + priority: []string{"wl", "wlan", "en", "eth", "tun", "tap", "utun"}, + } + + // List of interfaces to sort + interfaces := []string{ + "tap0", + "awdl0", + "eth0", + "eno1", + "wlp2s0", + "ens2", + "enp0s3", + "tun0", + "wlan0", + "enx001122334455", + "wlx001122334455", + } + + // Expected order after sorting + expected := []string{ + "wlp2s0", // Wireless LAN on PCI bus + "wlx001122334455", // Wireless LAN with MAC address + "wlan0", // Old-style Wireless LAN + "eno1", // Highest priority (onboard Ethernet) + "enp0s3", // PCI bus Ethernet + "enx001122334455", // Ethernet with MAC address + "ens2", // Hotplug Ethernet + "eth0", // Old-style Ethernet + "tun0", // VPN TUN interface + "tap0", // VPN TAP interface + "awdl0", + } + + // Sorting the interfaces using the Compare method + sort.Slice(interfaces, func(i, j int) bool { + return sorter.Compare(interfaces[i], interfaces[j]) < 0 + }) + + // Assert the sorted order matches the expected order + assert.Equal(t, expected, interfaces, "The interfaces should be sorted correctly according to priority.") +} diff --git a/net/addrs/interface.go b/net/addrs/interface.go index df78206e2..027fc852c 100644 --- a/net/addrs/interface.go +++ b/net/addrs/interface.go @@ -5,9 +5,6 @@ package addrs import ( "net" - "slices" - - "github.com/anyproto/anytype-heart/util/slice" ) func SetInterfaceAddrsGetter(getter InterfaceAddrsGetter) {} @@ -32,16 +29,6 @@ func GetInterfacesAddrs() (iAddrs InterfacesAddrs, err error) { if err != nil { return } - iAddrs.Interfaces = ifaces - - iAddrs.Interfaces = slice.Filter(iAddrs.Interfaces, func(iface net.Interface) bool { - return iface.Flags&net.FlagUp != 0 && iface.Flags&net.FlagMulticast != 0 - }) + iAddrs.Interfaces = WrapInterfaces(ifaces) return } - -func IsLoopBack(interfaces []net.Interface) bool { - return len(interfaces) == 1 && slices.ContainsFunc(interfaces, func(n net.Interface) bool { - return n.Flags&net.FlagLoopback != 0 - }) -} diff --git a/net/addrs/interface_android.go b/net/addrs/interface_android.go index f92462f84..827b3296b 100644 --- a/net/addrs/interface_android.go +++ b/net/addrs/interface_android.go @@ -57,8 +57,9 @@ func GetInterfacesAddrs() (addrs InterfacesAddrs, err error) { } lock.Unlock() for _, iface := range interfaceGetter.Interfaces() { - addrs.Interfaces = append(addrs.Interfaces, iface.Interface) + ifaceWrapped := WrapInterface(iface.Interface) unmaskedAddrs := iface.Addrs + ifaceAddrs := make([]net.Addr, 0, len(unmaskedAddrs)) for _, addr := range unmaskedAddrs { var mask []byte if len(addr.Ip) == 4 { @@ -66,11 +67,16 @@ func GetInterfacesAddrs() (addrs InterfacesAddrs, err error) { } else { mask = ipV6MaskFromPrefix(addr.Prefix) } - addrs.Addrs = append(addrs.Addrs, &net.IPNet{ + ifaceAddrs = append(ifaceAddrs, &net.IPNet{ IP: addr.Ip, Mask: mask, }) } + // inject cached addresses, because we can't get them from net.Interface's Addrs() on android + ifaceWrapped.cachedAddrs = ifaceAddrs + addrs.Addrs = append(addrs.Addrs, ifaceAddrs...) + addrs.Interfaces = append(addrs.Interfaces, ifaceWrapped) } + return } diff --git a/pb/commands.pb.go b/pb/commands.pb.go index 70a11b9d4..34b29924b 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -2123,6 +2123,34 @@ func (RpcObjectCreateFromUrlResponseErrorCode) EnumDescriptor() ([]byte, []int) return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 9, 1, 0, 0} } +type RpcObjectChatAddResponseErrorCode int32 + +const ( + RpcObjectChatAddResponseError_NULL RpcObjectChatAddResponseErrorCode = 0 + RpcObjectChatAddResponseError_UNKNOWN_ERROR RpcObjectChatAddResponseErrorCode = 1 + RpcObjectChatAddResponseError_BAD_INPUT RpcObjectChatAddResponseErrorCode = 2 +) + +var RpcObjectChatAddResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", +} + +var RpcObjectChatAddResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, +} + +func (x RpcObjectChatAddResponseErrorCode) String() string { + return proto.EnumName(RpcObjectChatAddResponseErrorCode_name, int32(x)) +} + +func (RpcObjectChatAddResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 10, 1, 0, 0} +} + type RpcObjectBookmarkFetchResponseErrorCode int32 const ( @@ -2148,7 +2176,7 @@ func (x RpcObjectBookmarkFetchResponseErrorCode) String() string { } func (RpcObjectBookmarkFetchResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 10, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 11, 1, 0, 0} } type RpcObjectToBookmarkResponseErrorCode int32 @@ -2176,7 +2204,7 @@ func (x RpcObjectToBookmarkResponseErrorCode) String() string { } func (RpcObjectToBookmarkResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 11, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 12, 1, 0, 0} } type RpcObjectDuplicateResponseErrorCode int32 @@ -2204,7 +2232,7 @@ func (x RpcObjectDuplicateResponseErrorCode) String() string { } func (RpcObjectDuplicateResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 12, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 13, 1, 0, 0} } type RpcObjectOpenBreadcrumbsResponseErrorCode int32 @@ -2232,7 +2260,7 @@ func (x RpcObjectOpenBreadcrumbsResponseErrorCode) String() string { } func (RpcObjectOpenBreadcrumbsResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 13, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 14, 1, 0, 0} } type RpcObjectSetBreadcrumbsResponseErrorCode int32 @@ -2260,7 +2288,7 @@ func (x RpcObjectSetBreadcrumbsResponseErrorCode) String() string { } func (RpcObjectSetBreadcrumbsResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 14, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 15, 1, 0, 0} } type RpcObjectShareByLinkResponseErrorCode int32 @@ -2288,7 +2316,7 @@ func (x RpcObjectShareByLinkResponseErrorCode) String() string { } func (RpcObjectShareByLinkResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 15, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 16, 1, 0, 0} } type RpcObjectSearchResponseErrorCode int32 @@ -2316,7 +2344,7 @@ func (x RpcObjectSearchResponseErrorCode) String() string { } func (RpcObjectSearchResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 16, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 17, 1, 0, 0} } type RpcObjectSearchWithMetaResponseErrorCode int32 @@ -2344,7 +2372,7 @@ func (x RpcObjectSearchWithMetaResponseErrorCode) String() string { } func (RpcObjectSearchWithMetaResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 17, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 18, 1, 0, 0} } type RpcObjectGraphEdgeType int32 @@ -2369,7 +2397,7 @@ func (x RpcObjectGraphEdgeType) String() string { } func (RpcObjectGraphEdgeType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 18, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 19, 1, 0} } type RpcObjectGraphResponseErrorCode int32 @@ -2397,7 +2425,7 @@ func (x RpcObjectGraphResponseErrorCode) String() string { } func (RpcObjectGraphResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 18, 2, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 19, 2, 0, 0} } type RpcObjectSearchSubscribeResponseErrorCode int32 @@ -2425,7 +2453,7 @@ func (x RpcObjectSearchSubscribeResponseErrorCode) String() string { } func (RpcObjectSearchSubscribeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 19, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 20, 1, 0, 0} } type RpcObjectGroupsSubscribeResponseErrorCode int32 @@ -2453,7 +2481,7 @@ func (x RpcObjectGroupsSubscribeResponseErrorCode) String() string { } func (RpcObjectGroupsSubscribeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 20, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 21, 1, 0, 0} } type RpcObjectSubscribeIdsResponseErrorCode int32 @@ -2481,7 +2509,7 @@ func (x RpcObjectSubscribeIdsResponseErrorCode) String() string { } func (RpcObjectSubscribeIdsResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 21, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 22, 1, 0, 0} } type RpcObjectSearchUnsubscribeResponseErrorCode int32 @@ -2509,7 +2537,7 @@ func (x RpcObjectSearchUnsubscribeResponseErrorCode) String() string { } func (RpcObjectSearchUnsubscribeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 22, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 23, 1, 0, 0} } type RpcObjectSetLayoutResponseErrorCode int32 @@ -2537,7 +2565,7 @@ func (x RpcObjectSetLayoutResponseErrorCode) String() string { } func (RpcObjectSetLayoutResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 23, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 24, 1, 0, 0} } type RpcObjectSetIsFavoriteResponseErrorCode int32 @@ -2565,7 +2593,7 @@ func (x RpcObjectSetIsFavoriteResponseErrorCode) String() string { } func (RpcObjectSetIsFavoriteResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 24, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 25, 1, 0, 0} } type RpcObjectSetIsArchivedResponseErrorCode int32 @@ -2593,7 +2621,7 @@ func (x RpcObjectSetIsArchivedResponseErrorCode) String() string { } func (RpcObjectSetIsArchivedResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 25, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 26, 1, 0, 0} } type RpcObjectSetSourceResponseErrorCode int32 @@ -2621,7 +2649,7 @@ func (x RpcObjectSetSourceResponseErrorCode) String() string { } func (RpcObjectSetSourceResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 26, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 27, 1, 0, 0} } type RpcObjectWorkspaceSetDashboardResponseErrorCode int32 @@ -2649,7 +2677,7 @@ func (x RpcObjectWorkspaceSetDashboardResponseErrorCode) String() string { } func (RpcObjectWorkspaceSetDashboardResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 27, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 28, 1, 0, 0} } type RpcObjectSetObjectTypeResponseErrorCode int32 @@ -2677,7 +2705,7 @@ func (x RpcObjectSetObjectTypeResponseErrorCode) String() string { } func (RpcObjectSetObjectTypeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 28, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 29, 1, 0, 0} } type RpcObjectSetInternalFlagsResponseErrorCode int32 @@ -2705,7 +2733,7 @@ func (x RpcObjectSetInternalFlagsResponseErrorCode) String() string { } func (RpcObjectSetInternalFlagsResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 29, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 30, 1, 0, 0} } type RpcObjectSetDetailsResponseErrorCode int32 @@ -2733,7 +2761,7 @@ func (x RpcObjectSetDetailsResponseErrorCode) String() string { } func (RpcObjectSetDetailsResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 30, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 31, 1, 0, 0} } type RpcObjectToSetResponseErrorCode int32 @@ -2761,7 +2789,7 @@ func (x RpcObjectToSetResponseErrorCode) String() string { } func (RpcObjectToSetResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 31, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 32, 1, 0, 0} } type RpcObjectToCollectionResponseErrorCode int32 @@ -2789,7 +2817,7 @@ func (x RpcObjectToCollectionResponseErrorCode) String() string { } func (RpcObjectToCollectionResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 32, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 33, 1, 0, 0} } type RpcObjectUndoResponseErrorCode int32 @@ -2820,7 +2848,7 @@ func (x RpcObjectUndoResponseErrorCode) String() string { } func (RpcObjectUndoResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 34, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 35, 1, 0, 0} } type RpcObjectRedoResponseErrorCode int32 @@ -2851,7 +2879,7 @@ func (x RpcObjectRedoResponseErrorCode) String() string { } func (RpcObjectRedoResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 35, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 36, 1, 0, 0} } type RpcObjectListDuplicateResponseErrorCode int32 @@ -2879,7 +2907,7 @@ func (x RpcObjectListDuplicateResponseErrorCode) String() string { } func (RpcObjectListDuplicateResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 36, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 37, 1, 0, 0} } type RpcObjectListDeleteResponseErrorCode int32 @@ -2907,7 +2935,7 @@ func (x RpcObjectListDeleteResponseErrorCode) String() string { } func (RpcObjectListDeleteResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 37, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 38, 1, 0, 0} } type RpcObjectListSetIsArchivedResponseErrorCode int32 @@ -2935,7 +2963,7 @@ func (x RpcObjectListSetIsArchivedResponseErrorCode) String() string { } func (RpcObjectListSetIsArchivedResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 38, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 39, 1, 0, 0} } type RpcObjectListSetIsFavoriteResponseErrorCode int32 @@ -2963,7 +2991,7 @@ func (x RpcObjectListSetIsFavoriteResponseErrorCode) String() string { } func (RpcObjectListSetIsFavoriteResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 39, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 40, 1, 0, 0} } type RpcObjectListSetObjectTypeResponseErrorCode int32 @@ -2991,7 +3019,7 @@ func (x RpcObjectListSetObjectTypeResponseErrorCode) String() string { } func (RpcObjectListSetObjectTypeResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 40, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 41, 1, 0, 0} } type RpcObjectListSetDetailsResponseErrorCode int32 @@ -3019,7 +3047,7 @@ func (x RpcObjectListSetDetailsResponseErrorCode) String() string { } func (RpcObjectListSetDetailsResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 41, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 42, 1, 0, 0} } type RpcObjectListModifyDetailValuesResponseErrorCode int32 @@ -3047,7 +3075,7 @@ func (x RpcObjectListModifyDetailValuesResponseErrorCode) String() string { } func (RpcObjectListModifyDetailValuesResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 42, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 43, 1, 0, 0} } type RpcObjectApplyTemplateResponseErrorCode int32 @@ -3075,7 +3103,7 @@ func (x RpcObjectApplyTemplateResponseErrorCode) String() string { } func (RpcObjectApplyTemplateResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 43, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 44, 1, 0, 0} } type RpcObjectListExportResponseErrorCode int32 @@ -3103,7 +3131,7 @@ func (x RpcObjectListExportResponseErrorCode) String() string { } func (RpcObjectListExportResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 44, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 1, 0, 0} } type RpcObjectImportRequestMode int32 @@ -3128,7 +3156,7 @@ func (x RpcObjectImportRequestMode) String() string { } func (RpcObjectImportRequestMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 0, 0} } type RpcObjectImportRequestPbParamsType int32 @@ -3153,7 +3181,7 @@ func (x RpcObjectImportRequestPbParamsType) String() string { } func (RpcObjectImportRequestPbParamsType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 0, 5, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 0, 5, 0} } type RpcObjectImportRequestCsvParamsMode int32 @@ -3178,7 +3206,7 @@ func (x RpcObjectImportRequestCsvParamsMode) String() string { } func (RpcObjectImportRequestCsvParamsMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 0, 6, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 0, 6, 0} } type RpcObjectImportResponseErrorCode int32 @@ -3224,7 +3252,7 @@ func (x RpcObjectImportResponseErrorCode) String() string { } func (RpcObjectImportResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 1, 0, 0} } type RpcObjectImportNotionValidateTokenResponseErrorCode int32 @@ -3267,7 +3295,7 @@ func (x RpcObjectImportNotionValidateTokenResponseErrorCode) String() string { } func (RpcObjectImportNotionValidateTokenResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 2, 0, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 2, 0, 1, 0, 0} } type RpcObjectImportListResponseErrorCode int32 @@ -3298,7 +3326,7 @@ func (x RpcObjectImportListResponseErrorCode) String() string { } func (RpcObjectImportListResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 47, 1, 0, 0} } type RpcObjectImportListImportResponseType int32 @@ -3329,7 +3357,7 @@ func (x RpcObjectImportListImportResponseType) String() string { } func (RpcObjectImportListImportResponseType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 2, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 47, 2, 0} } type RpcObjectImportUseCaseRequestUseCase int32 @@ -3369,7 +3397,7 @@ func (x RpcObjectImportUseCaseRequestUseCase) String() string { } func (RpcObjectImportUseCaseRequestUseCase) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 47, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 48, 0, 0} } type RpcObjectImportUseCaseResponseErrorCode int32 @@ -3397,7 +3425,7 @@ func (x RpcObjectImportUseCaseResponseErrorCode) String() string { } func (RpcObjectImportUseCaseResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 47, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 48, 1, 0, 0} } type RpcObjectImportExperienceResponseErrorCode int32 @@ -3428,7 +3456,7 @@ func (x RpcObjectImportExperienceResponseErrorCode) String() string { } func (RpcObjectImportExperienceResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 48, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 49, 1, 0, 0} } type RpcObjectCollectionAddResponseErrorCode int32 @@ -8514,6 +8542,230 @@ func (RpcDeviceNetworkStateSetResponseErrorCode) EnumDescriptor() ([]byte, []int return fileDescriptor_8261c968b2e6f45c, []int{0, 39, 2, 0, 1, 0, 0} } +type RpcChatAddMessageResponseErrorCode int32 + +const ( + RpcChatAddMessageResponseError_NULL RpcChatAddMessageResponseErrorCode = 0 + RpcChatAddMessageResponseError_UNKNOWN_ERROR RpcChatAddMessageResponseErrorCode = 1 + RpcChatAddMessageResponseError_BAD_INPUT RpcChatAddMessageResponseErrorCode = 2 +) + +var RpcChatAddMessageResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", +} + +var RpcChatAddMessageResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, +} + +func (x RpcChatAddMessageResponseErrorCode) String() string { + return proto.EnumName(RpcChatAddMessageResponseErrorCode_name, int32(x)) +} + +func (RpcChatAddMessageResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 0, 1, 0, 0} +} + +type RpcChatEditMessageContentResponseErrorCode int32 + +const ( + RpcChatEditMessageContentResponseError_NULL RpcChatEditMessageContentResponseErrorCode = 0 + RpcChatEditMessageContentResponseError_UNKNOWN_ERROR RpcChatEditMessageContentResponseErrorCode = 1 + RpcChatEditMessageContentResponseError_BAD_INPUT RpcChatEditMessageContentResponseErrorCode = 2 +) + +var RpcChatEditMessageContentResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", +} + +var RpcChatEditMessageContentResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, +} + +func (x RpcChatEditMessageContentResponseErrorCode) String() string { + return proto.EnumName(RpcChatEditMessageContentResponseErrorCode_name, int32(x)) +} + +func (RpcChatEditMessageContentResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 1, 1, 0, 0} +} + +type RpcChatToggleMessageReactionResponseErrorCode int32 + +const ( + RpcChatToggleMessageReactionResponseError_NULL RpcChatToggleMessageReactionResponseErrorCode = 0 + RpcChatToggleMessageReactionResponseError_UNKNOWN_ERROR RpcChatToggleMessageReactionResponseErrorCode = 1 + RpcChatToggleMessageReactionResponseError_BAD_INPUT RpcChatToggleMessageReactionResponseErrorCode = 2 +) + +var RpcChatToggleMessageReactionResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", +} + +var RpcChatToggleMessageReactionResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, +} + +func (x RpcChatToggleMessageReactionResponseErrorCode) String() string { + return proto.EnumName(RpcChatToggleMessageReactionResponseErrorCode_name, int32(x)) +} + +func (RpcChatToggleMessageReactionResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 2, 1, 0, 0} +} + +type RpcChatDeleteMessageResponseErrorCode int32 + +const ( + RpcChatDeleteMessageResponseError_NULL RpcChatDeleteMessageResponseErrorCode = 0 + RpcChatDeleteMessageResponseError_UNKNOWN_ERROR RpcChatDeleteMessageResponseErrorCode = 1 + RpcChatDeleteMessageResponseError_BAD_INPUT RpcChatDeleteMessageResponseErrorCode = 2 +) + +var RpcChatDeleteMessageResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", +} + +var RpcChatDeleteMessageResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, +} + +func (x RpcChatDeleteMessageResponseErrorCode) String() string { + return proto.EnumName(RpcChatDeleteMessageResponseErrorCode_name, int32(x)) +} + +func (RpcChatDeleteMessageResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 3, 1, 0, 0} +} + +type RpcChatGetMessagesResponseErrorCode int32 + +const ( + RpcChatGetMessagesResponseError_NULL RpcChatGetMessagesResponseErrorCode = 0 + RpcChatGetMessagesResponseError_UNKNOWN_ERROR RpcChatGetMessagesResponseErrorCode = 1 + RpcChatGetMessagesResponseError_BAD_INPUT RpcChatGetMessagesResponseErrorCode = 2 +) + +var RpcChatGetMessagesResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", +} + +var RpcChatGetMessagesResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, +} + +func (x RpcChatGetMessagesResponseErrorCode) String() string { + return proto.EnumName(RpcChatGetMessagesResponseErrorCode_name, int32(x)) +} + +func (RpcChatGetMessagesResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 4, 1, 0, 0} +} + +type RpcChatGetMessagesByIdsResponseErrorCode int32 + +const ( + RpcChatGetMessagesByIdsResponseError_NULL RpcChatGetMessagesByIdsResponseErrorCode = 0 + RpcChatGetMessagesByIdsResponseError_UNKNOWN_ERROR RpcChatGetMessagesByIdsResponseErrorCode = 1 + RpcChatGetMessagesByIdsResponseError_BAD_INPUT RpcChatGetMessagesByIdsResponseErrorCode = 2 +) + +var RpcChatGetMessagesByIdsResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", +} + +var RpcChatGetMessagesByIdsResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, +} + +func (x RpcChatGetMessagesByIdsResponseErrorCode) String() string { + return proto.EnumName(RpcChatGetMessagesByIdsResponseErrorCode_name, int32(x)) +} + +func (RpcChatGetMessagesByIdsResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 5, 1, 0, 0} +} + +type RpcChatSubscribeLastMessagesResponseErrorCode int32 + +const ( + RpcChatSubscribeLastMessagesResponseError_NULL RpcChatSubscribeLastMessagesResponseErrorCode = 0 + RpcChatSubscribeLastMessagesResponseError_UNKNOWN_ERROR RpcChatSubscribeLastMessagesResponseErrorCode = 1 + RpcChatSubscribeLastMessagesResponseError_BAD_INPUT RpcChatSubscribeLastMessagesResponseErrorCode = 2 +) + +var RpcChatSubscribeLastMessagesResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", +} + +var RpcChatSubscribeLastMessagesResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, +} + +func (x RpcChatSubscribeLastMessagesResponseErrorCode) String() string { + return proto.EnumName(RpcChatSubscribeLastMessagesResponseErrorCode_name, int32(x)) +} + +func (RpcChatSubscribeLastMessagesResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 6, 1, 0, 0} +} + +type RpcChatUnsubscribeResponseErrorCode int32 + +const ( + RpcChatUnsubscribeResponseError_NULL RpcChatUnsubscribeResponseErrorCode = 0 + RpcChatUnsubscribeResponseError_UNKNOWN_ERROR RpcChatUnsubscribeResponseErrorCode = 1 + RpcChatUnsubscribeResponseError_BAD_INPUT RpcChatUnsubscribeResponseErrorCode = 2 +) + +var RpcChatUnsubscribeResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", +} + +var RpcChatUnsubscribeResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, +} + +func (x RpcChatUnsubscribeResponseErrorCode) String() string { + return proto.EnumName(RpcChatUnsubscribeResponseErrorCode_name, int32(x)) +} + +func (RpcChatUnsubscribeResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 7, 1, 0, 0} +} + // Rpc is a namespace, that agregates all of the service commands between client and middleware. // Structure: Topic > Subtopic > Subsub... > Action > (Request, Response). // Request – message from a client. @@ -19754,6 +20006,190 @@ func (m *RpcObjectCreateFromUrlResponseError) GetDescription() string { return "" } +type RpcObjectChatAdd struct { +} + +func (m *RpcObjectChatAdd) Reset() { *m = RpcObjectChatAdd{} } +func (m *RpcObjectChatAdd) String() string { return proto.CompactTextString(m) } +func (*RpcObjectChatAdd) ProtoMessage() {} +func (*RpcObjectChatAdd) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 10} +} +func (m *RpcObjectChatAdd) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcObjectChatAdd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcObjectChatAdd.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcObjectChatAdd) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcObjectChatAdd.Merge(m, src) +} +func (m *RpcObjectChatAdd) XXX_Size() int { + return m.Size() +} +func (m *RpcObjectChatAdd) XXX_DiscardUnknown() { + xxx_messageInfo_RpcObjectChatAdd.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcObjectChatAdd proto.InternalMessageInfo + +type RpcObjectChatAddRequest struct { + ObjectId string `protobuf:"bytes,1,opt,name=objectId,proto3" json:"objectId,omitempty"` +} + +func (m *RpcObjectChatAddRequest) Reset() { *m = RpcObjectChatAddRequest{} } +func (m *RpcObjectChatAddRequest) String() string { return proto.CompactTextString(m) } +func (*RpcObjectChatAddRequest) ProtoMessage() {} +func (*RpcObjectChatAddRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 10, 0} +} +func (m *RpcObjectChatAddRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcObjectChatAddRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcObjectChatAddRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcObjectChatAddRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcObjectChatAddRequest.Merge(m, src) +} +func (m *RpcObjectChatAddRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcObjectChatAddRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcObjectChatAddRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcObjectChatAddRequest proto.InternalMessageInfo + +func (m *RpcObjectChatAddRequest) GetObjectId() string { + if m != nil { + return m.ObjectId + } + return "" +} + +type RpcObjectChatAddResponse struct { + Error *RpcObjectChatAddResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + ChatId string `protobuf:"bytes,2,opt,name=chatId,proto3" json:"chatId,omitempty"` +} + +func (m *RpcObjectChatAddResponse) Reset() { *m = RpcObjectChatAddResponse{} } +func (m *RpcObjectChatAddResponse) String() string { return proto.CompactTextString(m) } +func (*RpcObjectChatAddResponse) ProtoMessage() {} +func (*RpcObjectChatAddResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 10, 1} +} +func (m *RpcObjectChatAddResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcObjectChatAddResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcObjectChatAddResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcObjectChatAddResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcObjectChatAddResponse.Merge(m, src) +} +func (m *RpcObjectChatAddResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcObjectChatAddResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcObjectChatAddResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcObjectChatAddResponse proto.InternalMessageInfo + +func (m *RpcObjectChatAddResponse) GetError() *RpcObjectChatAddResponseError { + if m != nil { + return m.Error + } + return nil +} + +func (m *RpcObjectChatAddResponse) GetChatId() string { + if m != nil { + return m.ChatId + } + return "" +} + +type RpcObjectChatAddResponseError struct { + Code RpcObjectChatAddResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcObjectChatAddResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcObjectChatAddResponseError) Reset() { *m = RpcObjectChatAddResponseError{} } +func (m *RpcObjectChatAddResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcObjectChatAddResponseError) ProtoMessage() {} +func (*RpcObjectChatAddResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 10, 1, 0} +} +func (m *RpcObjectChatAddResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcObjectChatAddResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcObjectChatAddResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcObjectChatAddResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcObjectChatAddResponseError.Merge(m, src) +} +func (m *RpcObjectChatAddResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcObjectChatAddResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcObjectChatAddResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcObjectChatAddResponseError proto.InternalMessageInfo + +func (m *RpcObjectChatAddResponseError) GetCode() RpcObjectChatAddResponseErrorCode { + if m != nil { + return m.Code + } + return RpcObjectChatAddResponseError_NULL +} + +func (m *RpcObjectChatAddResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + type RpcObjectBookmarkFetch struct { } @@ -19761,7 +20197,7 @@ func (m *RpcObjectBookmarkFetch) Reset() { *m = RpcObjectBookmarkFetch{} func (m *RpcObjectBookmarkFetch) String() string { return proto.CompactTextString(m) } func (*RpcObjectBookmarkFetch) ProtoMessage() {} func (*RpcObjectBookmarkFetch) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 10} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 11} } func (m *RpcObjectBookmarkFetch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19799,7 +20235,7 @@ func (m *RpcObjectBookmarkFetchRequest) Reset() { *m = RpcObjectBookmark func (m *RpcObjectBookmarkFetchRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectBookmarkFetchRequest) ProtoMessage() {} func (*RpcObjectBookmarkFetchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 10, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 11, 0} } func (m *RpcObjectBookmarkFetchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19850,7 +20286,7 @@ func (m *RpcObjectBookmarkFetchResponse) Reset() { *m = RpcObjectBookmar func (m *RpcObjectBookmarkFetchResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectBookmarkFetchResponse) ProtoMessage() {} func (*RpcObjectBookmarkFetchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 10, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 11, 1} } func (m *RpcObjectBookmarkFetchResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19895,7 +20331,7 @@ func (m *RpcObjectBookmarkFetchResponseError) Reset() { *m = RpcObjectBo func (m *RpcObjectBookmarkFetchResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectBookmarkFetchResponseError) ProtoMessage() {} func (*RpcObjectBookmarkFetchResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 10, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 11, 1, 0} } func (m *RpcObjectBookmarkFetchResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19945,7 +20381,7 @@ func (m *RpcObjectToBookmark) Reset() { *m = RpcObjectToBookmark{} } func (m *RpcObjectToBookmark) String() string { return proto.CompactTextString(m) } func (*RpcObjectToBookmark) ProtoMessage() {} func (*RpcObjectToBookmark) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 11} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 12} } func (m *RpcObjectToBookmark) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19983,7 +20419,7 @@ func (m *RpcObjectToBookmarkRequest) Reset() { *m = RpcObjectToBookmarkR func (m *RpcObjectToBookmarkRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectToBookmarkRequest) ProtoMessage() {} func (*RpcObjectToBookmarkRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 11, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 12, 0} } func (m *RpcObjectToBookmarkRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20035,7 +20471,7 @@ func (m *RpcObjectToBookmarkResponse) Reset() { *m = RpcObjectToBookmark func (m *RpcObjectToBookmarkResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectToBookmarkResponse) ProtoMessage() {} func (*RpcObjectToBookmarkResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 11, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 12, 1} } func (m *RpcObjectToBookmarkResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20087,7 +20523,7 @@ func (m *RpcObjectToBookmarkResponseError) Reset() { *m = RpcObjectToBoo func (m *RpcObjectToBookmarkResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectToBookmarkResponseError) ProtoMessage() {} func (*RpcObjectToBookmarkResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 11, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 12, 1, 0} } func (m *RpcObjectToBookmarkResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20137,7 +20573,7 @@ func (m *RpcObjectDuplicate) Reset() { *m = RpcObjectDuplicate{} } func (m *RpcObjectDuplicate) String() string { return proto.CompactTextString(m) } func (*RpcObjectDuplicate) ProtoMessage() {} func (*RpcObjectDuplicate) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 12} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 13} } func (m *RpcObjectDuplicate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20174,7 +20610,7 @@ func (m *RpcObjectDuplicateRequest) Reset() { *m = RpcObjectDuplicateReq func (m *RpcObjectDuplicateRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectDuplicateRequest) ProtoMessage() {} func (*RpcObjectDuplicateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 12, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 13, 0} } func (m *RpcObjectDuplicateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20220,7 +20656,7 @@ func (m *RpcObjectDuplicateResponse) Reset() { *m = RpcObjectDuplicateRe func (m *RpcObjectDuplicateResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectDuplicateResponse) ProtoMessage() {} func (*RpcObjectDuplicateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 12, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 13, 1} } func (m *RpcObjectDuplicateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20272,7 +20708,7 @@ func (m *RpcObjectDuplicateResponseError) Reset() { *m = RpcObjectDuplic func (m *RpcObjectDuplicateResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectDuplicateResponseError) ProtoMessage() {} func (*RpcObjectDuplicateResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 12, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 13, 1, 0} } func (m *RpcObjectDuplicateResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20322,7 +20758,7 @@ func (m *RpcObjectOpenBreadcrumbs) Reset() { *m = RpcObjectOpenBreadcrum func (m *RpcObjectOpenBreadcrumbs) String() string { return proto.CompactTextString(m) } func (*RpcObjectOpenBreadcrumbs) ProtoMessage() {} func (*RpcObjectOpenBreadcrumbs) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 13} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 14} } func (m *RpcObjectOpenBreadcrumbs) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20360,7 +20796,7 @@ func (m *RpcObjectOpenBreadcrumbsRequest) Reset() { *m = RpcObjectOpenBr func (m *RpcObjectOpenBreadcrumbsRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectOpenBreadcrumbsRequest) ProtoMessage() {} func (*RpcObjectOpenBreadcrumbsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 13, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 14, 0} } func (m *RpcObjectOpenBreadcrumbsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20414,7 +20850,7 @@ func (m *RpcObjectOpenBreadcrumbsResponse) Reset() { *m = RpcObjectOpenB func (m *RpcObjectOpenBreadcrumbsResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectOpenBreadcrumbsResponse) ProtoMessage() {} func (*RpcObjectOpenBreadcrumbsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 13, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 14, 1} } func (m *RpcObjectOpenBreadcrumbsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20480,7 +20916,7 @@ func (m *RpcObjectOpenBreadcrumbsResponseError) Reset() { *m = RpcObject func (m *RpcObjectOpenBreadcrumbsResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectOpenBreadcrumbsResponseError) ProtoMessage() {} func (*RpcObjectOpenBreadcrumbsResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 13, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 14, 1, 0} } func (m *RpcObjectOpenBreadcrumbsResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20530,7 +20966,7 @@ func (m *RpcObjectSetBreadcrumbs) Reset() { *m = RpcObjectSetBreadcrumbs func (m *RpcObjectSetBreadcrumbs) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetBreadcrumbs) ProtoMessage() {} func (*RpcObjectSetBreadcrumbs) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 14} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 15} } func (m *RpcObjectSetBreadcrumbs) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20568,7 +21004,7 @@ func (m *RpcObjectSetBreadcrumbsRequest) Reset() { *m = RpcObjectSetBrea func (m *RpcObjectSetBreadcrumbsRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetBreadcrumbsRequest) ProtoMessage() {} func (*RpcObjectSetBreadcrumbsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 14, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 15, 0} } func (m *RpcObjectSetBreadcrumbsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20620,7 +21056,7 @@ func (m *RpcObjectSetBreadcrumbsResponse) Reset() { *m = RpcObjectSetBre func (m *RpcObjectSetBreadcrumbsResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetBreadcrumbsResponse) ProtoMessage() {} func (*RpcObjectSetBreadcrumbsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 14, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 15, 1} } func (m *RpcObjectSetBreadcrumbsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20672,7 +21108,7 @@ func (m *RpcObjectSetBreadcrumbsResponseError) Reset() { *m = RpcObjectS func (m *RpcObjectSetBreadcrumbsResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetBreadcrumbsResponseError) ProtoMessage() {} func (*RpcObjectSetBreadcrumbsResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 14, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 15, 1, 0} } func (m *RpcObjectSetBreadcrumbsResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20722,7 +21158,7 @@ func (m *RpcObjectShareByLink) Reset() { *m = RpcObjectShareByLink{} } func (m *RpcObjectShareByLink) String() string { return proto.CompactTextString(m) } func (*RpcObjectShareByLink) ProtoMessage() {} func (*RpcObjectShareByLink) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 15} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 16} } func (m *RpcObjectShareByLink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20759,7 +21195,7 @@ func (m *RpcObjectShareByLinkRequest) Reset() { *m = RpcObjectShareByLin func (m *RpcObjectShareByLinkRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectShareByLinkRequest) ProtoMessage() {} func (*RpcObjectShareByLinkRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 15, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 16, 0} } func (m *RpcObjectShareByLinkRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20804,7 +21240,7 @@ func (m *RpcObjectShareByLinkResponse) Reset() { *m = RpcObjectShareByLi func (m *RpcObjectShareByLinkResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectShareByLinkResponse) ProtoMessage() {} func (*RpcObjectShareByLinkResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 15, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 16, 1} } func (m *RpcObjectShareByLinkResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20856,7 +21292,7 @@ func (m *RpcObjectShareByLinkResponseError) Reset() { *m = RpcObjectShar func (m *RpcObjectShareByLinkResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectShareByLinkResponseError) ProtoMessage() {} func (*RpcObjectShareByLinkResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 15, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 16, 1, 0} } func (m *RpcObjectShareByLinkResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20907,7 +21343,7 @@ func (m *RpcObjectSearch) Reset() { *m = RpcObjectSearch{} } func (m *RpcObjectSearch) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearch) ProtoMessage() {} func (*RpcObjectSearch) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 16} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 17} } func (m *RpcObjectSearch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -20952,7 +21388,7 @@ func (m *RpcObjectSearchRequest) Reset() { *m = RpcObjectSearchRequest{} func (m *RpcObjectSearchRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchRequest) ProtoMessage() {} func (*RpcObjectSearchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 16, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 17, 0} } func (m *RpcObjectSearchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21039,7 +21475,7 @@ func (m *RpcObjectSearchResponse) Reset() { *m = RpcObjectSearchResponse func (m *RpcObjectSearchResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchResponse) ProtoMessage() {} func (*RpcObjectSearchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 16, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 17, 1} } func (m *RpcObjectSearchResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21091,7 +21527,7 @@ func (m *RpcObjectSearchResponseError) Reset() { *m = RpcObjectSearchRes func (m *RpcObjectSearchResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchResponseError) ProtoMessage() {} func (*RpcObjectSearchResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 16, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 17, 1, 0} } func (m *RpcObjectSearchResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21141,7 +21577,7 @@ func (m *RpcObjectSearchWithMeta) Reset() { *m = RpcObjectSearchWithMeta func (m *RpcObjectSearchWithMeta) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchWithMeta) ProtoMessage() {} func (*RpcObjectSearchWithMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 17} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 18} } func (m *RpcObjectSearchWithMeta) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21189,7 +21625,7 @@ func (m *RpcObjectSearchWithMetaRequest) Reset() { *m = RpcObjectSearchW func (m *RpcObjectSearchWithMetaRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchWithMetaRequest) ProtoMessage() {} func (*RpcObjectSearchWithMetaRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 17, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 18, 0} } func (m *RpcObjectSearchWithMetaRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21297,7 +21733,7 @@ func (m *RpcObjectSearchWithMetaResponse) Reset() { *m = RpcObjectSearch func (m *RpcObjectSearchWithMetaResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchWithMetaResponse) ProtoMessage() {} func (*RpcObjectSearchWithMetaResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 17, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 18, 1} } func (m *RpcObjectSearchWithMetaResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21349,7 +21785,7 @@ func (m *RpcObjectSearchWithMetaResponseError) Reset() { *m = RpcObjectS func (m *RpcObjectSearchWithMetaResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchWithMetaResponseError) ProtoMessage() {} func (*RpcObjectSearchWithMetaResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 17, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 18, 1, 0} } func (m *RpcObjectSearchWithMetaResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21399,7 +21835,7 @@ func (m *RpcObjectGraph) Reset() { *m = RpcObjectGraph{} } func (m *RpcObjectGraph) String() string { return proto.CompactTextString(m) } func (*RpcObjectGraph) ProtoMessage() {} func (*RpcObjectGraph) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 18} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 19} } func (m *RpcObjectGraph) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21443,7 +21879,7 @@ func (m *RpcObjectGraphRequest) Reset() { *m = RpcObjectGraphRequest{} } func (m *RpcObjectGraphRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectGraphRequest) ProtoMessage() {} func (*RpcObjectGraphRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 18, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 19, 0} } func (m *RpcObjectGraphRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21536,7 +21972,7 @@ func (m *RpcObjectGraphEdge) Reset() { *m = RpcObjectGraphEdge{} } func (m *RpcObjectGraphEdge) String() string { return proto.CompactTextString(m) } func (*RpcObjectGraphEdge) ProtoMessage() {} func (*RpcObjectGraphEdge) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 18, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 19, 1} } func (m *RpcObjectGraphEdge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21631,7 +22067,7 @@ func (m *RpcObjectGraphResponse) Reset() { *m = RpcObjectGraphResponse{} func (m *RpcObjectGraphResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectGraphResponse) ProtoMessage() {} func (*RpcObjectGraphResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 18, 2} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 19, 2} } func (m *RpcObjectGraphResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21690,7 +22126,7 @@ func (m *RpcObjectGraphResponseError) Reset() { *m = RpcObjectGraphRespo func (m *RpcObjectGraphResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectGraphResponseError) ProtoMessage() {} func (*RpcObjectGraphResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 18, 2, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 19, 2, 0} } func (m *RpcObjectGraphResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21740,7 +22176,7 @@ func (m *RpcObjectSearchSubscribe) Reset() { *m = RpcObjectSearchSubscri func (m *RpcObjectSearchSubscribe) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchSubscribe) ProtoMessage() {} func (*RpcObjectSearchSubscribe) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 19} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 20} } func (m *RpcObjectSearchSubscribe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21799,7 +22235,7 @@ func (m *RpcObjectSearchSubscribeRequest) Reset() { *m = RpcObjectSearch func (m *RpcObjectSearchSubscribeRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchSubscribeRequest) ProtoMessage() {} func (*RpcObjectSearchSubscribeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 19, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 20, 0} } func (m *RpcObjectSearchSubscribeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21924,7 +22360,7 @@ func (m *RpcObjectSearchSubscribeResponse) Reset() { *m = RpcObjectSearc func (m *RpcObjectSearchSubscribeResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchSubscribeResponse) ProtoMessage() {} func (*RpcObjectSearchSubscribeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 19, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 20, 1} } func (m *RpcObjectSearchSubscribeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -21997,7 +22433,7 @@ func (m *RpcObjectSearchSubscribeResponseError) Reset() { *m = RpcObject func (m *RpcObjectSearchSubscribeResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchSubscribeResponseError) ProtoMessage() {} func (*RpcObjectSearchSubscribeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 19, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 20, 1, 0} } func (m *RpcObjectSearchSubscribeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22047,7 +22483,7 @@ func (m *RpcObjectGroupsSubscribe) Reset() { *m = RpcObjectGroupsSubscri func (m *RpcObjectGroupsSubscribe) String() string { return proto.CompactTextString(m) } func (*RpcObjectGroupsSubscribe) ProtoMessage() {} func (*RpcObjectGroupsSubscribe) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 20} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 21} } func (m *RpcObjectGroupsSubscribe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22089,7 +22525,7 @@ func (m *RpcObjectGroupsSubscribeRequest) Reset() { *m = RpcObjectGroups func (m *RpcObjectGroupsSubscribeRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectGroupsSubscribeRequest) ProtoMessage() {} func (*RpcObjectGroupsSubscribeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 20, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 21, 0} } func (m *RpcObjectGroupsSubscribeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22170,7 +22606,7 @@ func (m *RpcObjectGroupsSubscribeResponse) Reset() { *m = RpcObjectGroup func (m *RpcObjectGroupsSubscribeResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectGroupsSubscribeResponse) ProtoMessage() {} func (*RpcObjectGroupsSubscribeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 20, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 21, 1} } func (m *RpcObjectGroupsSubscribeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22229,7 +22665,7 @@ func (m *RpcObjectGroupsSubscribeResponseError) Reset() { *m = RpcObject func (m *RpcObjectGroupsSubscribeResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectGroupsSubscribeResponseError) ProtoMessage() {} func (*RpcObjectGroupsSubscribeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 20, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 21, 1, 0} } func (m *RpcObjectGroupsSubscribeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22279,7 +22715,7 @@ func (m *RpcObjectSubscribeIds) Reset() { *m = RpcObjectSubscribeIds{} } func (m *RpcObjectSubscribeIds) String() string { return proto.CompactTextString(m) } func (*RpcObjectSubscribeIds) ProtoMessage() {} func (*RpcObjectSubscribeIds) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 21} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 22} } func (m *RpcObjectSubscribeIds) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22327,7 +22763,7 @@ func (m *RpcObjectSubscribeIdsRequest) Reset() { *m = RpcObjectSubscribe func (m *RpcObjectSubscribeIdsRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectSubscribeIdsRequest) ProtoMessage() {} func (*RpcObjectSubscribeIdsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 21, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 22, 0} } func (m *RpcObjectSubscribeIdsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22402,7 +22838,7 @@ func (m *RpcObjectSubscribeIdsResponse) Reset() { *m = RpcObjectSubscrib func (m *RpcObjectSubscribeIdsResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectSubscribeIdsResponse) ProtoMessage() {} func (*RpcObjectSubscribeIdsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 21, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 22, 1} } func (m *RpcObjectSubscribeIdsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22468,7 +22904,7 @@ func (m *RpcObjectSubscribeIdsResponseError) Reset() { *m = RpcObjectSub func (m *RpcObjectSubscribeIdsResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectSubscribeIdsResponseError) ProtoMessage() {} func (*RpcObjectSubscribeIdsResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 21, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 22, 1, 0} } func (m *RpcObjectSubscribeIdsResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22518,7 +22954,7 @@ func (m *RpcObjectSearchUnsubscribe) Reset() { *m = RpcObjectSearchUnsub func (m *RpcObjectSearchUnsubscribe) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchUnsubscribe) ProtoMessage() {} func (*RpcObjectSearchUnsubscribe) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 22} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 23} } func (m *RpcObjectSearchUnsubscribe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22555,7 +22991,7 @@ func (m *RpcObjectSearchUnsubscribeRequest) Reset() { *m = RpcObjectSear func (m *RpcObjectSearchUnsubscribeRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchUnsubscribeRequest) ProtoMessage() {} func (*RpcObjectSearchUnsubscribeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 22, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 23, 0} } func (m *RpcObjectSearchUnsubscribeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22599,7 +23035,7 @@ func (m *RpcObjectSearchUnsubscribeResponse) Reset() { *m = RpcObjectSea func (m *RpcObjectSearchUnsubscribeResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchUnsubscribeResponse) ProtoMessage() {} func (*RpcObjectSearchUnsubscribeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 22, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 23, 1} } func (m *RpcObjectSearchUnsubscribeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22646,7 +23082,7 @@ func (m *RpcObjectSearchUnsubscribeResponseError) Reset() { func (m *RpcObjectSearchUnsubscribeResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectSearchUnsubscribeResponseError) ProtoMessage() {} func (*RpcObjectSearchUnsubscribeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 22, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 23, 1, 0} } func (m *RpcObjectSearchUnsubscribeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22696,7 +23132,7 @@ func (m *RpcObjectSetLayout) Reset() { *m = RpcObjectSetLayout{} } func (m *RpcObjectSetLayout) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetLayout) ProtoMessage() {} func (*RpcObjectSetLayout) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 23} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 24} } func (m *RpcObjectSetLayout) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22734,7 +23170,7 @@ func (m *RpcObjectSetLayoutRequest) Reset() { *m = RpcObjectSetLayoutReq func (m *RpcObjectSetLayoutRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetLayoutRequest) ProtoMessage() {} func (*RpcObjectSetLayoutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 23, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 24, 0} } func (m *RpcObjectSetLayoutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22786,7 +23222,7 @@ func (m *RpcObjectSetLayoutResponse) Reset() { *m = RpcObjectSetLayoutRe func (m *RpcObjectSetLayoutResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetLayoutResponse) ProtoMessage() {} func (*RpcObjectSetLayoutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 23, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 24, 1} } func (m *RpcObjectSetLayoutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22838,7 +23274,7 @@ func (m *RpcObjectSetLayoutResponseError) Reset() { *m = RpcObjectSetLay func (m *RpcObjectSetLayoutResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetLayoutResponseError) ProtoMessage() {} func (*RpcObjectSetLayoutResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 23, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 24, 1, 0} } func (m *RpcObjectSetLayoutResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22888,7 +23324,7 @@ func (m *RpcObjectSetIsFavorite) Reset() { *m = RpcObjectSetIsFavorite{} func (m *RpcObjectSetIsFavorite) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetIsFavorite) ProtoMessage() {} func (*RpcObjectSetIsFavorite) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 24} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 25} } func (m *RpcObjectSetIsFavorite) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22926,7 +23362,7 @@ func (m *RpcObjectSetIsFavoriteRequest) Reset() { *m = RpcObjectSetIsFav func (m *RpcObjectSetIsFavoriteRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetIsFavoriteRequest) ProtoMessage() {} func (*RpcObjectSetIsFavoriteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 24, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 25, 0} } func (m *RpcObjectSetIsFavoriteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22978,7 +23414,7 @@ func (m *RpcObjectSetIsFavoriteResponse) Reset() { *m = RpcObjectSetIsFa func (m *RpcObjectSetIsFavoriteResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetIsFavoriteResponse) ProtoMessage() {} func (*RpcObjectSetIsFavoriteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 24, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 25, 1} } func (m *RpcObjectSetIsFavoriteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23030,7 +23466,7 @@ func (m *RpcObjectSetIsFavoriteResponseError) Reset() { *m = RpcObjectSe func (m *RpcObjectSetIsFavoriteResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetIsFavoriteResponseError) ProtoMessage() {} func (*RpcObjectSetIsFavoriteResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 24, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 25, 1, 0} } func (m *RpcObjectSetIsFavoriteResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23080,7 +23516,7 @@ func (m *RpcObjectSetIsArchived) Reset() { *m = RpcObjectSetIsArchived{} func (m *RpcObjectSetIsArchived) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetIsArchived) ProtoMessage() {} func (*RpcObjectSetIsArchived) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 25} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 26} } func (m *RpcObjectSetIsArchived) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23118,7 +23554,7 @@ func (m *RpcObjectSetIsArchivedRequest) Reset() { *m = RpcObjectSetIsArc func (m *RpcObjectSetIsArchivedRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetIsArchivedRequest) ProtoMessage() {} func (*RpcObjectSetIsArchivedRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 25, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 26, 0} } func (m *RpcObjectSetIsArchivedRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23169,7 +23605,7 @@ func (m *RpcObjectSetIsArchivedResponse) Reset() { *m = RpcObjectSetIsAr func (m *RpcObjectSetIsArchivedResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetIsArchivedResponse) ProtoMessage() {} func (*RpcObjectSetIsArchivedResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 25, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 26, 1} } func (m *RpcObjectSetIsArchivedResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23214,7 +23650,7 @@ func (m *RpcObjectSetIsArchivedResponseError) Reset() { *m = RpcObjectSe func (m *RpcObjectSetIsArchivedResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetIsArchivedResponseError) ProtoMessage() {} func (*RpcObjectSetIsArchivedResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 25, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 26, 1, 0} } func (m *RpcObjectSetIsArchivedResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23264,7 +23700,7 @@ func (m *RpcObjectSetSource) Reset() { *m = RpcObjectSetSource{} } func (m *RpcObjectSetSource) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetSource) ProtoMessage() {} func (*RpcObjectSetSource) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 26} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 27} } func (m *RpcObjectSetSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23302,7 +23738,7 @@ func (m *RpcObjectSetSourceRequest) Reset() { *m = RpcObjectSetSourceReq func (m *RpcObjectSetSourceRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetSourceRequest) ProtoMessage() {} func (*RpcObjectSetSourceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 26, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 27, 0} } func (m *RpcObjectSetSourceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23354,7 +23790,7 @@ func (m *RpcObjectSetSourceResponse) Reset() { *m = RpcObjectSetSourceRe func (m *RpcObjectSetSourceResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetSourceResponse) ProtoMessage() {} func (*RpcObjectSetSourceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 26, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 27, 1} } func (m *RpcObjectSetSourceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23406,7 +23842,7 @@ func (m *RpcObjectSetSourceResponseError) Reset() { *m = RpcObjectSetSou func (m *RpcObjectSetSourceResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetSourceResponseError) ProtoMessage() {} func (*RpcObjectSetSourceResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 26, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 27, 1, 0} } func (m *RpcObjectSetSourceResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23456,7 +23892,7 @@ func (m *RpcObjectWorkspaceSetDashboard) Reset() { *m = RpcObjectWorkspa func (m *RpcObjectWorkspaceSetDashboard) String() string { return proto.CompactTextString(m) } func (*RpcObjectWorkspaceSetDashboard) ProtoMessage() {} func (*RpcObjectWorkspaceSetDashboard) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 27} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 28} } func (m *RpcObjectWorkspaceSetDashboard) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23494,7 +23930,7 @@ func (m *RpcObjectWorkspaceSetDashboardRequest) Reset() { *m = RpcObject func (m *RpcObjectWorkspaceSetDashboardRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectWorkspaceSetDashboardRequest) ProtoMessage() {} func (*RpcObjectWorkspaceSetDashboardRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 27, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 28, 0} } func (m *RpcObjectWorkspaceSetDashboardRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23549,7 +23985,7 @@ func (m *RpcObjectWorkspaceSetDashboardResponse) Reset() { func (m *RpcObjectWorkspaceSetDashboardResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectWorkspaceSetDashboardResponse) ProtoMessage() {} func (*RpcObjectWorkspaceSetDashboardResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 27, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 28, 1} } func (m *RpcObjectWorkspaceSetDashboardResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23612,7 +24048,7 @@ func (m *RpcObjectWorkspaceSetDashboardResponseError) String() string { } func (*RpcObjectWorkspaceSetDashboardResponseError) ProtoMessage() {} func (*RpcObjectWorkspaceSetDashboardResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 27, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 28, 1, 0} } func (m *RpcObjectWorkspaceSetDashboardResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23662,7 +24098,7 @@ func (m *RpcObjectSetObjectType) Reset() { *m = RpcObjectSetObjectType{} func (m *RpcObjectSetObjectType) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetObjectType) ProtoMessage() {} func (*RpcObjectSetObjectType) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 28} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 29} } func (m *RpcObjectSetObjectType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23700,7 +24136,7 @@ func (m *RpcObjectSetObjectTypeRequest) Reset() { *m = RpcObjectSetObjec func (m *RpcObjectSetObjectTypeRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetObjectTypeRequest) ProtoMessage() {} func (*RpcObjectSetObjectTypeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 28, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 29, 0} } func (m *RpcObjectSetObjectTypeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23752,7 +24188,7 @@ func (m *RpcObjectSetObjectTypeResponse) Reset() { *m = RpcObjectSetObje func (m *RpcObjectSetObjectTypeResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetObjectTypeResponse) ProtoMessage() {} func (*RpcObjectSetObjectTypeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 28, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 29, 1} } func (m *RpcObjectSetObjectTypeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23804,7 +24240,7 @@ func (m *RpcObjectSetObjectTypeResponseError) Reset() { *m = RpcObjectSe func (m *RpcObjectSetObjectTypeResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetObjectTypeResponseError) ProtoMessage() {} func (*RpcObjectSetObjectTypeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 28, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 29, 1, 0} } func (m *RpcObjectSetObjectTypeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23854,7 +24290,7 @@ func (m *RpcObjectSetInternalFlags) Reset() { *m = RpcObjectSetInternalF func (m *RpcObjectSetInternalFlags) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetInternalFlags) ProtoMessage() {} func (*RpcObjectSetInternalFlags) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 29} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 30} } func (m *RpcObjectSetInternalFlags) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23892,7 +24328,7 @@ func (m *RpcObjectSetInternalFlagsRequest) Reset() { *m = RpcObjectSetIn func (m *RpcObjectSetInternalFlagsRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetInternalFlagsRequest) ProtoMessage() {} func (*RpcObjectSetInternalFlagsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 29, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 30, 0} } func (m *RpcObjectSetInternalFlagsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23944,7 +24380,7 @@ func (m *RpcObjectSetInternalFlagsResponse) Reset() { *m = RpcObjectSetI func (m *RpcObjectSetInternalFlagsResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetInternalFlagsResponse) ProtoMessage() {} func (*RpcObjectSetInternalFlagsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 29, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 30, 1} } func (m *RpcObjectSetInternalFlagsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -23998,7 +24434,7 @@ func (m *RpcObjectSetInternalFlagsResponseError) Reset() { func (m *RpcObjectSetInternalFlagsResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetInternalFlagsResponseError) ProtoMessage() {} func (*RpcObjectSetInternalFlagsResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 29, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 30, 1, 0} } func (m *RpcObjectSetInternalFlagsResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24048,7 +24484,7 @@ func (m *RpcObjectSetDetails) Reset() { *m = RpcObjectSetDetails{} } func (m *RpcObjectSetDetails) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetDetails) ProtoMessage() {} func (*RpcObjectSetDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 30} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 31} } func (m *RpcObjectSetDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24086,7 +24522,7 @@ func (m *RpcObjectSetDetailsRequest) Reset() { *m = RpcObjectSetDetailsR func (m *RpcObjectSetDetailsRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetDetailsRequest) ProtoMessage() {} func (*RpcObjectSetDetailsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 30, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 31, 0} } func (m *RpcObjectSetDetailsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24138,7 +24574,7 @@ func (m *RpcObjectSetDetailsResponse) Reset() { *m = RpcObjectSetDetails func (m *RpcObjectSetDetailsResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetDetailsResponse) ProtoMessage() {} func (*RpcObjectSetDetailsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 30, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 31, 1} } func (m *RpcObjectSetDetailsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24190,7 +24626,7 @@ func (m *RpcObjectSetDetailsResponseError) Reset() { *m = RpcObjectSetDe func (m *RpcObjectSetDetailsResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectSetDetailsResponseError) ProtoMessage() {} func (*RpcObjectSetDetailsResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 30, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 31, 1, 0} } func (m *RpcObjectSetDetailsResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24240,7 +24676,7 @@ func (m *RpcObjectToSet) Reset() { *m = RpcObjectToSet{} } func (m *RpcObjectToSet) String() string { return proto.CompactTextString(m) } func (*RpcObjectToSet) ProtoMessage() {} func (*RpcObjectToSet) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 31} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 32} } func (m *RpcObjectToSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24278,7 +24714,7 @@ func (m *RpcObjectToSetRequest) Reset() { *m = RpcObjectToSetRequest{} } func (m *RpcObjectToSetRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectToSetRequest) ProtoMessage() {} func (*RpcObjectToSetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 31, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 32, 0} } func (m *RpcObjectToSetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24329,7 +24765,7 @@ func (m *RpcObjectToSetResponse) Reset() { *m = RpcObjectToSetResponse{} func (m *RpcObjectToSetResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectToSetResponse) ProtoMessage() {} func (*RpcObjectToSetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 31, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 32, 1} } func (m *RpcObjectToSetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24374,7 +24810,7 @@ func (m *RpcObjectToSetResponseError) Reset() { *m = RpcObjectToSetRespo func (m *RpcObjectToSetResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectToSetResponseError) ProtoMessage() {} func (*RpcObjectToSetResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 31, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 32, 1, 0} } func (m *RpcObjectToSetResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24424,7 +24860,7 @@ func (m *RpcObjectToCollection) Reset() { *m = RpcObjectToCollection{} } func (m *RpcObjectToCollection) String() string { return proto.CompactTextString(m) } func (*RpcObjectToCollection) ProtoMessage() {} func (*RpcObjectToCollection) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 32} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 33} } func (m *RpcObjectToCollection) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24461,7 +24897,7 @@ func (m *RpcObjectToCollectionRequest) Reset() { *m = RpcObjectToCollect func (m *RpcObjectToCollectionRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectToCollectionRequest) ProtoMessage() {} func (*RpcObjectToCollectionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 32, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 33, 0} } func (m *RpcObjectToCollectionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24505,7 +24941,7 @@ func (m *RpcObjectToCollectionResponse) Reset() { *m = RpcObjectToCollec func (m *RpcObjectToCollectionResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectToCollectionResponse) ProtoMessage() {} func (*RpcObjectToCollectionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 32, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 33, 1} } func (m *RpcObjectToCollectionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24550,7 +24986,7 @@ func (m *RpcObjectToCollectionResponseError) Reset() { *m = RpcObjectToC func (m *RpcObjectToCollectionResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectToCollectionResponseError) ProtoMessage() {} func (*RpcObjectToCollectionResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 32, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 33, 1, 0} } func (m *RpcObjectToCollectionResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24603,7 +25039,7 @@ func (m *RpcObjectUndoRedoCounter) Reset() { *m = RpcObjectUndoRedoCount func (m *RpcObjectUndoRedoCounter) String() string { return proto.CompactTextString(m) } func (*RpcObjectUndoRedoCounter) ProtoMessage() {} func (*RpcObjectUndoRedoCounter) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 33} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 34} } func (m *RpcObjectUndoRedoCounter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24653,7 +25089,7 @@ func (m *RpcObjectUndo) Reset() { *m = RpcObjectUndo{} } func (m *RpcObjectUndo) String() string { return proto.CompactTextString(m) } func (*RpcObjectUndo) ProtoMessage() {} func (*RpcObjectUndo) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 34} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 35} } func (m *RpcObjectUndo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24690,7 +25126,7 @@ func (m *RpcObjectUndoRequest) Reset() { *m = RpcObjectUndoRequest{} } func (m *RpcObjectUndoRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectUndoRequest) ProtoMessage() {} func (*RpcObjectUndoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 34, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 35, 0} } func (m *RpcObjectUndoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24738,7 +25174,7 @@ func (m *RpcObjectUndoResponse) Reset() { *m = RpcObjectUndoResponse{} } func (m *RpcObjectUndoResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectUndoResponse) ProtoMessage() {} func (*RpcObjectUndoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 34, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 35, 1} } func (m *RpcObjectUndoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24811,7 +25247,7 @@ func (m *RpcObjectUndoResponseError) Reset() { *m = RpcObjectUndoRespons func (m *RpcObjectUndoResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectUndoResponseError) ProtoMessage() {} func (*RpcObjectUndoResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 34, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 35, 1, 0} } func (m *RpcObjectUndoResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24861,7 +25297,7 @@ func (m *RpcObjectRedo) Reset() { *m = RpcObjectRedo{} } func (m *RpcObjectRedo) String() string { return proto.CompactTextString(m) } func (*RpcObjectRedo) ProtoMessage() {} func (*RpcObjectRedo) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 35} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 36} } func (m *RpcObjectRedo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24898,7 +25334,7 @@ func (m *RpcObjectRedoRequest) Reset() { *m = RpcObjectRedoRequest{} } func (m *RpcObjectRedoRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectRedoRequest) ProtoMessage() {} func (*RpcObjectRedoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 35, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 36, 0} } func (m *RpcObjectRedoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -24946,7 +25382,7 @@ func (m *RpcObjectRedoResponse) Reset() { *m = RpcObjectRedoResponse{} } func (m *RpcObjectRedoResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectRedoResponse) ProtoMessage() {} func (*RpcObjectRedoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 35, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 36, 1} } func (m *RpcObjectRedoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25019,7 +25455,7 @@ func (m *RpcObjectRedoResponseError) Reset() { *m = RpcObjectRedoRespons func (m *RpcObjectRedoResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectRedoResponseError) ProtoMessage() {} func (*RpcObjectRedoResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 35, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 36, 1, 0} } func (m *RpcObjectRedoResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25069,7 +25505,7 @@ func (m *RpcObjectListDuplicate) Reset() { *m = RpcObjectListDuplicate{} func (m *RpcObjectListDuplicate) String() string { return proto.CompactTextString(m) } func (*RpcObjectListDuplicate) ProtoMessage() {} func (*RpcObjectListDuplicate) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 36} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 37} } func (m *RpcObjectListDuplicate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25106,7 +25542,7 @@ func (m *RpcObjectListDuplicateRequest) Reset() { *m = RpcObjectListDupl func (m *RpcObjectListDuplicateRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectListDuplicateRequest) ProtoMessage() {} func (*RpcObjectListDuplicateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 36, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 37, 0} } func (m *RpcObjectListDuplicateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25151,7 +25587,7 @@ func (m *RpcObjectListDuplicateResponse) Reset() { *m = RpcObjectListDup func (m *RpcObjectListDuplicateResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectListDuplicateResponse) ProtoMessage() {} func (*RpcObjectListDuplicateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 36, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 37, 1} } func (m *RpcObjectListDuplicateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25203,7 +25639,7 @@ func (m *RpcObjectListDuplicateResponseError) Reset() { *m = RpcObjectLi func (m *RpcObjectListDuplicateResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectListDuplicateResponseError) ProtoMessage() {} func (*RpcObjectListDuplicateResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 36, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 37, 1, 0} } func (m *RpcObjectListDuplicateResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25253,7 +25689,7 @@ func (m *RpcObjectListDelete) Reset() { *m = RpcObjectListDelete{} } func (m *RpcObjectListDelete) String() string { return proto.CompactTextString(m) } func (*RpcObjectListDelete) ProtoMessage() {} func (*RpcObjectListDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 37} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 38} } func (m *RpcObjectListDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25291,7 +25727,7 @@ func (m *RpcObjectListDeleteRequest) Reset() { *m = RpcObjectListDeleteR func (m *RpcObjectListDeleteRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectListDeleteRequest) ProtoMessage() {} func (*RpcObjectListDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 37, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 38, 0} } func (m *RpcObjectListDeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25336,7 +25772,7 @@ func (m *RpcObjectListDeleteResponse) Reset() { *m = RpcObjectListDelete func (m *RpcObjectListDeleteResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectListDeleteResponse) ProtoMessage() {} func (*RpcObjectListDeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 37, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 38, 1} } func (m *RpcObjectListDeleteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25388,7 +25824,7 @@ func (m *RpcObjectListDeleteResponseError) Reset() { *m = RpcObjectListD func (m *RpcObjectListDeleteResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectListDeleteResponseError) ProtoMessage() {} func (*RpcObjectListDeleteResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 37, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 38, 1, 0} } func (m *RpcObjectListDeleteResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25438,7 +25874,7 @@ func (m *RpcObjectListSetIsArchived) Reset() { *m = RpcObjectListSetIsAr func (m *RpcObjectListSetIsArchived) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetIsArchived) ProtoMessage() {} func (*RpcObjectListSetIsArchived) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 38} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 39} } func (m *RpcObjectListSetIsArchived) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25476,7 +25912,7 @@ func (m *RpcObjectListSetIsArchivedRequest) Reset() { *m = RpcObjectList func (m *RpcObjectListSetIsArchivedRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetIsArchivedRequest) ProtoMessage() {} func (*RpcObjectListSetIsArchivedRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 38, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 39, 0} } func (m *RpcObjectListSetIsArchivedRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25527,7 +25963,7 @@ func (m *RpcObjectListSetIsArchivedResponse) Reset() { *m = RpcObjectLis func (m *RpcObjectListSetIsArchivedResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetIsArchivedResponse) ProtoMessage() {} func (*RpcObjectListSetIsArchivedResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 38, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 39, 1} } func (m *RpcObjectListSetIsArchivedResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25574,7 +26010,7 @@ func (m *RpcObjectListSetIsArchivedResponseError) Reset() { func (m *RpcObjectListSetIsArchivedResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetIsArchivedResponseError) ProtoMessage() {} func (*RpcObjectListSetIsArchivedResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 38, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 39, 1, 0} } func (m *RpcObjectListSetIsArchivedResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25624,7 +26060,7 @@ func (m *RpcObjectListSetIsFavorite) Reset() { *m = RpcObjectListSetIsFa func (m *RpcObjectListSetIsFavorite) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetIsFavorite) ProtoMessage() {} func (*RpcObjectListSetIsFavorite) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 39} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 40} } func (m *RpcObjectListSetIsFavorite) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25662,7 +26098,7 @@ func (m *RpcObjectListSetIsFavoriteRequest) Reset() { *m = RpcObjectList func (m *RpcObjectListSetIsFavoriteRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetIsFavoriteRequest) ProtoMessage() {} func (*RpcObjectListSetIsFavoriteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 39, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 40, 0} } func (m *RpcObjectListSetIsFavoriteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25713,7 +26149,7 @@ func (m *RpcObjectListSetIsFavoriteResponse) Reset() { *m = RpcObjectLis func (m *RpcObjectListSetIsFavoriteResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetIsFavoriteResponse) ProtoMessage() {} func (*RpcObjectListSetIsFavoriteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 39, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 40, 1} } func (m *RpcObjectListSetIsFavoriteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25760,7 +26196,7 @@ func (m *RpcObjectListSetIsFavoriteResponseError) Reset() { func (m *RpcObjectListSetIsFavoriteResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetIsFavoriteResponseError) ProtoMessage() {} func (*RpcObjectListSetIsFavoriteResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 39, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 40, 1, 0} } func (m *RpcObjectListSetIsFavoriteResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25810,7 +26246,7 @@ func (m *RpcObjectListSetObjectType) Reset() { *m = RpcObjectListSetObje func (m *RpcObjectListSetObjectType) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetObjectType) ProtoMessage() {} func (*RpcObjectListSetObjectType) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 40} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 41} } func (m *RpcObjectListSetObjectType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25848,7 +26284,7 @@ func (m *RpcObjectListSetObjectTypeRequest) Reset() { *m = RpcObjectList func (m *RpcObjectListSetObjectTypeRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetObjectTypeRequest) ProtoMessage() {} func (*RpcObjectListSetObjectTypeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 40, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 41, 0} } func (m *RpcObjectListSetObjectTypeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25900,7 +26336,7 @@ func (m *RpcObjectListSetObjectTypeResponse) Reset() { *m = RpcObjectLis func (m *RpcObjectListSetObjectTypeResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetObjectTypeResponse) ProtoMessage() {} func (*RpcObjectListSetObjectTypeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 40, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 41, 1} } func (m *RpcObjectListSetObjectTypeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -25954,7 +26390,7 @@ func (m *RpcObjectListSetObjectTypeResponseError) Reset() { func (m *RpcObjectListSetObjectTypeResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetObjectTypeResponseError) ProtoMessage() {} func (*RpcObjectListSetObjectTypeResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 40, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 41, 1, 0} } func (m *RpcObjectListSetObjectTypeResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26004,7 +26440,7 @@ func (m *RpcObjectListSetDetails) Reset() { *m = RpcObjectListSetDetails func (m *RpcObjectListSetDetails) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetDetails) ProtoMessage() {} func (*RpcObjectListSetDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 41} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 42} } func (m *RpcObjectListSetDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26042,7 +26478,7 @@ func (m *RpcObjectListSetDetailsRequest) Reset() { *m = RpcObjectListSet func (m *RpcObjectListSetDetailsRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetDetailsRequest) ProtoMessage() {} func (*RpcObjectListSetDetailsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 41, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 42, 0} } func (m *RpcObjectListSetDetailsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26094,7 +26530,7 @@ func (m *RpcObjectListSetDetailsResponse) Reset() { *m = RpcObjectListSe func (m *RpcObjectListSetDetailsResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetDetailsResponse) ProtoMessage() {} func (*RpcObjectListSetDetailsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 41, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 42, 1} } func (m *RpcObjectListSetDetailsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26146,7 +26582,7 @@ func (m *RpcObjectListSetDetailsResponseError) Reset() { *m = RpcObjectL func (m *RpcObjectListSetDetailsResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectListSetDetailsResponseError) ProtoMessage() {} func (*RpcObjectListSetDetailsResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 41, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 42, 1, 0} } func (m *RpcObjectListSetDetailsResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26196,7 +26632,7 @@ func (m *RpcObjectListModifyDetailValues) Reset() { *m = RpcObjectListMo func (m *RpcObjectListModifyDetailValues) String() string { return proto.CompactTextString(m) } func (*RpcObjectListModifyDetailValues) ProtoMessage() {} func (*RpcObjectListModifyDetailValues) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 42} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 43} } func (m *RpcObjectListModifyDetailValues) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26236,7 +26672,7 @@ func (m *RpcObjectListModifyDetailValuesRequest) Reset() { func (m *RpcObjectListModifyDetailValuesRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectListModifyDetailValuesRequest) ProtoMessage() {} func (*RpcObjectListModifyDetailValuesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 42, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 43, 0} } func (m *RpcObjectListModifyDetailValuesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26294,7 +26730,7 @@ func (m *RpcObjectListModifyDetailValuesRequestOperation) String() string { } func (*RpcObjectListModifyDetailValuesRequestOperation) ProtoMessage() {} func (*RpcObjectListModifyDetailValuesRequestOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 42, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 43, 0, 0} } func (m *RpcObjectListModifyDetailValuesRequestOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26361,7 +26797,7 @@ func (m *RpcObjectListModifyDetailValuesResponse) Reset() { func (m *RpcObjectListModifyDetailValuesResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectListModifyDetailValuesResponse) ProtoMessage() {} func (*RpcObjectListModifyDetailValuesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 42, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 43, 1} } func (m *RpcObjectListModifyDetailValuesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26410,7 +26846,7 @@ func (m *RpcObjectListModifyDetailValuesResponseError) String() string { } func (*RpcObjectListModifyDetailValuesResponseError) ProtoMessage() {} func (*RpcObjectListModifyDetailValuesResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 42, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 43, 1, 0} } func (m *RpcObjectListModifyDetailValuesResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26460,7 +26896,7 @@ func (m *RpcObjectApplyTemplate) Reset() { *m = RpcObjectApplyTemplate{} func (m *RpcObjectApplyTemplate) String() string { return proto.CompactTextString(m) } func (*RpcObjectApplyTemplate) ProtoMessage() {} func (*RpcObjectApplyTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 43} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 44} } func (m *RpcObjectApplyTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26499,7 +26935,7 @@ func (m *RpcObjectApplyTemplateRequest) Reset() { *m = RpcObjectApplyTem func (m *RpcObjectApplyTemplateRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectApplyTemplateRequest) ProtoMessage() {} func (*RpcObjectApplyTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 43, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 44, 0} } func (m *RpcObjectApplyTemplateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26550,7 +26986,7 @@ func (m *RpcObjectApplyTemplateResponse) Reset() { *m = RpcObjectApplyTe func (m *RpcObjectApplyTemplateResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectApplyTemplateResponse) ProtoMessage() {} func (*RpcObjectApplyTemplateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 43, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 44, 1} } func (m *RpcObjectApplyTemplateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26595,7 +27031,7 @@ func (m *RpcObjectApplyTemplateResponseError) Reset() { *m = RpcObjectAp func (m *RpcObjectApplyTemplateResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectApplyTemplateResponseError) ProtoMessage() {} func (*RpcObjectApplyTemplateResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 43, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 44, 1, 0} } func (m *RpcObjectApplyTemplateResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26645,7 +27081,7 @@ func (m *RpcObjectListExport) Reset() { *m = RpcObjectListExport{} } func (m *RpcObjectListExport) String() string { return proto.CompactTextString(m) } func (*RpcObjectListExport) ProtoMessage() {} func (*RpcObjectListExport) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 44} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45} } func (m *RpcObjectListExport) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26698,7 +27134,7 @@ func (m *RpcObjectListExportRequest) Reset() { *m = RpcObjectListExportR func (m *RpcObjectListExportRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectListExportRequest) ProtoMessage() {} func (*RpcObjectListExportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 44, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 0} } func (m *RpcObjectListExportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26801,7 +27237,7 @@ func (m *RpcObjectListExportResponse) Reset() { *m = RpcObjectListExport func (m *RpcObjectListExportResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectListExportResponse) ProtoMessage() {} func (*RpcObjectListExportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 44, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 1} } func (m *RpcObjectListExportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26867,7 +27303,7 @@ func (m *RpcObjectListExportResponseError) Reset() { *m = RpcObjectListE func (m *RpcObjectListExportResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectListExportResponseError) ProtoMessage() {} func (*RpcObjectListExportResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 44, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 1, 0} } func (m *RpcObjectListExportResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26917,7 +27353,7 @@ func (m *RpcObjectImport) Reset() { *m = RpcObjectImport{} } func (m *RpcObjectImport) String() string { return proto.CompactTextString(m) } func (*RpcObjectImport) ProtoMessage() {} func (*RpcObjectImport) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46} } func (m *RpcObjectImport) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -26971,7 +27407,7 @@ func (m *RpcObjectImportRequest) Reset() { *m = RpcObjectImportRequest{} func (m *RpcObjectImportRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportRequest) ProtoMessage() {} func (*RpcObjectImportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 0} } func (m *RpcObjectImportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27169,7 +27605,7 @@ func (m *RpcObjectImportRequestNotionParams) Reset() { *m = RpcObjectImp func (m *RpcObjectImportRequestNotionParams) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportRequestNotionParams) ProtoMessage() {} func (*RpcObjectImportRequestNotionParams) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 0, 0} } func (m *RpcObjectImportRequestNotionParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27213,7 +27649,7 @@ func (m *RpcObjectImportRequestMarkdownParams) Reset() { *m = RpcObjectI func (m *RpcObjectImportRequestMarkdownParams) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportRequestMarkdownParams) ProtoMessage() {} func (*RpcObjectImportRequestMarkdownParams) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 0, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 0, 1} } func (m *RpcObjectImportRequestMarkdownParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27257,7 +27693,7 @@ func (m *RpcObjectImportRequestBookmarksParams) Reset() { *m = RpcObject func (m *RpcObjectImportRequestBookmarksParams) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportRequestBookmarksParams) ProtoMessage() {} func (*RpcObjectImportRequestBookmarksParams) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 0, 2} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 0, 2} } func (m *RpcObjectImportRequestBookmarksParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27301,7 +27737,7 @@ func (m *RpcObjectImportRequestHtmlParams) Reset() { *m = RpcObjectImpor func (m *RpcObjectImportRequestHtmlParams) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportRequestHtmlParams) ProtoMessage() {} func (*RpcObjectImportRequestHtmlParams) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 0, 3} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 0, 3} } func (m *RpcObjectImportRequestHtmlParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27345,7 +27781,7 @@ func (m *RpcObjectImportRequestTxtParams) Reset() { *m = RpcObjectImport func (m *RpcObjectImportRequestTxtParams) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportRequestTxtParams) ProtoMessage() {} func (*RpcObjectImportRequestTxtParams) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 0, 4} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 0, 4} } func (m *RpcObjectImportRequestTxtParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27392,7 +27828,7 @@ func (m *RpcObjectImportRequestPbParams) Reset() { *m = RpcObjectImportR func (m *RpcObjectImportRequestPbParams) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportRequestPbParams) ProtoMessage() {} func (*RpcObjectImportRequestPbParams) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 0, 5} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 0, 5} } func (m *RpcObjectImportRequestPbParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27461,7 +27897,7 @@ func (m *RpcObjectImportRequestCsvParams) Reset() { *m = RpcObjectImport func (m *RpcObjectImportRequestCsvParams) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportRequestCsvParams) ProtoMessage() {} func (*RpcObjectImportRequestCsvParams) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 0, 6} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 0, 6} } func (m *RpcObjectImportRequestCsvParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27534,7 +27970,7 @@ func (m *RpcObjectImportRequestSnapshot) Reset() { *m = RpcObjectImportR func (m *RpcObjectImportRequestSnapshot) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportRequestSnapshot) ProtoMessage() {} func (*RpcObjectImportRequestSnapshot) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 0, 7} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 0, 7} } func (m *RpcObjectImportRequestSnapshot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27587,7 +28023,7 @@ func (m *RpcObjectImportResponse) Reset() { *m = RpcObjectImportResponse func (m *RpcObjectImportResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportResponse) ProtoMessage() {} func (*RpcObjectImportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 1} } func (m *RpcObjectImportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27646,7 +28082,7 @@ func (m *RpcObjectImportResponseError) Reset() { *m = RpcObjectImportRes func (m *RpcObjectImportResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportResponseError) ProtoMessage() {} func (*RpcObjectImportResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 1, 0} } func (m *RpcObjectImportResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27696,7 +28132,7 @@ func (m *RpcObjectImportNotion) Reset() { *m = RpcObjectImportNotion{} } func (m *RpcObjectImportNotion) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportNotion) ProtoMessage() {} func (*RpcObjectImportNotion) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 2} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 2} } func (m *RpcObjectImportNotion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27732,7 +28168,7 @@ func (m *RpcObjectImportNotionValidateToken) Reset() { *m = RpcObjectImp func (m *RpcObjectImportNotionValidateToken) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportNotionValidateToken) ProtoMessage() {} func (*RpcObjectImportNotionValidateToken) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 2, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 2, 0} } func (m *RpcObjectImportNotionValidateToken) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27773,7 +28209,7 @@ func (m *RpcObjectImportNotionValidateTokenRequest) String() string { } func (*RpcObjectImportNotionValidateTokenRequest) ProtoMessage() {} func (*RpcObjectImportNotionValidateTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 2, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 2, 0, 0} } func (m *RpcObjectImportNotionValidateTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27821,7 +28257,7 @@ func (m *RpcObjectImportNotionValidateTokenResponse) String() string { } func (*RpcObjectImportNotionValidateTokenResponse) ProtoMessage() {} func (*RpcObjectImportNotionValidateTokenResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 2, 0, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 2, 0, 1} } func (m *RpcObjectImportNotionValidateTokenResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27870,7 +28306,7 @@ func (m *RpcObjectImportNotionValidateTokenResponseError) String() string { } func (*RpcObjectImportNotionValidateTokenResponseError) ProtoMessage() {} func (*RpcObjectImportNotionValidateTokenResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 45, 2, 0, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 2, 0, 1, 0} } func (m *RpcObjectImportNotionValidateTokenResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27920,7 +28356,7 @@ func (m *RpcObjectImportList) Reset() { *m = RpcObjectImportList{} } func (m *RpcObjectImportList) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportList) ProtoMessage() {} func (*RpcObjectImportList) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 47} } func (m *RpcObjectImportList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27956,7 +28392,7 @@ func (m *RpcObjectImportListRequest) Reset() { *m = RpcObjectImportListR func (m *RpcObjectImportListRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportListRequest) ProtoMessage() {} func (*RpcObjectImportListRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 47, 0} } func (m *RpcObjectImportListRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -27994,7 +28430,7 @@ func (m *RpcObjectImportListResponse) Reset() { *m = RpcObjectImportList func (m *RpcObjectImportListResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportListResponse) ProtoMessage() {} func (*RpcObjectImportListResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 47, 1} } func (m *RpcObjectImportListResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -28046,7 +28482,7 @@ func (m *RpcObjectImportListResponseError) Reset() { *m = RpcObjectImpor func (m *RpcObjectImportListResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportListResponseError) ProtoMessage() {} func (*RpcObjectImportListResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 47, 1, 0} } func (m *RpcObjectImportListResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -28097,7 +28533,7 @@ func (m *RpcObjectImportListImportResponse) Reset() { *m = RpcObjectImpo func (m *RpcObjectImportListImportResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportListImportResponse) ProtoMessage() {} func (*RpcObjectImportListImportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 46, 2} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 47, 2} } func (m *RpcObjectImportListImportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -28140,7 +28576,7 @@ func (m *RpcObjectImportUseCase) Reset() { *m = RpcObjectImportUseCase{} func (m *RpcObjectImportUseCase) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportUseCase) ProtoMessage() {} func (*RpcObjectImportUseCase) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 47} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 48} } func (m *RpcObjectImportUseCase) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -28178,7 +28614,7 @@ func (m *RpcObjectImportUseCaseRequest) Reset() { *m = RpcObjectImportUs func (m *RpcObjectImportUseCaseRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportUseCaseRequest) ProtoMessage() {} func (*RpcObjectImportUseCaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 47, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 48, 0} } func (m *RpcObjectImportUseCaseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -28230,7 +28666,7 @@ func (m *RpcObjectImportUseCaseResponse) Reset() { *m = RpcObjectImportU func (m *RpcObjectImportUseCaseResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportUseCaseResponse) ProtoMessage() {} func (*RpcObjectImportUseCaseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 47, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 48, 1} } func (m *RpcObjectImportUseCaseResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -28282,7 +28718,7 @@ func (m *RpcObjectImportUseCaseResponseError) Reset() { *m = RpcObjectIm func (m *RpcObjectImportUseCaseResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportUseCaseResponseError) ProtoMessage() {} func (*RpcObjectImportUseCaseResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 47, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 48, 1, 0} } func (m *RpcObjectImportUseCaseResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -28332,7 +28768,7 @@ func (m *RpcObjectImportExperience) Reset() { *m = RpcObjectImportExperi func (m *RpcObjectImportExperience) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportExperience) ProtoMessage() {} func (*RpcObjectImportExperience) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 48} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 49} } func (m *RpcObjectImportExperience) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -28372,7 +28808,7 @@ func (m *RpcObjectImportExperienceRequest) Reset() { *m = RpcObjectImpor func (m *RpcObjectImportExperienceRequest) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportExperienceRequest) ProtoMessage() {} func (*RpcObjectImportExperienceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 48, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 49, 0} } func (m *RpcObjectImportExperienceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -28438,7 +28874,7 @@ func (m *RpcObjectImportExperienceResponse) Reset() { *m = RpcObjectImpo func (m *RpcObjectImportExperienceResponse) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportExperienceResponse) ProtoMessage() {} func (*RpcObjectImportExperienceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 48, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 49, 1} } func (m *RpcObjectImportExperienceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -28492,7 +28928,7 @@ func (m *RpcObjectImportExperienceResponseError) Reset() { func (m *RpcObjectImportExperienceResponseError) String() string { return proto.CompactTextString(m) } func (*RpcObjectImportExperienceResponseError) ProtoMessage() {} func (*RpcObjectImportExperienceResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 48, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 5, 49, 1, 0} } func (m *RpcObjectImportExperienceResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -59448,6 +59884,7 @@ func (m *RpcDebugAccountSelectTrace) XXX_DiscardUnknown() { var xxx_messageInfo_RpcDebugAccountSelectTrace proto.InternalMessageInfo type RpcDebugAccountSelectTraceRequest struct { + Dir string `protobuf:"bytes,1,opt,name=dir,proto3" json:"dir,omitempty"` } func (m *RpcDebugAccountSelectTraceRequest) Reset() { *m = RpcDebugAccountSelectTraceRequest{} } @@ -59483,6 +59920,13 @@ func (m *RpcDebugAccountSelectTraceRequest) XXX_DiscardUnknown() { var xxx_messageInfo_RpcDebugAccountSelectTraceRequest proto.InternalMessageInfo +func (m *RpcDebugAccountSelectTraceRequest) GetDir() string { + if m != nil { + return m.Dir + } + return "" +} + type RpcDebugAccountSelectTraceResponse struct { Error *RpcDebugAccountSelectTraceResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` @@ -64879,6 +65323,1588 @@ func (m *RpcDeviceNetworkStateSetResponseError) GetDescription() string { return "" } +type RpcChat struct { +} + +func (m *RpcChat) Reset() { *m = RpcChat{} } +func (m *RpcChat) String() string { return proto.CompactTextString(m) } +func (*RpcChat) ProtoMessage() {} +func (*RpcChat) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40} +} +func (m *RpcChat) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChat.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChat) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChat.Merge(m, src) +} +func (m *RpcChat) XXX_Size() int { + return m.Size() +} +func (m *RpcChat) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChat.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChat proto.InternalMessageInfo + +type RpcChatAddMessage struct { +} + +func (m *RpcChatAddMessage) Reset() { *m = RpcChatAddMessage{} } +func (m *RpcChatAddMessage) String() string { return proto.CompactTextString(m) } +func (*RpcChatAddMessage) ProtoMessage() {} +func (*RpcChatAddMessage) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 0} +} +func (m *RpcChatAddMessage) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatAddMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatAddMessage.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatAddMessage) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatAddMessage.Merge(m, src) +} +func (m *RpcChatAddMessage) XXX_Size() int { + return m.Size() +} +func (m *RpcChatAddMessage) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatAddMessage.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatAddMessage proto.InternalMessageInfo + +type RpcChatAddMessageRequest struct { + ChatObjectId string `protobuf:"bytes,1,opt,name=chatObjectId,proto3" json:"chatObjectId,omitempty"` + Message *model.ChatMessage `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` +} + +func (m *RpcChatAddMessageRequest) Reset() { *m = RpcChatAddMessageRequest{} } +func (m *RpcChatAddMessageRequest) String() string { return proto.CompactTextString(m) } +func (*RpcChatAddMessageRequest) ProtoMessage() {} +func (*RpcChatAddMessageRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 0, 0} +} +func (m *RpcChatAddMessageRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatAddMessageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatAddMessageRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatAddMessageRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatAddMessageRequest.Merge(m, src) +} +func (m *RpcChatAddMessageRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcChatAddMessageRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatAddMessageRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatAddMessageRequest proto.InternalMessageInfo + +func (m *RpcChatAddMessageRequest) GetChatObjectId() string { + if m != nil { + return m.ChatObjectId + } + return "" +} + +func (m *RpcChatAddMessageRequest) GetMessage() *model.ChatMessage { + if m != nil { + return m.Message + } + return nil +} + +type RpcChatAddMessageResponse struct { + Error *RpcChatAddMessageResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + MessageId string `protobuf:"bytes,2,opt,name=messageId,proto3" json:"messageId,omitempty"` + Event *ResponseEvent `protobuf:"bytes,3,opt,name=event,proto3" json:"event,omitempty"` +} + +func (m *RpcChatAddMessageResponse) Reset() { *m = RpcChatAddMessageResponse{} } +func (m *RpcChatAddMessageResponse) String() string { return proto.CompactTextString(m) } +func (*RpcChatAddMessageResponse) ProtoMessage() {} +func (*RpcChatAddMessageResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 0, 1} +} +func (m *RpcChatAddMessageResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatAddMessageResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatAddMessageResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatAddMessageResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatAddMessageResponse.Merge(m, src) +} +func (m *RpcChatAddMessageResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcChatAddMessageResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatAddMessageResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatAddMessageResponse proto.InternalMessageInfo + +func (m *RpcChatAddMessageResponse) GetError() *RpcChatAddMessageResponseError { + if m != nil { + return m.Error + } + return nil +} + +func (m *RpcChatAddMessageResponse) GetMessageId() string { + if m != nil { + return m.MessageId + } + return "" +} + +func (m *RpcChatAddMessageResponse) GetEvent() *ResponseEvent { + if m != nil { + return m.Event + } + return nil +} + +type RpcChatAddMessageResponseError struct { + Code RpcChatAddMessageResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcChatAddMessageResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcChatAddMessageResponseError) Reset() { *m = RpcChatAddMessageResponseError{} } +func (m *RpcChatAddMessageResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcChatAddMessageResponseError) ProtoMessage() {} +func (*RpcChatAddMessageResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 0, 1, 0} +} +func (m *RpcChatAddMessageResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatAddMessageResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatAddMessageResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatAddMessageResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatAddMessageResponseError.Merge(m, src) +} +func (m *RpcChatAddMessageResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcChatAddMessageResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatAddMessageResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatAddMessageResponseError proto.InternalMessageInfo + +func (m *RpcChatAddMessageResponseError) GetCode() RpcChatAddMessageResponseErrorCode { + if m != nil { + return m.Code + } + return RpcChatAddMessageResponseError_NULL +} + +func (m *RpcChatAddMessageResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +type RpcChatEditMessageContent struct { +} + +func (m *RpcChatEditMessageContent) Reset() { *m = RpcChatEditMessageContent{} } +func (m *RpcChatEditMessageContent) String() string { return proto.CompactTextString(m) } +func (*RpcChatEditMessageContent) ProtoMessage() {} +func (*RpcChatEditMessageContent) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 1} +} +func (m *RpcChatEditMessageContent) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatEditMessageContent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatEditMessageContent.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatEditMessageContent) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatEditMessageContent.Merge(m, src) +} +func (m *RpcChatEditMessageContent) XXX_Size() int { + return m.Size() +} +func (m *RpcChatEditMessageContent) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatEditMessageContent.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatEditMessageContent proto.InternalMessageInfo + +type RpcChatEditMessageContentRequest struct { + ChatObjectId string `protobuf:"bytes,1,opt,name=chatObjectId,proto3" json:"chatObjectId,omitempty"` + MessageId string `protobuf:"bytes,2,opt,name=messageId,proto3" json:"messageId,omitempty"` + EditedMessage *model.ChatMessage `protobuf:"bytes,3,opt,name=editedMessage,proto3" json:"editedMessage,omitempty"` +} + +func (m *RpcChatEditMessageContentRequest) Reset() { *m = RpcChatEditMessageContentRequest{} } +func (m *RpcChatEditMessageContentRequest) String() string { return proto.CompactTextString(m) } +func (*RpcChatEditMessageContentRequest) ProtoMessage() {} +func (*RpcChatEditMessageContentRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 1, 0} +} +func (m *RpcChatEditMessageContentRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatEditMessageContentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatEditMessageContentRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatEditMessageContentRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatEditMessageContentRequest.Merge(m, src) +} +func (m *RpcChatEditMessageContentRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcChatEditMessageContentRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatEditMessageContentRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatEditMessageContentRequest proto.InternalMessageInfo + +func (m *RpcChatEditMessageContentRequest) GetChatObjectId() string { + if m != nil { + return m.ChatObjectId + } + return "" +} + +func (m *RpcChatEditMessageContentRequest) GetMessageId() string { + if m != nil { + return m.MessageId + } + return "" +} + +func (m *RpcChatEditMessageContentRequest) GetEditedMessage() *model.ChatMessage { + if m != nil { + return m.EditedMessage + } + return nil +} + +type RpcChatEditMessageContentResponse struct { + Error *RpcChatEditMessageContentResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcChatEditMessageContentResponse) Reset() { *m = RpcChatEditMessageContentResponse{} } +func (m *RpcChatEditMessageContentResponse) String() string { return proto.CompactTextString(m) } +func (*RpcChatEditMessageContentResponse) ProtoMessage() {} +func (*RpcChatEditMessageContentResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 1, 1} +} +func (m *RpcChatEditMessageContentResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatEditMessageContentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatEditMessageContentResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatEditMessageContentResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatEditMessageContentResponse.Merge(m, src) +} +func (m *RpcChatEditMessageContentResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcChatEditMessageContentResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatEditMessageContentResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatEditMessageContentResponse proto.InternalMessageInfo + +func (m *RpcChatEditMessageContentResponse) GetError() *RpcChatEditMessageContentResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcChatEditMessageContentResponseError struct { + Code RpcChatEditMessageContentResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcChatEditMessageContentResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcChatEditMessageContentResponseError) Reset() { + *m = RpcChatEditMessageContentResponseError{} +} +func (m *RpcChatEditMessageContentResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcChatEditMessageContentResponseError) ProtoMessage() {} +func (*RpcChatEditMessageContentResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 1, 1, 0} +} +func (m *RpcChatEditMessageContentResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatEditMessageContentResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatEditMessageContentResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatEditMessageContentResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatEditMessageContentResponseError.Merge(m, src) +} +func (m *RpcChatEditMessageContentResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcChatEditMessageContentResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatEditMessageContentResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatEditMessageContentResponseError proto.InternalMessageInfo + +func (m *RpcChatEditMessageContentResponseError) GetCode() RpcChatEditMessageContentResponseErrorCode { + if m != nil { + return m.Code + } + return RpcChatEditMessageContentResponseError_NULL +} + +func (m *RpcChatEditMessageContentResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +type RpcChatToggleMessageReaction struct { +} + +func (m *RpcChatToggleMessageReaction) Reset() { *m = RpcChatToggleMessageReaction{} } +func (m *RpcChatToggleMessageReaction) String() string { return proto.CompactTextString(m) } +func (*RpcChatToggleMessageReaction) ProtoMessage() {} +func (*RpcChatToggleMessageReaction) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 2} +} +func (m *RpcChatToggleMessageReaction) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatToggleMessageReaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatToggleMessageReaction.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatToggleMessageReaction) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatToggleMessageReaction.Merge(m, src) +} +func (m *RpcChatToggleMessageReaction) XXX_Size() int { + return m.Size() +} +func (m *RpcChatToggleMessageReaction) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatToggleMessageReaction.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatToggleMessageReaction proto.InternalMessageInfo + +type RpcChatToggleMessageReactionRequest struct { + ChatObjectId string `protobuf:"bytes,1,opt,name=chatObjectId,proto3" json:"chatObjectId,omitempty"` + MessageId string `protobuf:"bytes,2,opt,name=messageId,proto3" json:"messageId,omitempty"` + Emoji string `protobuf:"bytes,3,opt,name=emoji,proto3" json:"emoji,omitempty"` +} + +func (m *RpcChatToggleMessageReactionRequest) Reset() { *m = RpcChatToggleMessageReactionRequest{} } +func (m *RpcChatToggleMessageReactionRequest) String() string { return proto.CompactTextString(m) } +func (*RpcChatToggleMessageReactionRequest) ProtoMessage() {} +func (*RpcChatToggleMessageReactionRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 2, 0} +} +func (m *RpcChatToggleMessageReactionRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatToggleMessageReactionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatToggleMessageReactionRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatToggleMessageReactionRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatToggleMessageReactionRequest.Merge(m, src) +} +func (m *RpcChatToggleMessageReactionRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcChatToggleMessageReactionRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatToggleMessageReactionRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatToggleMessageReactionRequest proto.InternalMessageInfo + +func (m *RpcChatToggleMessageReactionRequest) GetChatObjectId() string { + if m != nil { + return m.ChatObjectId + } + return "" +} + +func (m *RpcChatToggleMessageReactionRequest) GetMessageId() string { + if m != nil { + return m.MessageId + } + return "" +} + +func (m *RpcChatToggleMessageReactionRequest) GetEmoji() string { + if m != nil { + return m.Emoji + } + return "" +} + +type RpcChatToggleMessageReactionResponse struct { + Error *RpcChatToggleMessageReactionResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcChatToggleMessageReactionResponse) Reset() { *m = RpcChatToggleMessageReactionResponse{} } +func (m *RpcChatToggleMessageReactionResponse) String() string { return proto.CompactTextString(m) } +func (*RpcChatToggleMessageReactionResponse) ProtoMessage() {} +func (*RpcChatToggleMessageReactionResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 2, 1} +} +func (m *RpcChatToggleMessageReactionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatToggleMessageReactionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatToggleMessageReactionResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatToggleMessageReactionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatToggleMessageReactionResponse.Merge(m, src) +} +func (m *RpcChatToggleMessageReactionResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcChatToggleMessageReactionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatToggleMessageReactionResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatToggleMessageReactionResponse proto.InternalMessageInfo + +func (m *RpcChatToggleMessageReactionResponse) GetError() *RpcChatToggleMessageReactionResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcChatToggleMessageReactionResponseError struct { + Code RpcChatToggleMessageReactionResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcChatToggleMessageReactionResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcChatToggleMessageReactionResponseError) Reset() { + *m = RpcChatToggleMessageReactionResponseError{} +} +func (m *RpcChatToggleMessageReactionResponseError) String() string { + return proto.CompactTextString(m) +} +func (*RpcChatToggleMessageReactionResponseError) ProtoMessage() {} +func (*RpcChatToggleMessageReactionResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 2, 1, 0} +} +func (m *RpcChatToggleMessageReactionResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatToggleMessageReactionResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatToggleMessageReactionResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatToggleMessageReactionResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatToggleMessageReactionResponseError.Merge(m, src) +} +func (m *RpcChatToggleMessageReactionResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcChatToggleMessageReactionResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatToggleMessageReactionResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatToggleMessageReactionResponseError proto.InternalMessageInfo + +func (m *RpcChatToggleMessageReactionResponseError) GetCode() RpcChatToggleMessageReactionResponseErrorCode { + if m != nil { + return m.Code + } + return RpcChatToggleMessageReactionResponseError_NULL +} + +func (m *RpcChatToggleMessageReactionResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +type RpcChatDeleteMessage struct { +} + +func (m *RpcChatDeleteMessage) Reset() { *m = RpcChatDeleteMessage{} } +func (m *RpcChatDeleteMessage) String() string { return proto.CompactTextString(m) } +func (*RpcChatDeleteMessage) ProtoMessage() {} +func (*RpcChatDeleteMessage) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 3} +} +func (m *RpcChatDeleteMessage) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatDeleteMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatDeleteMessage.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatDeleteMessage) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatDeleteMessage.Merge(m, src) +} +func (m *RpcChatDeleteMessage) XXX_Size() int { + return m.Size() +} +func (m *RpcChatDeleteMessage) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatDeleteMessage.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatDeleteMessage proto.InternalMessageInfo + +type RpcChatDeleteMessageRequest struct { + ChatObjectId string `protobuf:"bytes,1,opt,name=chatObjectId,proto3" json:"chatObjectId,omitempty"` + MessageId string `protobuf:"bytes,2,opt,name=messageId,proto3" json:"messageId,omitempty"` +} + +func (m *RpcChatDeleteMessageRequest) Reset() { *m = RpcChatDeleteMessageRequest{} } +func (m *RpcChatDeleteMessageRequest) String() string { return proto.CompactTextString(m) } +func (*RpcChatDeleteMessageRequest) ProtoMessage() {} +func (*RpcChatDeleteMessageRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 3, 0} +} +func (m *RpcChatDeleteMessageRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatDeleteMessageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatDeleteMessageRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatDeleteMessageRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatDeleteMessageRequest.Merge(m, src) +} +func (m *RpcChatDeleteMessageRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcChatDeleteMessageRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatDeleteMessageRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatDeleteMessageRequest proto.InternalMessageInfo + +func (m *RpcChatDeleteMessageRequest) GetChatObjectId() string { + if m != nil { + return m.ChatObjectId + } + return "" +} + +func (m *RpcChatDeleteMessageRequest) GetMessageId() string { + if m != nil { + return m.MessageId + } + return "" +} + +type RpcChatDeleteMessageResponse struct { + Error *RpcChatDeleteMessageResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcChatDeleteMessageResponse) Reset() { *m = RpcChatDeleteMessageResponse{} } +func (m *RpcChatDeleteMessageResponse) String() string { return proto.CompactTextString(m) } +func (*RpcChatDeleteMessageResponse) ProtoMessage() {} +func (*RpcChatDeleteMessageResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 3, 1} +} +func (m *RpcChatDeleteMessageResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatDeleteMessageResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatDeleteMessageResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatDeleteMessageResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatDeleteMessageResponse.Merge(m, src) +} +func (m *RpcChatDeleteMessageResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcChatDeleteMessageResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatDeleteMessageResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatDeleteMessageResponse proto.InternalMessageInfo + +func (m *RpcChatDeleteMessageResponse) GetError() *RpcChatDeleteMessageResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcChatDeleteMessageResponseError struct { + Code RpcChatDeleteMessageResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcChatDeleteMessageResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcChatDeleteMessageResponseError) Reset() { *m = RpcChatDeleteMessageResponseError{} } +func (m *RpcChatDeleteMessageResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcChatDeleteMessageResponseError) ProtoMessage() {} +func (*RpcChatDeleteMessageResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 3, 1, 0} +} +func (m *RpcChatDeleteMessageResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatDeleteMessageResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatDeleteMessageResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatDeleteMessageResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatDeleteMessageResponseError.Merge(m, src) +} +func (m *RpcChatDeleteMessageResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcChatDeleteMessageResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatDeleteMessageResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatDeleteMessageResponseError proto.InternalMessageInfo + +func (m *RpcChatDeleteMessageResponseError) GetCode() RpcChatDeleteMessageResponseErrorCode { + if m != nil { + return m.Code + } + return RpcChatDeleteMessageResponseError_NULL +} + +func (m *RpcChatDeleteMessageResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +type RpcChatGetMessages struct { +} + +func (m *RpcChatGetMessages) Reset() { *m = RpcChatGetMessages{} } +func (m *RpcChatGetMessages) String() string { return proto.CompactTextString(m) } +func (*RpcChatGetMessages) ProtoMessage() {} +func (*RpcChatGetMessages) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 4} +} +func (m *RpcChatGetMessages) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatGetMessages) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatGetMessages.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatGetMessages) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatGetMessages.Merge(m, src) +} +func (m *RpcChatGetMessages) XXX_Size() int { + return m.Size() +} +func (m *RpcChatGetMessages) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatGetMessages.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatGetMessages proto.InternalMessageInfo + +type RpcChatGetMessagesRequest struct { + ChatObjectId string `protobuf:"bytes,1,opt,name=chatObjectId,proto3" json:"chatObjectId,omitempty"` + BeforeOrderId string `protobuf:"bytes,2,opt,name=beforeOrderId,proto3" json:"beforeOrderId,omitempty"` + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` +} + +func (m *RpcChatGetMessagesRequest) Reset() { *m = RpcChatGetMessagesRequest{} } +func (m *RpcChatGetMessagesRequest) String() string { return proto.CompactTextString(m) } +func (*RpcChatGetMessagesRequest) ProtoMessage() {} +func (*RpcChatGetMessagesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 4, 0} +} +func (m *RpcChatGetMessagesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatGetMessagesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatGetMessagesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatGetMessagesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatGetMessagesRequest.Merge(m, src) +} +func (m *RpcChatGetMessagesRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcChatGetMessagesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatGetMessagesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatGetMessagesRequest proto.InternalMessageInfo + +func (m *RpcChatGetMessagesRequest) GetChatObjectId() string { + if m != nil { + return m.ChatObjectId + } + return "" +} + +func (m *RpcChatGetMessagesRequest) GetBeforeOrderId() string { + if m != nil { + return m.BeforeOrderId + } + return "" +} + +func (m *RpcChatGetMessagesRequest) GetLimit() int32 { + if m != nil { + return m.Limit + } + return 0 +} + +type RpcChatGetMessagesResponse struct { + Error *RpcChatGetMessagesResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Messages []*model.ChatMessage `protobuf:"bytes,2,rep,name=messages,proto3" json:"messages,omitempty"` +} + +func (m *RpcChatGetMessagesResponse) Reset() { *m = RpcChatGetMessagesResponse{} } +func (m *RpcChatGetMessagesResponse) String() string { return proto.CompactTextString(m) } +func (*RpcChatGetMessagesResponse) ProtoMessage() {} +func (*RpcChatGetMessagesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 4, 1} +} +func (m *RpcChatGetMessagesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatGetMessagesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatGetMessagesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatGetMessagesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatGetMessagesResponse.Merge(m, src) +} +func (m *RpcChatGetMessagesResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcChatGetMessagesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatGetMessagesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatGetMessagesResponse proto.InternalMessageInfo + +func (m *RpcChatGetMessagesResponse) GetError() *RpcChatGetMessagesResponseError { + if m != nil { + return m.Error + } + return nil +} + +func (m *RpcChatGetMessagesResponse) GetMessages() []*model.ChatMessage { + if m != nil { + return m.Messages + } + return nil +} + +type RpcChatGetMessagesResponseError struct { + Code RpcChatGetMessagesResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcChatGetMessagesResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcChatGetMessagesResponseError) Reset() { *m = RpcChatGetMessagesResponseError{} } +func (m *RpcChatGetMessagesResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcChatGetMessagesResponseError) ProtoMessage() {} +func (*RpcChatGetMessagesResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 4, 1, 0} +} +func (m *RpcChatGetMessagesResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatGetMessagesResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatGetMessagesResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatGetMessagesResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatGetMessagesResponseError.Merge(m, src) +} +func (m *RpcChatGetMessagesResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcChatGetMessagesResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatGetMessagesResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatGetMessagesResponseError proto.InternalMessageInfo + +func (m *RpcChatGetMessagesResponseError) GetCode() RpcChatGetMessagesResponseErrorCode { + if m != nil { + return m.Code + } + return RpcChatGetMessagesResponseError_NULL +} + +func (m *RpcChatGetMessagesResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +type RpcChatGetMessagesByIds struct { +} + +func (m *RpcChatGetMessagesByIds) Reset() { *m = RpcChatGetMessagesByIds{} } +func (m *RpcChatGetMessagesByIds) String() string { return proto.CompactTextString(m) } +func (*RpcChatGetMessagesByIds) ProtoMessage() {} +func (*RpcChatGetMessagesByIds) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 5} +} +func (m *RpcChatGetMessagesByIds) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatGetMessagesByIds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatGetMessagesByIds.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatGetMessagesByIds) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatGetMessagesByIds.Merge(m, src) +} +func (m *RpcChatGetMessagesByIds) XXX_Size() int { + return m.Size() +} +func (m *RpcChatGetMessagesByIds) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatGetMessagesByIds.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatGetMessagesByIds proto.InternalMessageInfo + +type RpcChatGetMessagesByIdsRequest struct { + ChatObjectId string `protobuf:"bytes,1,opt,name=chatObjectId,proto3" json:"chatObjectId,omitempty"` + MessageIds []string `protobuf:"bytes,2,rep,name=messageIds,proto3" json:"messageIds,omitempty"` +} + +func (m *RpcChatGetMessagesByIdsRequest) Reset() { *m = RpcChatGetMessagesByIdsRequest{} } +func (m *RpcChatGetMessagesByIdsRequest) String() string { return proto.CompactTextString(m) } +func (*RpcChatGetMessagesByIdsRequest) ProtoMessage() {} +func (*RpcChatGetMessagesByIdsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 5, 0} +} +func (m *RpcChatGetMessagesByIdsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatGetMessagesByIdsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatGetMessagesByIdsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatGetMessagesByIdsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatGetMessagesByIdsRequest.Merge(m, src) +} +func (m *RpcChatGetMessagesByIdsRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcChatGetMessagesByIdsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatGetMessagesByIdsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatGetMessagesByIdsRequest proto.InternalMessageInfo + +func (m *RpcChatGetMessagesByIdsRequest) GetChatObjectId() string { + if m != nil { + return m.ChatObjectId + } + return "" +} + +func (m *RpcChatGetMessagesByIdsRequest) GetMessageIds() []string { + if m != nil { + return m.MessageIds + } + return nil +} + +type RpcChatGetMessagesByIdsResponse struct { + Error *RpcChatGetMessagesByIdsResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Messages []*model.ChatMessage `protobuf:"bytes,2,rep,name=messages,proto3" json:"messages,omitempty"` +} + +func (m *RpcChatGetMessagesByIdsResponse) Reset() { *m = RpcChatGetMessagesByIdsResponse{} } +func (m *RpcChatGetMessagesByIdsResponse) String() string { return proto.CompactTextString(m) } +func (*RpcChatGetMessagesByIdsResponse) ProtoMessage() {} +func (*RpcChatGetMessagesByIdsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 5, 1} +} +func (m *RpcChatGetMessagesByIdsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatGetMessagesByIdsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatGetMessagesByIdsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatGetMessagesByIdsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatGetMessagesByIdsResponse.Merge(m, src) +} +func (m *RpcChatGetMessagesByIdsResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcChatGetMessagesByIdsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatGetMessagesByIdsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatGetMessagesByIdsResponse proto.InternalMessageInfo + +func (m *RpcChatGetMessagesByIdsResponse) GetError() *RpcChatGetMessagesByIdsResponseError { + if m != nil { + return m.Error + } + return nil +} + +func (m *RpcChatGetMessagesByIdsResponse) GetMessages() []*model.ChatMessage { + if m != nil { + return m.Messages + } + return nil +} + +type RpcChatGetMessagesByIdsResponseError struct { + Code RpcChatGetMessagesByIdsResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcChatGetMessagesByIdsResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcChatGetMessagesByIdsResponseError) Reset() { *m = RpcChatGetMessagesByIdsResponseError{} } +func (m *RpcChatGetMessagesByIdsResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcChatGetMessagesByIdsResponseError) ProtoMessage() {} +func (*RpcChatGetMessagesByIdsResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 5, 1, 0} +} +func (m *RpcChatGetMessagesByIdsResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatGetMessagesByIdsResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatGetMessagesByIdsResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatGetMessagesByIdsResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatGetMessagesByIdsResponseError.Merge(m, src) +} +func (m *RpcChatGetMessagesByIdsResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcChatGetMessagesByIdsResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatGetMessagesByIdsResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatGetMessagesByIdsResponseError proto.InternalMessageInfo + +func (m *RpcChatGetMessagesByIdsResponseError) GetCode() RpcChatGetMessagesByIdsResponseErrorCode { + if m != nil { + return m.Code + } + return RpcChatGetMessagesByIdsResponseError_NULL +} + +func (m *RpcChatGetMessagesByIdsResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +type RpcChatSubscribeLastMessages struct { +} + +func (m *RpcChatSubscribeLastMessages) Reset() { *m = RpcChatSubscribeLastMessages{} } +func (m *RpcChatSubscribeLastMessages) String() string { return proto.CompactTextString(m) } +func (*RpcChatSubscribeLastMessages) ProtoMessage() {} +func (*RpcChatSubscribeLastMessages) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 6} +} +func (m *RpcChatSubscribeLastMessages) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatSubscribeLastMessages) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatSubscribeLastMessages.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatSubscribeLastMessages) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatSubscribeLastMessages.Merge(m, src) +} +func (m *RpcChatSubscribeLastMessages) XXX_Size() int { + return m.Size() +} +func (m *RpcChatSubscribeLastMessages) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatSubscribeLastMessages.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatSubscribeLastMessages proto.InternalMessageInfo + +type RpcChatSubscribeLastMessagesRequest struct { + ChatObjectId string `protobuf:"bytes,1,opt,name=chatObjectId,proto3" json:"chatObjectId,omitempty"` + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` +} + +func (m *RpcChatSubscribeLastMessagesRequest) Reset() { *m = RpcChatSubscribeLastMessagesRequest{} } +func (m *RpcChatSubscribeLastMessagesRequest) String() string { return proto.CompactTextString(m) } +func (*RpcChatSubscribeLastMessagesRequest) ProtoMessage() {} +func (*RpcChatSubscribeLastMessagesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 6, 0} +} +func (m *RpcChatSubscribeLastMessagesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatSubscribeLastMessagesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatSubscribeLastMessagesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatSubscribeLastMessagesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatSubscribeLastMessagesRequest.Merge(m, src) +} +func (m *RpcChatSubscribeLastMessagesRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcChatSubscribeLastMessagesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatSubscribeLastMessagesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatSubscribeLastMessagesRequest proto.InternalMessageInfo + +func (m *RpcChatSubscribeLastMessagesRequest) GetChatObjectId() string { + if m != nil { + return m.ChatObjectId + } + return "" +} + +func (m *RpcChatSubscribeLastMessagesRequest) GetLimit() int32 { + if m != nil { + return m.Limit + } + return 0 +} + +type RpcChatSubscribeLastMessagesResponse struct { + Error *RpcChatSubscribeLastMessagesResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Messages []*model.ChatMessage `protobuf:"bytes,2,rep,name=messages,proto3" json:"messages,omitempty"` + NumMessagesBefore int32 `protobuf:"varint,3,opt,name=numMessagesBefore,proto3" json:"numMessagesBefore,omitempty"` +} + +func (m *RpcChatSubscribeLastMessagesResponse) Reset() { *m = RpcChatSubscribeLastMessagesResponse{} } +func (m *RpcChatSubscribeLastMessagesResponse) String() string { return proto.CompactTextString(m) } +func (*RpcChatSubscribeLastMessagesResponse) ProtoMessage() {} +func (*RpcChatSubscribeLastMessagesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 6, 1} +} +func (m *RpcChatSubscribeLastMessagesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatSubscribeLastMessagesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatSubscribeLastMessagesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatSubscribeLastMessagesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatSubscribeLastMessagesResponse.Merge(m, src) +} +func (m *RpcChatSubscribeLastMessagesResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcChatSubscribeLastMessagesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatSubscribeLastMessagesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatSubscribeLastMessagesResponse proto.InternalMessageInfo + +func (m *RpcChatSubscribeLastMessagesResponse) GetError() *RpcChatSubscribeLastMessagesResponseError { + if m != nil { + return m.Error + } + return nil +} + +func (m *RpcChatSubscribeLastMessagesResponse) GetMessages() []*model.ChatMessage { + if m != nil { + return m.Messages + } + return nil +} + +func (m *RpcChatSubscribeLastMessagesResponse) GetNumMessagesBefore() int32 { + if m != nil { + return m.NumMessagesBefore + } + return 0 +} + +type RpcChatSubscribeLastMessagesResponseError struct { + Code RpcChatSubscribeLastMessagesResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcChatSubscribeLastMessagesResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcChatSubscribeLastMessagesResponseError) Reset() { + *m = RpcChatSubscribeLastMessagesResponseError{} +} +func (m *RpcChatSubscribeLastMessagesResponseError) String() string { + return proto.CompactTextString(m) +} +func (*RpcChatSubscribeLastMessagesResponseError) ProtoMessage() {} +func (*RpcChatSubscribeLastMessagesResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 6, 1, 0} +} +func (m *RpcChatSubscribeLastMessagesResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatSubscribeLastMessagesResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatSubscribeLastMessagesResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatSubscribeLastMessagesResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatSubscribeLastMessagesResponseError.Merge(m, src) +} +func (m *RpcChatSubscribeLastMessagesResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcChatSubscribeLastMessagesResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatSubscribeLastMessagesResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatSubscribeLastMessagesResponseError proto.InternalMessageInfo + +func (m *RpcChatSubscribeLastMessagesResponseError) GetCode() RpcChatSubscribeLastMessagesResponseErrorCode { + if m != nil { + return m.Code + } + return RpcChatSubscribeLastMessagesResponseError_NULL +} + +func (m *RpcChatSubscribeLastMessagesResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +type RpcChatUnsubscribe struct { +} + +func (m *RpcChatUnsubscribe) Reset() { *m = RpcChatUnsubscribe{} } +func (m *RpcChatUnsubscribe) String() string { return proto.CompactTextString(m) } +func (*RpcChatUnsubscribe) ProtoMessage() {} +func (*RpcChatUnsubscribe) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 7} +} +func (m *RpcChatUnsubscribe) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatUnsubscribe) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatUnsubscribe.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatUnsubscribe) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatUnsubscribe.Merge(m, src) +} +func (m *RpcChatUnsubscribe) XXX_Size() int { + return m.Size() +} +func (m *RpcChatUnsubscribe) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatUnsubscribe.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatUnsubscribe proto.InternalMessageInfo + +type RpcChatUnsubscribeRequest struct { + ChatObjectId string `protobuf:"bytes,1,opt,name=chatObjectId,proto3" json:"chatObjectId,omitempty"` +} + +func (m *RpcChatUnsubscribeRequest) Reset() { *m = RpcChatUnsubscribeRequest{} } +func (m *RpcChatUnsubscribeRequest) String() string { return proto.CompactTextString(m) } +func (*RpcChatUnsubscribeRequest) ProtoMessage() {} +func (*RpcChatUnsubscribeRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 7, 0} +} +func (m *RpcChatUnsubscribeRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatUnsubscribeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatUnsubscribeRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatUnsubscribeRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatUnsubscribeRequest.Merge(m, src) +} +func (m *RpcChatUnsubscribeRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcChatUnsubscribeRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatUnsubscribeRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatUnsubscribeRequest proto.InternalMessageInfo + +func (m *RpcChatUnsubscribeRequest) GetChatObjectId() string { + if m != nil { + return m.ChatObjectId + } + return "" +} + +type RpcChatUnsubscribeResponse struct { + Error *RpcChatUnsubscribeResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcChatUnsubscribeResponse) Reset() { *m = RpcChatUnsubscribeResponse{} } +func (m *RpcChatUnsubscribeResponse) String() string { return proto.CompactTextString(m) } +func (*RpcChatUnsubscribeResponse) ProtoMessage() {} +func (*RpcChatUnsubscribeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 7, 1} +} +func (m *RpcChatUnsubscribeResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatUnsubscribeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatUnsubscribeResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatUnsubscribeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatUnsubscribeResponse.Merge(m, src) +} +func (m *RpcChatUnsubscribeResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcChatUnsubscribeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatUnsubscribeResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatUnsubscribeResponse proto.InternalMessageInfo + +func (m *RpcChatUnsubscribeResponse) GetError() *RpcChatUnsubscribeResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcChatUnsubscribeResponseError struct { + Code RpcChatUnsubscribeResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcChatUnsubscribeResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcChatUnsubscribeResponseError) Reset() { *m = RpcChatUnsubscribeResponseError{} } +func (m *RpcChatUnsubscribeResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcChatUnsubscribeResponseError) ProtoMessage() {} +func (*RpcChatUnsubscribeResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 40, 7, 1, 0} +} +func (m *RpcChatUnsubscribeResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcChatUnsubscribeResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcChatUnsubscribeResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcChatUnsubscribeResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcChatUnsubscribeResponseError.Merge(m, src) +} +func (m *RpcChatUnsubscribeResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcChatUnsubscribeResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcChatUnsubscribeResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcChatUnsubscribeResponseError proto.InternalMessageInfo + +func (m *RpcChatUnsubscribeResponseError) GetCode() RpcChatUnsubscribeResponseErrorCode { + if m != nil { + return m.Code + } + return RpcChatUnsubscribeResponseError_NULL +} + +func (m *RpcChatUnsubscribeResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + type Empty struct { } @@ -65027,6 +67053,7 @@ func init() { proto.RegisterEnum("anytype.RpcObjectCreateSetResponseErrorCode", RpcObjectCreateSetResponseErrorCode_name, RpcObjectCreateSetResponseErrorCode_value) proto.RegisterEnum("anytype.RpcObjectCreateObjectTypeResponseErrorCode", RpcObjectCreateObjectTypeResponseErrorCode_name, RpcObjectCreateObjectTypeResponseErrorCode_value) proto.RegisterEnum("anytype.RpcObjectCreateFromUrlResponseErrorCode", RpcObjectCreateFromUrlResponseErrorCode_name, RpcObjectCreateFromUrlResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcObjectChatAddResponseErrorCode", RpcObjectChatAddResponseErrorCode_name, RpcObjectChatAddResponseErrorCode_value) proto.RegisterEnum("anytype.RpcObjectBookmarkFetchResponseErrorCode", RpcObjectBookmarkFetchResponseErrorCode_name, RpcObjectBookmarkFetchResponseErrorCode_value) proto.RegisterEnum("anytype.RpcObjectToBookmarkResponseErrorCode", RpcObjectToBookmarkResponseErrorCode_name, RpcObjectToBookmarkResponseErrorCode_value) proto.RegisterEnum("anytype.RpcObjectDuplicateResponseErrorCode", RpcObjectDuplicateResponseErrorCode_name, RpcObjectDuplicateResponseErrorCode_value) @@ -65243,6 +67270,14 @@ func init() { proto.RegisterEnum("anytype.RpcDeviceSetNameResponseErrorCode", RpcDeviceSetNameResponseErrorCode_name, RpcDeviceSetNameResponseErrorCode_value) proto.RegisterEnum("anytype.RpcDeviceListResponseErrorCode", RpcDeviceListResponseErrorCode_name, RpcDeviceListResponseErrorCode_value) proto.RegisterEnum("anytype.RpcDeviceNetworkStateSetResponseErrorCode", RpcDeviceNetworkStateSetResponseErrorCode_name, RpcDeviceNetworkStateSetResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcChatAddMessageResponseErrorCode", RpcChatAddMessageResponseErrorCode_name, RpcChatAddMessageResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcChatEditMessageContentResponseErrorCode", RpcChatEditMessageContentResponseErrorCode_name, RpcChatEditMessageContentResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcChatToggleMessageReactionResponseErrorCode", RpcChatToggleMessageReactionResponseErrorCode_name, RpcChatToggleMessageReactionResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcChatDeleteMessageResponseErrorCode", RpcChatDeleteMessageResponseErrorCode_name, RpcChatDeleteMessageResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcChatGetMessagesResponseErrorCode", RpcChatGetMessagesResponseErrorCode_name, RpcChatGetMessagesResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcChatGetMessagesByIdsResponseErrorCode", RpcChatGetMessagesByIdsResponseErrorCode_name, RpcChatGetMessagesByIdsResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcChatSubscribeLastMessagesResponseErrorCode", RpcChatSubscribeLastMessagesResponseErrorCode_name, RpcChatSubscribeLastMessagesResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcChatUnsubscribeResponseErrorCode", RpcChatUnsubscribeResponseErrorCode_name, RpcChatUnsubscribeResponseErrorCode_value) proto.RegisterType((*Rpc)(nil), "anytype.Rpc") proto.RegisterType((*RpcApp)(nil), "anytype.Rpc.App") proto.RegisterType((*RpcAppGetVersion)(nil), "anytype.Rpc.App.GetVersion") @@ -65476,6 +67511,10 @@ func init() { proto.RegisterType((*RpcObjectCreateFromUrlRequest)(nil), "anytype.Rpc.Object.CreateFromUrl.Request") proto.RegisterType((*RpcObjectCreateFromUrlResponse)(nil), "anytype.Rpc.Object.CreateFromUrl.Response") proto.RegisterType((*RpcObjectCreateFromUrlResponseError)(nil), "anytype.Rpc.Object.CreateFromUrl.Response.Error") + proto.RegisterType((*RpcObjectChatAdd)(nil), "anytype.Rpc.Object.ChatAdd") + proto.RegisterType((*RpcObjectChatAddRequest)(nil), "anytype.Rpc.Object.ChatAdd.Request") + proto.RegisterType((*RpcObjectChatAddResponse)(nil), "anytype.Rpc.Object.ChatAdd.Response") + proto.RegisterType((*RpcObjectChatAddResponseError)(nil), "anytype.Rpc.Object.ChatAdd.Response.Error") proto.RegisterType((*RpcObjectBookmarkFetch)(nil), "anytype.Rpc.Object.BookmarkFetch") proto.RegisterType((*RpcObjectBookmarkFetchRequest)(nil), "anytype.Rpc.Object.BookmarkFetch.Request") proto.RegisterType((*RpcObjectBookmarkFetchResponse)(nil), "anytype.Rpc.Object.BookmarkFetch.Response") @@ -66370,6 +68409,39 @@ func init() { proto.RegisterType((*RpcDeviceNetworkStateSetRequest)(nil), "anytype.Rpc.Device.NetworkState.Set.Request") proto.RegisterType((*RpcDeviceNetworkStateSetResponse)(nil), "anytype.Rpc.Device.NetworkState.Set.Response") proto.RegisterType((*RpcDeviceNetworkStateSetResponseError)(nil), "anytype.Rpc.Device.NetworkState.Set.Response.Error") + proto.RegisterType((*RpcChat)(nil), "anytype.Rpc.Chat") + proto.RegisterType((*RpcChatAddMessage)(nil), "anytype.Rpc.Chat.AddMessage") + proto.RegisterType((*RpcChatAddMessageRequest)(nil), "anytype.Rpc.Chat.AddMessage.Request") + proto.RegisterType((*RpcChatAddMessageResponse)(nil), "anytype.Rpc.Chat.AddMessage.Response") + proto.RegisterType((*RpcChatAddMessageResponseError)(nil), "anytype.Rpc.Chat.AddMessage.Response.Error") + proto.RegisterType((*RpcChatEditMessageContent)(nil), "anytype.Rpc.Chat.EditMessageContent") + proto.RegisterType((*RpcChatEditMessageContentRequest)(nil), "anytype.Rpc.Chat.EditMessageContent.Request") + proto.RegisterType((*RpcChatEditMessageContentResponse)(nil), "anytype.Rpc.Chat.EditMessageContent.Response") + proto.RegisterType((*RpcChatEditMessageContentResponseError)(nil), "anytype.Rpc.Chat.EditMessageContent.Response.Error") + proto.RegisterType((*RpcChatToggleMessageReaction)(nil), "anytype.Rpc.Chat.ToggleMessageReaction") + proto.RegisterType((*RpcChatToggleMessageReactionRequest)(nil), "anytype.Rpc.Chat.ToggleMessageReaction.Request") + proto.RegisterType((*RpcChatToggleMessageReactionResponse)(nil), "anytype.Rpc.Chat.ToggleMessageReaction.Response") + proto.RegisterType((*RpcChatToggleMessageReactionResponseError)(nil), "anytype.Rpc.Chat.ToggleMessageReaction.Response.Error") + proto.RegisterType((*RpcChatDeleteMessage)(nil), "anytype.Rpc.Chat.DeleteMessage") + proto.RegisterType((*RpcChatDeleteMessageRequest)(nil), "anytype.Rpc.Chat.DeleteMessage.Request") + proto.RegisterType((*RpcChatDeleteMessageResponse)(nil), "anytype.Rpc.Chat.DeleteMessage.Response") + proto.RegisterType((*RpcChatDeleteMessageResponseError)(nil), "anytype.Rpc.Chat.DeleteMessage.Response.Error") + proto.RegisterType((*RpcChatGetMessages)(nil), "anytype.Rpc.Chat.GetMessages") + proto.RegisterType((*RpcChatGetMessagesRequest)(nil), "anytype.Rpc.Chat.GetMessages.Request") + proto.RegisterType((*RpcChatGetMessagesResponse)(nil), "anytype.Rpc.Chat.GetMessages.Response") + proto.RegisterType((*RpcChatGetMessagesResponseError)(nil), "anytype.Rpc.Chat.GetMessages.Response.Error") + proto.RegisterType((*RpcChatGetMessagesByIds)(nil), "anytype.Rpc.Chat.GetMessagesByIds") + proto.RegisterType((*RpcChatGetMessagesByIdsRequest)(nil), "anytype.Rpc.Chat.GetMessagesByIds.Request") + proto.RegisterType((*RpcChatGetMessagesByIdsResponse)(nil), "anytype.Rpc.Chat.GetMessagesByIds.Response") + proto.RegisterType((*RpcChatGetMessagesByIdsResponseError)(nil), "anytype.Rpc.Chat.GetMessagesByIds.Response.Error") + proto.RegisterType((*RpcChatSubscribeLastMessages)(nil), "anytype.Rpc.Chat.SubscribeLastMessages") + proto.RegisterType((*RpcChatSubscribeLastMessagesRequest)(nil), "anytype.Rpc.Chat.SubscribeLastMessages.Request") + proto.RegisterType((*RpcChatSubscribeLastMessagesResponse)(nil), "anytype.Rpc.Chat.SubscribeLastMessages.Response") + proto.RegisterType((*RpcChatSubscribeLastMessagesResponseError)(nil), "anytype.Rpc.Chat.SubscribeLastMessages.Response.Error") + proto.RegisterType((*RpcChatUnsubscribe)(nil), "anytype.Rpc.Chat.Unsubscribe") + proto.RegisterType((*RpcChatUnsubscribeRequest)(nil), "anytype.Rpc.Chat.Unsubscribe.Request") + proto.RegisterType((*RpcChatUnsubscribeResponse)(nil), "anytype.Rpc.Chat.Unsubscribe.Response") + proto.RegisterType((*RpcChatUnsubscribeResponseError)(nil), "anytype.Rpc.Chat.Unsubscribe.Response.Error") proto.RegisterType((*Empty)(nil), "anytype.Empty") proto.RegisterType((*StreamRequest)(nil), "anytype.StreamRequest") proto.RegisterExtension(E_NoAuth) @@ -66378,1138 +68450,1166 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 18088 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7d, 0x9c, 0x24, 0x49, - 0x59, 0x2f, 0x8a, 0x4f, 0x55, 0x56, 0x55, 0x77, 0x47, 0xbf, 0x4c, 0x4d, 0xee, 0xcc, 0xec, 0x6c, - 0xec, 0x32, 0x3b, 0xcc, 0x2e, 0xcb, 0xba, 0x2c, 0x3d, 0xb0, 0x0b, 0xc2, 0x2e, 0xbb, 0xec, 0x56, - 0x57, 0x67, 0x77, 0x17, 0xdb, 0x5d, 0xd5, 0x64, 0x65, 0xcf, 0xb0, 0xfa, 0xf3, 0x57, 0x27, 0xa7, - 0x2a, 0xba, 0x3b, 0x77, 0xaa, 0x33, 0xcb, 0xac, 0xec, 0x9e, 0x19, 0xee, 0xe7, 0xdc, 0xa3, 0x22, - 0xb2, 0xbe, 0x70, 0x10, 0x91, 0xa3, 0x80, 0x80, 0x80, 0xe0, 0x01, 0x05, 0xe4, 0x65, 0x41, 0x10, - 0x51, 0x5e, 0x56, 0x10, 0x11, 0x11, 0x44, 0x01, 0xe5, 0x23, 0x08, 0x72, 0xf0, 0xdc, 0xc3, 0xf1, - 0xea, 0xe7, 0x08, 0x07, 0x85, 0xeb, 0xfd, 0xc4, 0x4b, 0x66, 0x46, 0x54, 0x57, 0x66, 0x45, 0x56, - 0x57, 0x56, 0x2f, 0x7a, 0xff, 0xcb, 0x8c, 0x8c, 0x8c, 0x78, 0xe2, 0xf9, 0x3e, 0x11, 0xf1, 0xc4, - 0x13, 0x4f, 0x3c, 0x01, 0x4e, 0x75, 0x2e, 0x9e, 0xeb, 0xb8, 0x8e, 0xe7, 0x74, 0xcf, 0x35, 0x9d, - 0x9d, 0x1d, 0xd3, 0x6e, 0x75, 0xe7, 0xc9, 0xbb, 0x3a, 0x61, 0xda, 0x57, 0xbd, 0xab, 0x1d, 0x04, - 0x6f, 0xee, 0x5c, 0xda, 0x3a, 0xd7, 0xb6, 0x2e, 0x9e, 0xeb, 0x5c, 0x3c, 0xb7, 0xe3, 0xb4, 0x50, - 0xdb, 0xff, 0x81, 0xbc, 0xb0, 0xec, 0xf0, 0xd6, 0xa8, 0x5c, 0x6d, 0xa7, 0x69, 0xb6, 0xbb, 0x9e, - 0xe3, 0x22, 0x96, 0xf3, 0x64, 0x58, 0x25, 0xda, 0x43, 0xb6, 0xe7, 0x97, 0x70, 0xc3, 0x96, 0xe3, - 0x6c, 0xb5, 0x11, 0xfd, 0x76, 0x71, 0x77, 0xf3, 0x5c, 0xd7, 0x73, 0x77, 0x9b, 0x1e, 0xfb, 0x7a, - 0xa6, 0xf7, 0x6b, 0x0b, 0x75, 0x9b, 0xae, 0xd5, 0xf1, 0x1c, 0x97, 0xe6, 0x38, 0xfb, 0xe2, 0x0f, - 0x4c, 0x00, 0x45, 0xef, 0x34, 0xe1, 0xb7, 0x26, 0x80, 0x52, 0xea, 0x74, 0xe0, 0xa3, 0x59, 0x00, - 0x96, 0x91, 0x77, 0x1e, 0xb9, 0x5d, 0xcb, 0xb1, 0xe1, 0x51, 0x30, 0xa1, 0xa3, 0x1f, 0xdd, 0x45, - 0x5d, 0xef, 0xee, 0xdc, 0xc3, 0x5f, 0x57, 0x32, 0xf0, 0x8d, 0x59, 0x30, 0xa9, 0xa3, 0x6e, 0xc7, - 0xb1, 0xbb, 0x48, 0xbd, 0x1f, 0xe4, 0x91, 0xeb, 0x3a, 0xee, 0xa9, 0xcc, 0x99, 0xcc, 0xad, 0xd3, - 0x77, 0xdc, 0x36, 0xcf, 0x9a, 0x3f, 0xaf, 0x77, 0x9a, 0xf3, 0xa5, 0x4e, 0x67, 0x3e, 0x2c, 0x69, - 0xde, 0xff, 0x69, 0x5e, 0xc3, 0x7f, 0xe8, 0xf4, 0x47, 0xf5, 0x14, 0x98, 0xd8, 0xa3, 0x19, 0x4e, - 0x65, 0xcf, 0x64, 0x6e, 0x9d, 0xd2, 0xfd, 0x57, 0xfc, 0xa5, 0x85, 0x3c, 0xd3, 0x6a, 0x77, 0x4f, - 0x29, 0xf4, 0x0b, 0x7b, 0x85, 0xaf, 0xcf, 0x80, 0x3c, 0x29, 0x44, 0x2d, 0x83, 0x5c, 0xd3, 0x69, - 0x21, 0x52, 0xfd, 0xdc, 0x1d, 0xe7, 0xe4, 0xab, 0x9f, 0x2f, 0x3b, 0x2d, 0xa4, 0x93, 0x9f, 0xd5, - 0x33, 0x60, 0xda, 0x67, 0x4b, 0x48, 0x06, 0x9f, 0x74, 0xf6, 0x0e, 0x90, 0xc3, 0xf9, 0xd5, 0x49, - 0x90, 0xab, 0x6e, 0xac, 0xae, 0x16, 0x8f, 0xa8, 0xc7, 0xc0, 0xec, 0x46, 0xf5, 0x81, 0x6a, 0xed, - 0x42, 0xb5, 0xa1, 0xe9, 0x7a, 0x4d, 0x2f, 0x66, 0xd4, 0x59, 0x30, 0xb5, 0x50, 0x5a, 0x6c, 0x54, - 0xaa, 0xeb, 0x1b, 0x46, 0x31, 0x0b, 0x5f, 0xa3, 0x80, 0xb9, 0x3a, 0xf2, 0x16, 0xd1, 0x9e, 0xd5, - 0x44, 0x75, 0xcf, 0xf4, 0x10, 0x7c, 0x49, 0x26, 0x60, 0xa6, 0xba, 0x81, 0x2b, 0x0d, 0x3e, 0xb1, - 0x06, 0xdc, 0xb9, 0xaf, 0x01, 0x62, 0x09, 0xf3, 0xec, 0xef, 0x79, 0x2e, 0x4d, 0xe7, 0xcb, 0x39, - 0xfb, 0x64, 0x30, 0xcd, 0x7d, 0x53, 0xe7, 0x00, 0x58, 0x28, 0x95, 0x1f, 0x58, 0xd6, 0x6b, 0x1b, - 0xd5, 0xc5, 0xe2, 0x11, 0xfc, 0xbe, 0x54, 0xd3, 0x35, 0xf6, 0x9e, 0x81, 0xdf, 0xc9, 0x70, 0x60, - 0x2e, 0x8a, 0x60, 0xce, 0x0f, 0x26, 0xa6, 0x0f, 0xa0, 0xf0, 0x4d, 0x01, 0x38, 0xcb, 0x02, 0x38, - 0x77, 0x26, 0x2b, 0x2e, 0x7d, 0x80, 0x5e, 0x98, 0x05, 0x93, 0xf5, 0xed, 0x5d, 0xaf, 0xe5, 0x5c, - 0xb6, 0xe1, 0x54, 0x80, 0x0c, 0xfc, 0x26, 0xcf, 0x93, 0x67, 0x8b, 0x3c, 0xb9, 0x75, 0x7f, 0x23, - 0x58, 0x09, 0x11, 0xdc, 0xf8, 0xd5, 0x80, 0x1b, 0x25, 0x81, 0x1b, 0x4f, 0x96, 0x2d, 0x28, 0x7d, - 0x3e, 0xfc, 0xfc, 0x9d, 0x20, 0x5f, 0xef, 0x98, 0x4d, 0x04, 0x3f, 0xa9, 0x80, 0x99, 0x55, 0x64, - 0xee, 0xa1, 0x52, 0xa7, 0xe3, 0x3a, 0x7b, 0x08, 0x96, 0x43, 0x79, 0x3d, 0x05, 0x26, 0xba, 0x38, - 0x53, 0xa5, 0x45, 0x5a, 0x30, 0xa5, 0xfb, 0xaf, 0xea, 0x69, 0x00, 0xac, 0x16, 0xb2, 0x3d, 0xcb, - 0xb3, 0x50, 0xf7, 0x54, 0xf6, 0x8c, 0x72, 0xeb, 0x94, 0xce, 0xa5, 0xc0, 0x6f, 0x65, 0x65, 0x65, - 0x8c, 0x50, 0x31, 0xcf, 0x53, 0x10, 0xc1, 0xd5, 0x37, 0x64, 0x65, 0x64, 0x6c, 0x60, 0x71, 0xc9, - 0x78, 0xfb, 0xb6, 0x4c, 0x72, 0xe6, 0xe2, 0x1c, 0xd5, 0x5a, 0xa3, 0xbe, 0x51, 0x5e, 0x69, 0xd4, - 0xd7, 0x4b, 0x65, 0xad, 0x88, 0xd4, 0xe3, 0xa0, 0x48, 0x1e, 0x1b, 0x95, 0x7a, 0x63, 0x51, 0x5b, - 0xd5, 0x0c, 0x6d, 0xb1, 0xb8, 0xa9, 0xaa, 0x60, 0x4e, 0xd7, 0x9e, 0xbb, 0xa1, 0xd5, 0x8d, 0xc6, - 0x52, 0xa9, 0xb2, 0xaa, 0x2d, 0x16, 0xb7, 0xf0, 0xcf, 0xab, 0x95, 0xb5, 0x8a, 0xd1, 0xd0, 0xb5, - 0x52, 0x79, 0x45, 0x5b, 0x2c, 0x6e, 0xab, 0xd7, 0x82, 0x6b, 0xaa, 0xb5, 0x46, 0x69, 0x7d, 0x5d, - 0xaf, 0x9d, 0xd7, 0x1a, 0xec, 0x8f, 0x7a, 0xd1, 0xa2, 0x15, 0x19, 0x8d, 0xfa, 0x4a, 0x49, 0xd7, - 0x4a, 0x0b, 0xab, 0x5a, 0xf1, 0x21, 0xf8, 0x02, 0x05, 0xcc, 0xae, 0x99, 0x97, 0x50, 0x7d, 0xdb, - 0x74, 0x91, 0x79, 0xb1, 0x8d, 0xe0, 0x4d, 0x12, 0x78, 0xc2, 0x4f, 0xf2, 0x78, 0x69, 0x22, 0x5e, - 0xe7, 0xfa, 0x30, 0x58, 0xa8, 0x22, 0x02, 0xb0, 0xff, 0x1d, 0x74, 0x83, 0x15, 0x01, 0xb0, 0xa7, - 0x25, 0x2c, 0x2f, 0x19, 0x62, 0x3f, 0xf1, 0x18, 0x40, 0x0c, 0x7e, 0x49, 0x01, 0x73, 0x15, 0x7b, - 0xcf, 0xf2, 0xd0, 0x32, 0xb2, 0x91, 0x8b, 0xe7, 0x01, 0x29, 0x18, 0xde, 0xa8, 0x70, 0x30, 0x2c, - 0x89, 0x30, 0x3c, 0xa5, 0x0f, 0xdb, 0xc4, 0x3a, 0x22, 0x66, 0xdb, 0x1b, 0xc0, 0x94, 0x45, 0xf2, - 0x95, 0xad, 0x16, 0xe3, 0x58, 0x98, 0xa0, 0xde, 0x0c, 0x66, 0xe9, 0xcb, 0x92, 0xd5, 0x46, 0x0f, - 0xa0, 0xab, 0x6c, 0xde, 0x15, 0x13, 0xe1, 0xcf, 0x05, 0x9d, 0xaf, 0x22, 0x60, 0xf9, 0xf4, 0xa4, - 0x44, 0x25, 0x03, 0xf3, 0xe5, 0x8f, 0x85, 0xee, 0xb7, 0xaf, 0x97, 0x59, 0xf0, 0x7b, 0x59, 0x30, - 0x5d, 0xf7, 0x9c, 0x0e, 0x16, 0x59, 0xcb, 0xde, 0x92, 0x03, 0xf7, 0xe3, 0x7c, 0x1f, 0x2b, 0x8b, - 0xe0, 0x3e, 0xb9, 0x0f, 0x1f, 0xb9, 0x0a, 0x22, 0x7a, 0xd8, 0xb7, 0x82, 0x1e, 0xb6, 0x24, 0xa0, - 0x72, 0x47, 0xa2, 0xd2, 0xbe, 0x0f, 0xfb, 0xd7, 0xcb, 0x15, 0x50, 0xf4, 0xc5, 0xcc, 0x2b, 0xef, - 0xba, 0x2e, 0xb2, 0x3d, 0x39, 0x10, 0xfe, 0x92, 0x07, 0x61, 0x45, 0x04, 0xe1, 0x8e, 0x18, 0x61, - 0xf6, 0x6b, 0x49, 0xb1, 0x8f, 0xfd, 0x7e, 0x80, 0xe6, 0x03, 0x02, 0x9a, 0xcf, 0x48, 0x4e, 0x56, - 0x32, 0x48, 0x57, 0x86, 0x40, 0xf4, 0x38, 0x28, 0xe2, 0x39, 0xa9, 0x6c, 0x54, 0xce, 0x6b, 0x8d, - 0x4a, 0xf5, 0x7c, 0xc5, 0xd0, 0x8a, 0x08, 0xbe, 0x4c, 0x01, 0x33, 0x94, 0x34, 0x1d, 0xed, 0x39, - 0x97, 0x24, 0x47, 0xbd, 0x2f, 0x25, 0x54, 0x16, 0xf8, 0x1a, 0x22, 0x7a, 0xc6, 0xcf, 0x24, 0x50, - 0x16, 0x62, 0x8a, 0x7b, 0x2c, 0x8d, 0x56, 0xfb, 0xba, 0xc1, 0x56, 0x9f, 0xde, 0xd2, 0x77, 0xb4, - 0x7a, 0x79, 0x0e, 0x00, 0xda, 0xc8, 0xf3, 0x16, 0xba, 0x0c, 0xd7, 0x42, 0x4c, 0x04, 0xb1, 0xcd, - 0x0c, 0x14, 0xdb, 0x6c, 0x3f, 0xb1, 0x7d, 0x2f, 0x3f, 0x67, 0x2d, 0x88, 0xe8, 0xdd, 0x1e, 0xc9, - 0x6e, 0x4c, 0x49, 0xf4, 0xea, 0xd0, 0x17, 0x94, 0xac, 0xa8, 0x75, 0xde, 0x00, 0xa6, 0xc8, 0x63, - 0xd5, 0xdc, 0x41, 0xac, 0x0f, 0x85, 0x09, 0xea, 0x59, 0x30, 0x43, 0x33, 0x36, 0x1d, 0x1b, 0xb7, - 0x27, 0x47, 0x32, 0x08, 0x69, 0x18, 0xc4, 0xa6, 0x8b, 0x4c, 0xcf, 0x71, 0x49, 0x19, 0x79, 0x0a, - 0x22, 0x97, 0x04, 0xbf, 0x11, 0xf4, 0x42, 0x4d, 0x90, 0x9c, 0xa7, 0x26, 0x69, 0x4a, 0x32, 0xb9, - 0xd9, 0x1b, 0xae, 0xff, 0xd1, 0x5e, 0xd7, 0xc0, 0x68, 0x2f, 0x91, 0xa5, 0x1d, 0x52, 0x4f, 0x02, - 0x95, 0xa5, 0xe2, 0xbc, 0xe5, 0x5a, 0xd5, 0xd0, 0xaa, 0x46, 0x71, 0xb3, 0xaf, 0x44, 0x6d, 0xc1, - 0x37, 0xe4, 0x40, 0xee, 0x39, 0x8e, 0x65, 0xc3, 0x17, 0x66, 0x04, 0x91, 0xb0, 0x91, 0x77, 0xd9, - 0x71, 0x2f, 0x05, 0x1d, 0x35, 0x4c, 0x88, 0xc7, 0x26, 0x14, 0x25, 0x65, 0xa0, 0x28, 0xe5, 0xfa, - 0x89, 0xd2, 0x2f, 0xf0, 0xa2, 0x74, 0x8f, 0x28, 0x4a, 0xb7, 0xf4, 0xe1, 0x3f, 0x26, 0x3e, 0x62, - 0x00, 0xf8, 0x58, 0x30, 0x00, 0xdc, 0x27, 0xc0, 0xf8, 0x24, 0xb9, 0x62, 0x92, 0x01, 0xf8, 0xc5, - 0x54, 0x3b, 0x7e, 0x3f, 0xa8, 0xb7, 0x22, 0xa0, 0xde, 0xee, 0x33, 0x26, 0x58, 0xfb, 0x87, 0x8e, - 0x87, 0xf6, 0x0f, 0x13, 0x97, 0xd4, 0x13, 0xe0, 0xd8, 0x62, 0x65, 0x69, 0x49, 0xd3, 0xb5, 0xaa, - 0xd1, 0xa8, 0x6a, 0xc6, 0x85, 0x9a, 0xfe, 0x40, 0xb1, 0x0d, 0x5f, 0xaf, 0x00, 0x80, 0x39, 0x54, - 0x36, 0xed, 0x26, 0x6a, 0xcb, 0x8d, 0xe8, 0xff, 0x33, 0x9b, 0x6c, 0x4c, 0x08, 0xcb, 0x8f, 0x80, - 0xf3, 0xd5, 0x59, 0xf9, 0x5e, 0x19, 0x59, 0x58, 0x32, 0x50, 0xdf, 0xf2, 0x58, 0xd0, 0x3d, 0xaf, - 0x01, 0x47, 0xfd, 0xf2, 0x58, 0xf6, 0xfe, 0xcb, 0xbe, 0xb7, 0xe7, 0xc0, 0x1c, 0x83, 0xc5, 0x5f, - 0xc7, 0x3f, 0x9c, 0x91, 0x59, 0xc8, 0x43, 0x30, 0xc9, 0x96, 0xed, 0xfe, 0xf0, 0x1e, 0xbc, 0xab, - 0xcb, 0x60, 0xba, 0x83, 0xdc, 0x1d, 0xab, 0xdb, 0xb5, 0x1c, 0x9b, 0x1a, 0xe4, 0xe6, 0xee, 0x78, - 0x42, 0xc0, 0x71, 0x62, 0xbb, 0x9c, 0x5f, 0x37, 0x5d, 0xcf, 0x6a, 0x5a, 0x1d, 0xd3, 0xf6, 0xd6, - 0xc3, 0xcc, 0x3a, 0xff, 0x27, 0x7c, 0x69, 0xc2, 0x65, 0x8d, 0xd8, 0x92, 0x08, 0x91, 0xf8, 0x40, - 0x82, 0x25, 0x49, 0x6c, 0x81, 0xc9, 0xc4, 0xe2, 0xd1, 0x54, 0xc5, 0xa2, 0x0f, 0xde, 0x5b, 0xea, - 0x75, 0xe0, 0x44, 0xa5, 0x5a, 0xae, 0xe9, 0xba, 0x56, 0x36, 0x1a, 0xeb, 0x9a, 0xbe, 0x56, 0xa9, - 0xd7, 0x2b, 0xb5, 0x6a, 0xfd, 0x20, 0xbd, 0x1d, 0x7e, 0x42, 0x09, 0x24, 0x66, 0x11, 0x35, 0xdb, - 0x96, 0x8d, 0xe0, 0x7d, 0x07, 0x14, 0x18, 0xd1, 0xea, 0x23, 0x8f, 0x33, 0xab, 0x3f, 0x02, 0xe7, - 0xd7, 0x25, 0xc7, 0xb9, 0x7f, 0x81, 0xff, 0x86, 0xbb, 0xff, 0x97, 0x14, 0x70, 0x8c, 0xeb, 0x88, - 0x3a, 0xda, 0x19, 0x99, 0x25, 0xef, 0x27, 0xf8, 0xbe, 0x5b, 0x11, 0x31, 0xed, 0xa7, 0x4d, 0xef, - 0x23, 0x23, 0x02, 0xd6, 0xb7, 0x04, 0xb0, 0xae, 0x0a, 0xb0, 0x3e, 0x73, 0x88, 0x32, 0x93, 0x21, - 0xfb, 0x5b, 0xa9, 0x22, 0x7b, 0x1d, 0x38, 0xb1, 0x5e, 0xd2, 0x8d, 0x4a, 0xb9, 0xb2, 0x5e, 0xc2, - 0xf3, 0x28, 0x37, 0x65, 0x47, 0xa8, 0xeb, 0x22, 0xe8, 0x7d, 0xf1, 0xfd, 0xbd, 0x1c, 0xb8, 0xa1, - 0xff, 0x40, 0x5b, 0xde, 0x36, 0xed, 0x2d, 0x04, 0x2d, 0x19, 0xa8, 0x17, 0xc1, 0x44, 0x93, 0x64, - 0xa7, 0x38, 0xf3, 0x5b, 0x37, 0x31, 0x63, 0x39, 0xad, 0x41, 0xf7, 0x7f, 0x85, 0xef, 0xe2, 0x05, - 0xc2, 0x10, 0x05, 0xe2, 0xd9, 0xf1, 0xe0, 0xed, 0xa3, 0x3b, 0x42, 0x36, 0x3e, 0x1d, 0xc8, 0xc6, - 0x05, 0x41, 0x36, 0xca, 0x07, 0x2b, 0x3e, 0x99, 0x98, 0xfc, 0xd1, 0x63, 0x61, 0x00, 0x88, 0x94, - 0x26, 0x2b, 0x7a, 0x56, 0xe8, 0x3b, 0xdc, 0xbf, 0x56, 0x01, 0x85, 0x45, 0xd4, 0x46, 0xb2, 0x96, - 0xc8, 0xbf, 0xcf, 0xca, 0x6e, 0x88, 0x50, 0x18, 0x68, 0xd9, 0xd1, 0xd6, 0x11, 0xcf, 0xda, 0x41, - 0x5d, 0xcf, 0xdc, 0xe9, 0x10, 0x56, 0x2b, 0x7a, 0x98, 0x00, 0x7f, 0x32, 0x2b, 0xb3, 0x5d, 0x12, - 0x53, 0xcd, 0xbf, 0x0d, 0x9b, 0xe2, 0x57, 0xe7, 0x40, 0xe1, 0x82, 0xd9, 0x6e, 0x23, 0x0f, 0x7e, - 0x2d, 0x0b, 0x0a, 0x65, 0xbc, 0x26, 0x45, 0xf0, 0x49, 0x21, 0x58, 0x10, 0x4c, 0xba, 0x8e, 0xe3, - 0xad, 0x9b, 0xde, 0x36, 0x43, 0x2b, 0x78, 0x67, 0xdb, 0xb4, 0xbf, 0xc9, 0x83, 0x76, 0x9f, 0x08, - 0xda, 0x0f, 0x08, 0xdc, 0xa4, 0x15, 0xcd, 0xd3, 0x4a, 0x22, 0x50, 0x83, 0x60, 0x72, 0xc7, 0x46, - 0x3b, 0x8e, 0x6d, 0x35, 0xfd, 0x99, 0xde, 0x7f, 0x87, 0x1f, 0x0e, 0x56, 0xc9, 0x0b, 0x02, 0x66, - 0xf3, 0xd2, 0xb5, 0x24, 0x03, 0xad, 0x3e, 0x04, 0x66, 0x37, 0x82, 0xeb, 0x29, 0x04, 0x0d, 0xa3, - 0xd6, 0x28, 0xeb, 0x5a, 0xc9, 0xd0, 0x1a, 0xab, 0xb5, 0x72, 0x69, 0xb5, 0xa1, 0x6b, 0xeb, 0xb5, - 0x22, 0x82, 0xff, 0x2d, 0x8b, 0x99, 0xdb, 0x74, 0xf6, 0x90, 0x0b, 0x97, 0xa5, 0xf8, 0x1c, 0xc7, - 0x13, 0x86, 0xc1, 0x2f, 0x48, 0x6f, 0x95, 0x33, 0xee, 0x30, 0x0a, 0x22, 0x86, 0xc2, 0x8f, 0x48, - 0x6d, 0x7b, 0xc7, 0x16, 0xf5, 0x18, 0xe0, 0xf4, 0xff, 0xca, 0x82, 0x89, 0xb2, 0x63, 0xef, 0x21, - 0xd7, 0xe3, 0xb5, 0x4c, 0x9e, 0x9b, 0x19, 0x91, 0x9b, 0x78, 0x68, 0x42, 0xb6, 0xe7, 0x3a, 0x1d, - 0x5f, 0xcd, 0xf4, 0x5f, 0xe1, 0xaf, 0x27, 0xe5, 0x30, 0xab, 0x39, 0xda, 0xdc, 0xd4, 0xbf, 0x22, - 0x81, 0x3c, 0xa5, 0xa7, 0x03, 0xbc, 0x3e, 0x09, 0x2e, 0xfd, 0x09, 0x48, 0x7f, 0x97, 0xf7, 0xcb, - 0x0a, 0x98, 0xa5, 0x9d, 0xaf, 0x8e, 0xc8, 0xbc, 0x08, 0x6b, 0xbc, 0xa1, 0xa7, 0x87, 0xf9, 0x2b, - 0x47, 0x04, 0xf6, 0x17, 0xcc, 0x4e, 0x27, 0x30, 0xfa, 0xad, 0x1c, 0xd1, 0xd9, 0x3b, 0x15, 0xf3, - 0x85, 0x02, 0xc8, 0x99, 0xbb, 0xde, 0x36, 0xfc, 0x9e, 0xb4, 0xca, 0x2f, 0x0c, 0x06, 0x8c, 0x9e, - 0x08, 0x48, 0x8e, 0x83, 0xbc, 0xe7, 0x5c, 0x42, 0x3e, 0x1f, 0xe8, 0x0b, 0x86, 0xc3, 0xec, 0x74, - 0x0c, 0xf2, 0x81, 0xc1, 0xe1, 0xbf, 0xe3, 0x19, 0xc6, 0x6c, 0x36, 0x9d, 0x5d, 0xdb, 0xab, 0xf8, - 0x86, 0xbf, 0x30, 0x01, 0x7e, 0x3e, 0x23, 0xb3, 0x84, 0x90, 0x20, 0x30, 0x19, 0x64, 0x17, 0x87, - 0xe8, 0x4a, 0xf3, 0xe0, 0xb6, 0xd2, 0xfa, 0x7a, 0xc3, 0xa8, 0x3d, 0xa0, 0x55, 0xc3, 0xe9, 0xbe, - 0x51, 0xa9, 0x36, 0x8c, 0x15, 0xad, 0x51, 0xde, 0xd0, 0x89, 0x75, 0xa6, 0x54, 0x2e, 0xd7, 0x36, - 0xaa, 0x46, 0x11, 0xc1, 0xb7, 0x66, 0xc1, 0x4c, 0xb9, 0xed, 0x74, 0x03, 0x84, 0x6f, 0x0c, 0x11, - 0x0e, 0xd8, 0x98, 0xe1, 0xd8, 0x08, 0xff, 0x25, 0x23, 0xbb, 0xd5, 0xeb, 0x33, 0x84, 0x2b, 0x3e, - 0x62, 0x94, 0xfa, 0x75, 0xa9, 0xad, 0xde, 0xc1, 0xe5, 0xa5, 0xdf, 0x25, 0x3e, 0x7b, 0x37, 0x98, - 0x28, 0x51, 0xc1, 0x80, 0x7f, 0x9d, 0x01, 0x85, 0xb2, 0x63, 0x6f, 0x5a, 0x5b, 0xea, 0x2d, 0x60, - 0x0e, 0xd9, 0xe6, 0xc5, 0x36, 0x5a, 0x34, 0x3d, 0x73, 0xcf, 0x42, 0x97, 0x49, 0x03, 0x26, 0xf5, - 0x9e, 0x54, 0x4c, 0x14, 0x4b, 0x41, 0x17, 0x77, 0xb7, 0x08, 0x51, 0x93, 0x3a, 0x9f, 0xa4, 0x3e, - 0x13, 0x5c, 0x4b, 0x5f, 0xd7, 0x5d, 0xe4, 0xa2, 0x36, 0x32, 0xbb, 0x08, 0x2b, 0xa3, 0x36, 0x6a, - 0x13, 0xa1, 0x9d, 0xd4, 0xa3, 0x3e, 0xab, 0x67, 0xc1, 0x0c, 0xfd, 0x44, 0x54, 0x9d, 0x2e, 0x11, - 0xe3, 0x49, 0x5d, 0x48, 0x53, 0x9f, 0x0c, 0xf2, 0xe8, 0x8a, 0xe7, 0x9a, 0xa7, 0x5a, 0x04, 0xaf, - 0x6b, 0xe7, 0xa9, 0xaf, 0xd7, 0xbc, 0xef, 0xeb, 0x35, 0x5f, 0x27, 0x9e, 0x60, 0x3a, 0xcd, 0x05, - 0x7f, 0x65, 0x32, 0x50, 0x24, 0xfe, 0x35, 0x1b, 0x0a, 0x86, 0x0a, 0x72, 0xb6, 0xb9, 0x83, 0x98, - 0x5c, 0x90, 0x67, 0xf5, 0x36, 0x70, 0xd4, 0xdc, 0x33, 0x3d, 0xd3, 0x5d, 0x75, 0x9a, 0x66, 0x9b, - 0x4c, 0x7e, 0x7e, 0xcf, 0xef, 0xfd, 0x40, 0xec, 0xf0, 0x9e, 0xe3, 0x22, 0x92, 0xcb, 0xb7, 0xc3, - 0xfb, 0x09, 0xb8, 0x74, 0xab, 0xe9, 0xd8, 0x84, 0x7e, 0x45, 0x27, 0xcf, 0x98, 0x2b, 0x2d, 0xab, - 0x8b, 0x1b, 0x42, 0x4a, 0xa9, 0x52, 0x83, 0x72, 0xfd, 0xaa, 0xdd, 0x24, 0x36, 0xf8, 0x49, 0x3d, - 0xea, 0xb3, 0xba, 0x00, 0xa6, 0x99, 0xf9, 0x79, 0x0d, 0xcb, 0x55, 0x81, 0xc8, 0xd5, 0x19, 0xd1, - 0x93, 0x86, 0xe2, 0x39, 0x5f, 0x0d, 0xf3, 0xe9, 0xfc, 0x4f, 0xea, 0xfd, 0xe0, 0x7a, 0xf6, 0x5a, - 0xde, 0xed, 0x7a, 0xce, 0x0e, 0x05, 0x7d, 0xc9, 0x6a, 0xd3, 0x16, 0x4c, 0x90, 0x16, 0xc4, 0x65, - 0x51, 0xef, 0x00, 0xc7, 0x3b, 0x2e, 0xda, 0x44, 0xee, 0x83, 0xe6, 0xce, 0xee, 0x15, 0xc3, 0x35, - 0xed, 0x6e, 0xc7, 0x71, 0xbd, 0x53, 0x93, 0x84, 0xf8, 0xbe, 0xdf, 0xd8, 0x40, 0x39, 0x09, 0x0a, - 0x94, 0x7d, 0xf0, 0x25, 0x79, 0x69, 0x27, 0x3a, 0xd6, 0xa0, 0x58, 0xf5, 0xec, 0x29, 0x60, 0x82, - 0x8d, 0x70, 0x04, 0xa8, 0xe9, 0x3b, 0x4e, 0xf6, 0xac, 0xe6, 0x58, 0x29, 0xba, 0x9f, 0x4d, 0xbd, - 0x13, 0x14, 0x9a, 0xa4, 0x59, 0x04, 0xb3, 0xe9, 0x3b, 0xae, 0xef, 0x5f, 0x29, 0xc9, 0xa2, 0xb3, - 0xac, 0xf0, 0x0b, 0x8a, 0x94, 0xdf, 0x5d, 0x1c, 0xc5, 0xc9, 0x7a, 0xf5, 0x37, 0xb2, 0x43, 0x0c, - 0x9b, 0xb7, 0x83, 0x5b, 0xd9, 0x98, 0xc8, 0xf4, 0x8f, 0xc5, 0xc6, 0xc2, 0x86, 0xaf, 0x82, 0x63, - 0xad, 0xa4, 0x6e, 0x94, 0x74, 0xbc, 0x7e, 0x5a, 0xc4, 0xaa, 0xfb, 0x6d, 0xe0, 0x96, 0x01, 0xb9, - 0x35, 0xa3, 0x51, 0x2d, 0xad, 0x69, 0xc5, 0x4d, 0x51, 0xb7, 0xa9, 0x1b, 0xb5, 0xf5, 0x86, 0xbe, - 0x51, 0xad, 0x56, 0xaa, 0xcb, 0xb4, 0x30, 0xac, 0x12, 0x9e, 0x0c, 0x33, 0x5c, 0xd0, 0x2b, 0x86, - 0xd6, 0x28, 0xd7, 0xaa, 0x4b, 0x95, 0xe5, 0xa2, 0x35, 0x48, 0x31, 0x7a, 0x48, 0x3d, 0x03, 0x6e, - 0x10, 0x28, 0xa9, 0xd4, 0xaa, 0x78, 0x3d, 0x51, 0x2e, 0x55, 0xcb, 0x1a, 0x5e, 0x3c, 0x5c, 0x52, - 0x21, 0x38, 0x41, 0x8b, 0x6b, 0x2c, 0x55, 0x56, 0xf9, 0x2d, 0x80, 0x8f, 0x67, 0xd4, 0x53, 0xe0, - 0x1a, 0xfe, 0x5b, 0xa5, 0x7a, 0xbe, 0xb4, 0x5a, 0x59, 0x2c, 0xfe, 0x61, 0x46, 0xbd, 0x19, 0xdc, - 0x28, 0xfc, 0x45, 0xad, 0xf9, 0x8d, 0xca, 0x62, 0x63, 0xad, 0x52, 0x5f, 0x2b, 0x19, 0xe5, 0x95, - 0xe2, 0x27, 0xc8, 0x7a, 0x21, 0x50, 0x80, 0x39, 0x67, 0xb8, 0x97, 0xf3, 0x73, 0x7a, 0x49, 0x14, - 0xd4, 0x27, 0xf5, 0x85, 0x3d, 0x5e, 0x87, 0x7d, 0x34, 0x98, 0x1d, 0x16, 0x05, 0x11, 0x7a, 0x4a, - 0x82, 0xb2, 0x92, 0xc9, 0x90, 0x31, 0x84, 0x08, 0x9d, 0x01, 0x37, 0x54, 0x35, 0x8a, 0x94, 0xae, - 0x95, 0x6b, 0xe7, 0x35, 0xbd, 0x71, 0xa1, 0xb4, 0xba, 0xaa, 0x19, 0x8d, 0xa5, 0x8a, 0x5e, 0x37, - 0x8a, 0x9b, 0xf0, 0x9f, 0xb2, 0xc1, 0x1a, 0x9a, 0xe3, 0xd6, 0x5f, 0x67, 0x93, 0x76, 0xeb, 0xd8, - 0xb5, 0xf2, 0xd3, 0x41, 0xa1, 0xeb, 0x99, 0xde, 0x6e, 0x97, 0xf5, 0xea, 0xc7, 0xf5, 0xef, 0xd5, - 0xf3, 0x75, 0x92, 0x49, 0x67, 0x99, 0xe1, 0x17, 0x32, 0x49, 0xba, 0xe9, 0x08, 0x96, 0xd1, 0xd6, - 0x10, 0x2c, 0x3e, 0x0d, 0xa0, 0x2f, 0xed, 0x95, 0x7a, 0xa3, 0xb4, 0xaa, 0x6b, 0xa5, 0xc5, 0x07, - 0x83, 0xc5, 0x33, 0x52, 0x4f, 0x80, 0x63, 0x1b, 0x55, 0xbc, 0x1c, 0x26, 0xdd, 0xa5, 0x56, 0xad, - 0x6a, 0x65, 0xcc, 0xf7, 0x9f, 0x24, 0xa6, 0x6a, 0xac, 0x41, 0x13, 0xba, 0xb1, 0x96, 0xc3, 0xf1, - 0xff, 0xeb, 0xd2, 0x1e, 0x1d, 0xa1, 0x84, 0xf1, 0x65, 0x8d, 0x16, 0x87, 0xcf, 0x4b, 0x39, 0x71, - 0x48, 0x51, 0x92, 0x0c, 0x8f, 0xff, 0x30, 0x04, 0x1e, 0x27, 0xc0, 0x31, 0x1e, 0x0f, 0xe2, 0xcc, - 0x11, 0x0d, 0xc3, 0x57, 0x26, 0x41, 0xa1, 0x8e, 0xda, 0xa8, 0xe9, 0xc1, 0xb7, 0x73, 0xca, 0xc4, - 0x1c, 0xc8, 0x06, 0xce, 0x03, 0x59, 0xab, 0x25, 0x2c, 0x9f, 0xb3, 0x3d, 0xcb, 0xe7, 0x18, 0x35, - 0x40, 0x49, 0xa4, 0x06, 0xe4, 0x52, 0x50, 0x03, 0xf2, 0xc3, 0xab, 0x01, 0x85, 0x41, 0x6a, 0x00, - 0xfc, 0xb5, 0x42, 0xd2, 0x51, 0x82, 0xb2, 0xfa, 0x70, 0x27, 0xff, 0xff, 0x99, 0x4b, 0x32, 0xaa, - 0xf4, 0xa5, 0x38, 0x99, 0x14, 0x7f, 0x4f, 0x49, 0xc1, 0xfc, 0xa0, 0xde, 0x04, 0x6e, 0x0c, 0xdf, - 0x1b, 0xda, 0xf3, 0x2a, 0x75, 0xa3, 0x4e, 0x66, 0xfc, 0x72, 0x4d, 0xd7, 0x37, 0xd6, 0xa9, 0xe5, - 0xee, 0x24, 0x50, 0xc3, 0x52, 0xf4, 0x8d, 0x2a, 0x9d, 0xdf, 0xb7, 0xc4, 0xd2, 0x97, 0x2a, 0xd5, - 0xc5, 0x46, 0xd0, 0x67, 0xaa, 0x4b, 0xb5, 0xe2, 0x36, 0x5e, 0xb2, 0x71, 0xa5, 0xe3, 0x09, 0x9a, - 0xd5, 0x50, 0xaa, 0x2e, 0x36, 0xd6, 0xaa, 0xda, 0x5a, 0xad, 0x5a, 0x29, 0x93, 0xf4, 0xba, 0x66, - 0x14, 0x2d, 0x3c, 0xd1, 0xf4, 0x68, 0x14, 0x75, 0xad, 0xa4, 0x97, 0x57, 0x34, 0x9d, 0x56, 0xf9, - 0x90, 0x7a, 0x0b, 0x38, 0x5b, 0xaa, 0xd6, 0x0c, 0x9c, 0x52, 0xaa, 0x3e, 0x68, 0x3c, 0xb8, 0xae, - 0x35, 0xd6, 0xf5, 0x5a, 0x59, 0xab, 0xd7, 0x71, 0x3f, 0x65, 0xfa, 0x47, 0xb1, 0xad, 0x3e, 0x1b, - 0xdc, 0xcd, 0x91, 0xa6, 0x19, 0x64, 0x9b, 0x68, 0xad, 0x46, 0x3c, 0x05, 0x16, 0xb5, 0xc6, 0x4a, - 0xa9, 0xde, 0xa8, 0x54, 0xcb, 0xb5, 0xb5, 0xf5, 0x92, 0x51, 0xc1, 0xdd, 0x79, 0x5d, 0xaf, 0x19, - 0xb5, 0xc6, 0x79, 0x4d, 0xaf, 0x57, 0x6a, 0xd5, 0xa2, 0x8d, 0x9b, 0xcc, 0xf5, 0x7f, 0x7f, 0x1c, - 0x76, 0xd4, 0x1b, 0xc0, 0x29, 0x3f, 0x7d, 0xb5, 0x86, 0x19, 0xcd, 0x69, 0x24, 0x9d, 0x54, 0x35, - 0x92, 0x7f, 0xce, 0x82, 0x5c, 0xdd, 0x73, 0x3a, 0xf0, 0x07, 0xc2, 0x01, 0xe6, 0x34, 0x00, 0x2e, - 0xd9, 0xf5, 0xc1, 0xab, 0x30, 0xb6, 0x2e, 0xe3, 0x52, 0xe0, 0x1f, 0x48, 0x9b, 0xaa, 0xc3, 0x31, - 0xdb, 0xe9, 0x44, 0xe8, 0x2a, 0xdf, 0x91, 0xf3, 0xdd, 0x8f, 0x2e, 0x28, 0x99, 0xbc, 0xff, 0xcc, - 0x30, 0xc6, 0x68, 0x08, 0x4e, 0x72, 0xb0, 0x61, 0xfe, 0xfb, 0x22, 0x81, 0xd4, 0x6b, 0xc1, 0x35, - 0x3d, 0xc2, 0x45, 0x64, 0x6a, 0x53, 0x7d, 0x3c, 0x78, 0x1c, 0x27, 0xde, 0xda, 0x5a, 0xed, 0xbc, - 0x16, 0x08, 0xf2, 0x62, 0xc9, 0x28, 0x15, 0xb7, 0xe0, 0x67, 0x15, 0x90, 0x5b, 0x73, 0xf6, 0x7a, - 0x77, 0x08, 0x6c, 0x74, 0x99, 0xb3, 0x85, 0xfa, 0xaf, 0xa2, 0xaf, 0xb2, 0x14, 0xdb, 0xd7, 0xa2, - 0x77, 0x03, 0x3f, 0x9f, 0x4d, 0xc2, 0xf6, 0xb5, 0x83, 0x6e, 0x01, 0xfe, 0xdd, 0x30, 0x6c, 0x8f, - 0x60, 0x2d, 0x52, 0xcf, 0x82, 0xd3, 0xe1, 0x87, 0xca, 0xa2, 0x56, 0x35, 0x2a, 0x4b, 0x0f, 0x86, - 0xcc, 0xad, 0xe8, 0x52, 0xec, 0x1f, 0x34, 0x8c, 0xc5, 0xaf, 0x34, 0x4e, 0x81, 0xe3, 0xe1, 0xb7, - 0x65, 0xcd, 0xf0, 0xbf, 0x3c, 0x04, 0x5f, 0x98, 0x07, 0x33, 0x74, 0x58, 0xdf, 0xe8, 0xb4, 0x4c, - 0x0f, 0xc1, 0x3b, 0x43, 0x74, 0x6f, 0x05, 0x47, 0x2b, 0xeb, 0x4b, 0xf5, 0xba, 0xe7, 0xb8, 0xe6, - 0x16, 0x2a, 0xb5, 0x5a, 0x2e, 0xe3, 0x56, 0x6f, 0x32, 0x7c, 0x44, 0xda, 0xce, 0x27, 0x4e, 0x25, - 0xb4, 0xce, 0x08, 0xd4, 0xbf, 0x2c, 0x65, 0x97, 0x93, 0x28, 0x30, 0x19, 0xfa, 0x0f, 0x8d, 0xb8, - 0xcf, 0x45, 0xe3, 0xb2, 0x79, 0xf6, 0x45, 0x59, 0x30, 0x65, 0x58, 0x3b, 0xe8, 0xf9, 0x8e, 0x8d, - 0xba, 0xea, 0x04, 0x50, 0x96, 0xd7, 0x8c, 0xe2, 0x11, 0xfc, 0x80, 0x95, 0xaa, 0x0c, 0x79, 0xd0, - 0x70, 0x05, 0xf8, 0xa1, 0x64, 0x14, 0x15, 0xfc, 0xb0, 0xa6, 0x19, 0xc5, 0x1c, 0x7e, 0xa8, 0x6a, - 0x46, 0x31, 0x8f, 0x1f, 0xd6, 0x57, 0x8d, 0x62, 0x01, 0x3f, 0x54, 0xea, 0x46, 0x71, 0x02, 0x3f, - 0x2c, 0xd4, 0x8d, 0xe2, 0x24, 0x7e, 0x38, 0x5f, 0x37, 0x8a, 0x53, 0xf8, 0xa1, 0x6c, 0x18, 0x45, - 0x80, 0x1f, 0x9e, 0x53, 0x37, 0x8a, 0xd3, 0xf8, 0xa1, 0x54, 0x36, 0x8a, 0x33, 0xe4, 0x41, 0x33, - 0x8a, 0xb3, 0xf8, 0xa1, 0x5e, 0x37, 0x8a, 0x73, 0xa4, 0xe4, 0xba, 0x51, 0x3c, 0x4a, 0xea, 0xaa, - 0x18, 0xc5, 0x22, 0x7e, 0x58, 0xa9, 0x1b, 0xc5, 0x63, 0x24, 0x73, 0xdd, 0x28, 0xaa, 0xa4, 0xd2, - 0xba, 0x51, 0xbc, 0x86, 0xe4, 0xa9, 0x1b, 0xc5, 0xe3, 0xa4, 0x8a, 0xba, 0x51, 0x3c, 0x41, 0xc8, - 0xd0, 0x8c, 0xe2, 0x49, 0x92, 0x47, 0x37, 0x8a, 0xd7, 0x92, 0x4f, 0x55, 0xa3, 0x78, 0x8a, 0x10, - 0xa6, 0x19, 0xc5, 0xeb, 0xc8, 0x83, 0x6e, 0x14, 0x21, 0xf9, 0x54, 0x32, 0x8a, 0xd7, 0xc3, 0xc7, - 0x81, 0xa9, 0x65, 0xe4, 0x51, 0x10, 0x61, 0x11, 0x28, 0xcb, 0xc8, 0xe3, 0xd5, 0xf8, 0xaf, 0x2a, - 0xe0, 0x5a, 0xb6, 0xf4, 0x5b, 0x72, 0x9d, 0x9d, 0x55, 0xb4, 0x65, 0x36, 0xaf, 0x6a, 0x57, 0xb0, - 0x0a, 0x05, 0xeb, 0x82, 0xe9, 0xaa, 0x13, 0x0e, 0x46, 0xe4, 0x39, 0x56, 0xe3, 0xf4, 0x8d, 0x51, - 0x4a, 0x68, 0x8c, 0x62, 0x1a, 0xd9, 0x3f, 0xf2, 0x12, 0x2d, 0xd8, 0x8f, 0x33, 0x3d, 0xf6, 0x63, - 0xdc, 0x4d, 0x3a, 0xc8, 0xed, 0x3a, 0xb6, 0xd9, 0xae, 0xb3, 0xed, 0x52, 0x6a, 0xf5, 0xea, 0x4d, - 0x56, 0x9f, 0xeb, 0xf7, 0x0c, 0xaa, 0x95, 0x3d, 0x2b, 0x6e, 0x85, 0xdb, 0xdb, 0xcc, 0x88, 0x4e, - 0xf2, 0x89, 0xa0, 0x93, 0x18, 0x42, 0x27, 0xb9, 0xff, 0x00, 0x65, 0x27, 0xeb, 0x2f, 0x95, 0xe1, - 0x96, 0x16, 0xa1, 0x33, 0xa1, 0x6f, 0xae, 0x56, 0xe0, 0x67, 0xb3, 0xe0, 0xa4, 0x66, 0xf7, 0xd3, - 0xf0, 0x79, 0x59, 0x78, 0x2b, 0x0f, 0xcd, 0xba, 0xc8, 0xd2, 0xbb, 0xfb, 0x36, 0xbb, 0x7f, 0x99, - 0x11, 0x1c, 0xfd, 0x54, 0xc0, 0xd1, 0xba, 0xc0, 0xd1, 0xfb, 0x86, 0x2f, 0x3a, 0x19, 0x43, 0xab, - 0x23, 0x1d, 0x80, 0x72, 0xf0, 0x1b, 0x39, 0xf0, 0x38, 0xea, 0xf1, 0xc0, 0x28, 0xa4, 0xbd, 0xac, - 0x64, 0xb7, 0x74, 0xd4, 0xf5, 0x4c, 0xd7, 0x13, 0x4e, 0xa1, 0xf6, 0x2c, 0xa5, 0x32, 0x29, 0x2c, - 0xa5, 0xb2, 0x03, 0x97, 0x52, 0xf0, 0xdd, 0xbc, 0xfa, 0x70, 0x41, 0xc4, 0xb8, 0xd4, 0x7f, 0xfc, - 0x8f, 0x6b, 0x61, 0x14, 0xd4, 0x81, 0x5e, 0xf1, 0x43, 0x02, 0xd4, 0x4b, 0x07, 0xae, 0x21, 0x19, - 0xe2, 0x7f, 0x30, 0x5a, 0x3d, 0x2f, 0xc7, 0x7f, 0x13, 0x95, 0x92, 0x62, 0x2b, 0x55, 0x05, 0xfd, - 0xd3, 0x13, 0x60, 0x8a, 0xf4, 0x85, 0x55, 0xcb, 0xbe, 0x04, 0x5f, 0xaf, 0x80, 0x99, 0x2a, 0xba, - 0x5c, 0xde, 0x36, 0xdb, 0x6d, 0x64, 0x6f, 0x21, 0x5e, 0x6d, 0x3f, 0x05, 0x26, 0xcc, 0x4e, 0xa7, - 0x1a, 0xee, 0x33, 0xf8, 0xaf, 0x6c, 0xfc, 0xfd, 0x7a, 0xdf, 0x4e, 0x9e, 0x89, 0xe9, 0xe4, 0x41, - 0xbd, 0xf3, 0x7c, 0x9d, 0x11, 0x2b, 0xe4, 0x33, 0x60, 0xba, 0xe9, 0x67, 0x09, 0xbc, 0xd5, 0xf9, - 0x24, 0xf8, 0xb7, 0x89, 0x86, 0x01, 0xa9, 0xca, 0x93, 0x09, 0x05, 0x1a, 0xb1, 0x1e, 0x72, 0x02, - 0x1c, 0x33, 0x6a, 0xb5, 0xc6, 0x5a, 0xa9, 0xfa, 0x60, 0x78, 0x4a, 0x74, 0x13, 0xbe, 0x3a, 0x07, - 0xe6, 0xea, 0x4e, 0x7b, 0x0f, 0x85, 0x30, 0x55, 0x42, 0x98, 0x7a, 0xf8, 0x94, 0xd9, 0xc7, 0x27, - 0xf5, 0x24, 0x28, 0x98, 0x76, 0xf7, 0x32, 0xf2, 0x75, 0x43, 0xf6, 0xc6, 0x60, 0xfc, 0x3d, 0xbe, - 0x1f, 0xeb, 0x22, 0x8c, 0xf7, 0x0c, 0xe0, 0xa4, 0x48, 0x55, 0x04, 0x90, 0x67, 0xc1, 0x4c, 0x97, - 0x6e, 0x16, 0x1a, 0xdc, 0x9e, 0xb0, 0x90, 0x46, 0x48, 0xa4, 0xbb, 0xd5, 0x0a, 0x23, 0x91, 0xbc, - 0xc1, 0xd7, 0x07, 0xdd, 0x7f, 0x43, 0x80, 0xb8, 0x74, 0x10, 0xc2, 0x92, 0x81, 0xfc, 0xda, 0x51, - 0xaf, 0xf0, 0x4e, 0x81, 0xe3, 0xac, 0xd7, 0x36, 0xca, 0x2b, 0xa5, 0xd5, 0x55, 0xad, 0xba, 0xac, - 0x35, 0x2a, 0x8b, 0x74, 0xab, 0x22, 0x4c, 0x29, 0x19, 0x86, 0xb6, 0xb6, 0x6e, 0xd4, 0x1b, 0xda, - 0xf3, 0xca, 0x9a, 0xb6, 0x48, 0x1c, 0x91, 0xc8, 0x49, 0x02, 0xdf, 0x65, 0xac, 0x54, 0xad, 0x5f, - 0xd0, 0xf4, 0xe2, 0xf6, 0xd9, 0x12, 0x98, 0xe6, 0xc6, 0x79, 0x4c, 0xdd, 0x22, 0xda, 0x34, 0x77, - 0xdb, 0x4c, 0x57, 0x2b, 0x1e, 0xc1, 0xd4, 0x11, 0xde, 0xd4, 0xec, 0xf6, 0xd5, 0x62, 0x46, 0x2d, - 0x82, 0x19, 0x7e, 0x48, 0x2f, 0x66, 0xe1, 0x77, 0xae, 0x07, 0x53, 0x17, 0x1c, 0xf7, 0x12, 0xf1, - 0x1e, 0x83, 0xef, 0xa3, 0xd1, 0x24, 0xfc, 0x73, 0x79, 0xdc, 0xc4, 0xfe, 0x5a, 0x79, 0x6f, 0x01, - 0xbf, 0xb4, 0xf9, 0x81, 0x67, 0xef, 0xce, 0x80, 0xe9, 0xcb, 0x7e, 0xee, 0xb0, 0xa7, 0x73, 0x49, - 0xf0, 0xbf, 0xca, 0xed, 0xff, 0x0f, 0xae, 0x32, 0xfd, 0xfd, 0xe9, 0xb7, 0x67, 0x41, 0x61, 0x19, - 0x79, 0xa5, 0x76, 0x9b, 0xe7, 0xdb, 0x2b, 0xa4, 0xcf, 0x53, 0x08, 0x8d, 0x28, 0xb5, 0xdb, 0xd1, - 0x9d, 0x8a, 0x63, 0x90, 0xef, 0xf7, 0x2b, 0xa4, 0xc1, 0x5f, 0x93, 0x3a, 0x09, 0x35, 0xa0, 0xc2, - 0xf4, 0x39, 0xf6, 0x26, 0x25, 0xd8, 0xe3, 0xfe, 0x69, 0x4e, 0xcb, 0x79, 0x6a, 0x18, 0x49, 0x24, - 0x13, 0xbf, 0x57, 0xee, 0xe7, 0x53, 0x1f, 0x00, 0x13, 0xbb, 0x5d, 0x54, 0x36, 0xbb, 0x88, 0xd0, - 0xd6, 0xdb, 0xd2, 0xda, 0xc5, 0x87, 0x50, 0xd3, 0x9b, 0xaf, 0xec, 0x60, 0x85, 0x7a, 0x83, 0x66, - 0x0c, 0x82, 0x73, 0xb0, 0x77, 0xdd, 0x2f, 0x01, 0xbe, 0x64, 0x08, 0xc8, 0x62, 0xf7, 0x7b, 0x23, - 0x8f, 0x5e, 0x25, 0x06, 0x6a, 0x04, 0x9b, 0xb4, 0xc3, 0x00, 0xf5, 0xe9, 0x2c, 0xc8, 0xd5, 0x3a, - 0xc8, 0x96, 0x73, 0x40, 0x7d, 0xbd, 0xbc, 0x97, 0x57, 0xd0, 0x30, 0x5c, 0x7a, 0x04, 0xf7, 0xce, - 0x81, 0x9c, 0x65, 0x6f, 0x3a, 0x4c, 0xc1, 0xbc, 0x3e, 0x62, 0x33, 0xa7, 0x62, 0x6f, 0x3a, 0x3a, - 0xc9, 0x28, 0xeb, 0xe0, 0x15, 0x57, 0x77, 0xfa, 0x2c, 0xfd, 0xe6, 0x24, 0x28, 0x50, 0xb1, 0x84, - 0x2f, 0x57, 0x80, 0x52, 0x6a, 0xb5, 0x22, 0x0e, 0x71, 0x64, 0xf7, 0x1d, 0xe2, 0x70, 0xc8, 0x6f, - 0x01, 0xdf, 0x83, 0x77, 0x31, 0x14, 0x84, 0xe4, 0x18, 0xcd, 0xba, 0x46, 0xa9, 0xd5, 0x8a, 0xf6, - 0x25, 0x0d, 0x2a, 0xcc, 0x8a, 0x15, 0xf2, 0x3d, 0x55, 0x91, 0xeb, 0xa9, 0x89, 0x07, 0xf4, 0x48, - 0xfa, 0xd2, 0x87, 0xe8, 0x1f, 0xb3, 0x60, 0x62, 0xd5, 0xea, 0x7a, 0x18, 0x9b, 0x92, 0x0c, 0x36, - 0x37, 0x80, 0x29, 0x9f, 0x35, 0x78, 0xe8, 0xc2, 0xe3, 0x72, 0x98, 0x00, 0xdf, 0xc0, 0xa3, 0xf3, - 0x1c, 0x11, 0x9d, 0xa7, 0xc5, 0xb7, 0x9e, 0x51, 0x11, 0xed, 0xa3, 0x1d, 0x56, 0x9b, 0xed, 0xad, - 0xf6, 0x37, 0x03, 0x86, 0xaf, 0x09, 0x0c, 0xbf, 0x6b, 0x98, 0x2a, 0xd3, 0x67, 0xfa, 0xe7, 0xb2, - 0x00, 0xe0, 0xba, 0xd9, 0x41, 0x98, 0x27, 0x0a, 0xc7, 0x5b, 0x63, 0xb8, 0xfb, 0x6a, 0x9e, 0xbb, - 0x6b, 0x22, 0x77, 0x9f, 0x31, 0xb8, 0xa9, 0x71, 0x07, 0x5e, 0xd4, 0x22, 0x50, 0xac, 0x80, 0xb5, - 0xf8, 0x11, 0xbe, 0x3d, 0x60, 0xea, 0xba, 0xc0, 0xd4, 0x7b, 0x86, 0xac, 0x29, 0x7d, 0xbe, 0xfe, - 0x65, 0x16, 0x4c, 0xd4, 0x91, 0x87, 0x87, 0x49, 0x78, 0x5e, 0xe6, 0xc8, 0x09, 0xd7, 0xb7, 0xb3, - 0x92, 0x7d, 0xfb, 0xdb, 0x19, 0xd9, 0x30, 0x19, 0x21, 0x67, 0x18, 0x4d, 0x11, 0x46, 0x80, 0x37, - 0x4a, 0x85, 0xc9, 0x18, 0x54, 0x5a, 0xfa, 0xdc, 0x7d, 0x6b, 0x36, 0xd8, 0x60, 0x7f, 0x92, 0xb0, - 0x40, 0xe3, 0xd5, 0xdb, 0xcc, 0x7e, 0xf5, 0xf6, 0x9f, 0x32, 0xc9, 0x55, 0x8d, 0xb8, 0xdd, 0xe5, - 0xc4, 0x0a, 0xc5, 0x08, 0x36, 0x7e, 0x87, 0xe1, 0xd7, 0x0b, 0x14, 0x50, 0x60, 0x16, 0xe2, 0xfb, - 0xe2, 0x2d, 0xc4, 0x83, 0x97, 0x08, 0xef, 0x1d, 0x42, 0x5d, 0x8b, 0x33, 0xdb, 0x06, 0x64, 0x64, - 0x39, 0x32, 0x6e, 0x07, 0x79, 0x12, 0xc7, 0x8f, 0xcd, 0x73, 0xe1, 0x9e, 0xbd, 0x5f, 0x84, 0x86, - 0xbf, 0xea, 0x34, 0x53, 0x62, 0x14, 0x46, 0x60, 0xe9, 0x1d, 0x06, 0x85, 0x97, 0x7d, 0x34, 0x13, - 0x28, 0x21, 0xef, 0xcd, 0x31, 0x15, 0xef, 0x63, 0x62, 0x44, 0x81, 0xa6, 0x63, 0x7b, 0xe8, 0x0a, - 0x67, 0x5b, 0x0f, 0x12, 0x62, 0x35, 0x83, 0x53, 0x60, 0xc2, 0x73, 0x79, 0x7b, 0xbb, 0xff, 0xca, - 0x8f, 0x38, 0x79, 0x71, 0xc4, 0xa9, 0x82, 0xb3, 0x96, 0xdd, 0x6c, 0xef, 0xb6, 0x90, 0x8e, 0xda, - 0x26, 0x6e, 0x55, 0xb7, 0xd4, 0x5d, 0x44, 0x1d, 0x64, 0xb7, 0x90, 0xed, 0x51, 0x3a, 0x7d, 0xdf, - 0x5a, 0x89, 0x9c, 0xf0, 0x6b, 0xbc, 0x60, 0xdc, 0x2b, 0x0a, 0xc6, 0x13, 0xfb, 0xad, 0x0f, 0x62, - 0x94, 0xd0, 0xbb, 0x00, 0xa0, 0x6d, 0x3b, 0x6f, 0xa1, 0xcb, 0x6c, 0x40, 0xbc, 0xae, 0x47, 0x15, - 0xad, 0x05, 0x19, 0x74, 0x2e, 0x33, 0xfc, 0x52, 0x20, 0x0c, 0xf7, 0x0b, 0xc2, 0x70, 0xbb, 0x24, - 0x09, 0xc9, 0xe4, 0xa0, 0x33, 0x84, 0xcd, 0x62, 0x16, 0x4c, 0x85, 0x96, 0x46, 0x45, 0xbd, 0x0e, - 0x9c, 0xf0, 0x7d, 0x17, 0xaa, 0x9a, 0xb6, 0x58, 0x6f, 0x6c, 0xac, 0x2f, 0xeb, 0xa5, 0x45, 0xad, - 0x08, 0x54, 0x15, 0xcc, 0xd5, 0x16, 0x9e, 0xa3, 0x95, 0x8d, 0xc0, 0xe5, 0x20, 0x07, 0xff, 0x3c, - 0x0b, 0xf2, 0xc4, 0x31, 0x1c, 0xfe, 0xc8, 0x88, 0x24, 0xa7, 0x2b, 0xec, 0xd4, 0x04, 0xeb, 0x0a, - 0xf9, 0x48, 0x7f, 0x8c, 0x99, 0x84, 0xaa, 0x03, 0x45, 0xfa, 0x8b, 0x29, 0x28, 0xfd, 0xee, 0x89, - 0xbb, 0x64, 0x7d, 0xdb, 0xb9, 0xfc, 0xef, 0xb9, 0x4b, 0xe2, 0xf6, 0x1f, 0x72, 0x97, 0xec, 0x43, - 0xc2, 0xd8, 0xbb, 0x64, 0x9f, 0x7e, 0x17, 0xd3, 0x4d, 0xe1, 0xdf, 0xe6, 0x02, 0xc3, 0xca, 0xff, - 0x75, 0x30, 0xc3, 0x4a, 0x09, 0xcc, 0x5a, 0xb6, 0x87, 0x5c, 0xdb, 0x6c, 0x2f, 0xb5, 0xcd, 0x2d, - 0xff, 0xf8, 0x71, 0xef, 0x2a, 0xbc, 0xc2, 0xe5, 0xd1, 0xc5, 0x3f, 0xd4, 0xd3, 0x00, 0x78, 0x68, - 0xa7, 0xd3, 0x36, 0xbd, 0x50, 0xf4, 0xb8, 0x14, 0x5e, 0xfa, 0x72, 0xa2, 0xf4, 0x3d, 0x05, 0x5c, - 0x43, 0x41, 0x33, 0xae, 0x76, 0xd0, 0x86, 0x6d, 0xfd, 0xe8, 0x2e, 0x09, 0x40, 0x43, 0x65, 0xb4, - 0xdf, 0x27, 0xf8, 0x3f, 0xa4, 0x8f, 0x51, 0xfa, 0x3d, 0x7b, 0xc0, 0x31, 0xca, 0xa0, 0x37, 0x29, - 0x3d, 0xbd, 0x29, 0x50, 0x08, 0x72, 0x12, 0x0a, 0x01, 0xcf, 0xf9, 0xbc, 0xa4, 0x32, 0xfd, 0x3a, - 0xa9, 0x73, 0x9a, 0x71, 0xcd, 0x48, 0x7f, 0x84, 0x7a, 0x9f, 0x02, 0xe6, 0x68, 0xd5, 0x0b, 0x8e, - 0x73, 0x69, 0xc7, 0x74, 0x2f, 0xf1, 0x6b, 0x8b, 0x21, 0xc4, 0x2d, 0xda, 0x52, 0xf6, 0x29, 0x1e, - 0xd9, 0x65, 0x11, 0xd9, 0xa7, 0x46, 0xb3, 0xc4, 0xa7, 0x6b, 0x3c, 0xc6, 0x8d, 0x37, 0x07, 0x98, - 0x3d, 0x47, 0xc0, 0xec, 0x07, 0x13, 0x13, 0x98, 0x3e, 0x76, 0x7f, 0x14, 0x60, 0xe7, 0x0f, 0xd8, - 0xa9, 0x61, 0xf7, 0xe5, 0xe1, 0xb0, 0xf3, 0xe9, 0x1a, 0x02, 0xbb, 0x22, 0x50, 0x2e, 0x05, 0x5b, - 0x4a, 0xf8, 0x91, 0x6f, 0x50, 0x2e, 0x3d, 0x34, 0x23, 0x48, 0x1e, 0x0b, 0x9a, 0xc7, 0x45, 0x12, - 0x6a, 0x9d, 0x54, 0x31, 0xfd, 0xa2, 0xb4, 0xbd, 0xa5, 0x2f, 0x83, 0x28, 0x75, 0xe3, 0xe9, 0x95, - 0x72, 0xc6, 0x1a, 0x79, 0x32, 0xd3, 0x47, 0xf3, 0x1f, 0x72, 0x60, 0xca, 0x3f, 0xcc, 0xea, 0xc1, - 0x3f, 0xe5, 0xa6, 0xf0, 0x93, 0xa0, 0xd0, 0x75, 0x76, 0xdd, 0x26, 0x62, 0x16, 0x30, 0xf6, 0x36, - 0x84, 0xb5, 0x66, 0xe0, 0xbc, 0xbc, 0x6f, 0xea, 0xcf, 0x25, 0x9e, 0xfa, 0x23, 0x15, 0x4b, 0xf8, - 0x12, 0xe9, 0xd0, 0x83, 0x02, 0x2e, 0x75, 0xe4, 0x3d, 0x16, 0xe7, 0xea, 0x0f, 0x49, 0xad, 0xf7, - 0x07, 0xb4, 0x24, 0x99, 0x58, 0xd5, 0x86, 0x50, 0x2a, 0xaf, 0x07, 0xd7, 0xfa, 0x39, 0x98, 0x36, - 0x49, 0xb4, 0xc7, 0x0d, 0x7d, 0xb5, 0xa8, 0xc0, 0x17, 0xe4, 0x40, 0x91, 0x92, 0x56, 0x0b, 0x14, - 0x2b, 0xf8, 0x8a, 0x43, 0xd7, 0x1e, 0xa3, 0x97, 0x83, 0x9f, 0xc9, 0xca, 0x86, 0x37, 0x12, 0x18, - 0x1f, 0xb6, 0x2e, 0x42, 0x92, 0x86, 0xe8, 0x4a, 0x31, 0xc2, 0x07, 0x7f, 0x23, 0x23, 0x13, 0x2d, - 0x49, 0x8e, 0xc4, 0xf4, 0x47, 0x9e, 0x37, 0xe4, 0xfc, 0xb8, 0x03, 0x4b, 0xae, 0xb3, 0xb3, 0xe1, - 0xb6, 0xe1, 0x87, 0xa5, 0x82, 0xd1, 0x45, 0xa8, 0xea, 0xd9, 0x48, 0x55, 0x1d, 0x4f, 0xd1, 0xbb, - 0x6e, 0xdb, 0x9f, 0xa2, 0x77, 0xdd, 0xf6, 0x10, 0x53, 0xb4, 0x7a, 0x0b, 0x98, 0x33, 0x5b, 0xad, - 0x75, 0x73, 0x0b, 0x95, 0xf1, 0x1a, 0xd8, 0xf6, 0xd8, 0x99, 0xe4, 0x9e, 0xd4, 0x04, 0x3b, 0x63, - 0x02, 0x10, 0x8c, 0x07, 0x8f, 0xa5, 0x9d, 0x31, 0x09, 0xfa, 0xd2, 0x97, 0x92, 0x4f, 0x64, 0xc1, - 0xac, 0xaf, 0xb8, 0x2e, 0x21, 0xaf, 0xb9, 0x0d, 0xef, 0x92, 0xb5, 0x50, 0x30, 0xd8, 0xb3, 0x01, - 0xec, 0xf0, 0x7b, 0x99, 0x84, 0xd8, 0x08, 0x35, 0x47, 0x98, 0x77, 0x12, 0x31, 0x33, 0xae, 0xc0, - 0xf4, 0x99, 0xf9, 0xa5, 0x2c, 0x00, 0x86, 0x13, 0x2c, 0xa0, 0x0e, 0xc0, 0xc9, 0x97, 0x49, 0x87, - 0x29, 0x67, 0x0d, 0x0f, 0xab, 0x4d, 0x2e, 0xe2, 0x92, 0x7b, 0x33, 0x83, 0x6a, 0x4a, 0x9f, 0xbf, - 0x1f, 0xc8, 0x82, 0xa9, 0xc5, 0xdd, 0x4e, 0xdb, 0x6a, 0x9a, 0x5e, 0xef, 0x86, 0x62, 0x34, 0x7b, - 0xc9, 0x7d, 0x23, 0x89, 0x34, 0x94, 0xa0, 0x8e, 0x08, 0x5e, 0xd2, 0xd3, 0x96, 0x59, 0xff, 0xb4, - 0xa5, 0xe4, 0x26, 0xc1, 0x80, 0xc2, 0xc7, 0x20, 0x9e, 0x0a, 0x38, 0x5a, 0xeb, 0x20, 0x7b, 0xc1, - 0x45, 0x66, 0xab, 0xe9, 0xee, 0xee, 0x5c, 0xec, 0xf2, 0xbb, 0xe1, 0xf1, 0x32, 0xca, 0xd9, 0x1c, - 0xb3, 0x82, 0xcd, 0x11, 0xfe, 0x94, 0x22, 0x7b, 0xf6, 0x97, 0xb3, 0x8c, 0x73, 0x34, 0x0c, 0x31, - 0x26, 0x27, 0xda, 0xc3, 0xe9, 0x31, 0x2f, 0xe6, 0x92, 0x98, 0x17, 0xdf, 0x22, 0x75, 0x92, 0x58, - 0xaa, 0x5d, 0x63, 0xd9, 0x8a, 0x9b, 0xab, 0x23, 0x2f, 0x02, 0xde, 0x9b, 0xc1, 0xec, 0xc5, 0xf0, - 0x4b, 0x00, 0xb1, 0x98, 0xd8, 0x67, 0x83, 0xfc, 0xad, 0x49, 0x97, 0xfc, 0x22, 0x09, 0x11, 0xe8, - 0x06, 0x08, 0x66, 0x65, 0x76, 0xe1, 0x12, 0xad, 0xdf, 0x63, 0xeb, 0x4f, 0x1f, 0x85, 0x8f, 0x66, - 0xc1, 0x34, 0xb9, 0x45, 0x65, 0xe1, 0x2a, 0x71, 0xcf, 0x7e, 0x82, 0x10, 0x6a, 0x2b, 0xd2, 0xe3, - 0xe7, 0xc5, 0x3c, 0x9b, 0x55, 0x90, 0x6b, 0x5b, 0xf6, 0x25, 0x7f, 0xfb, 0x14, 0x3f, 0x87, 0x31, - 0xf9, 0xb3, 0x7d, 0x62, 0xf2, 0x07, 0x06, 0xee, 0xa0, 0xde, 0x03, 0x5d, 0x12, 0x35, 0xb0, 0xb8, - 0xf4, 0xd9, 0xf8, 0xc7, 0x39, 0x50, 0xa8, 0x23, 0xd3, 0x6d, 0x6e, 0xc3, 0x57, 0x73, 0x07, 0xdd, - 0x97, 0xc0, 0xc4, 0xa6, 0xd5, 0xf6, 0x90, 0x4b, 0x1d, 0x47, 0xf8, 0x01, 0x9c, 0x76, 0xe4, 0x85, - 0xb6, 0xd3, 0xbc, 0x34, 0xcf, 0xb4, 0xc5, 0x79, 0x3f, 0x66, 0xd0, 0xfc, 0x12, 0xf9, 0x49, 0xf7, - 0x7f, 0x56, 0xef, 0x07, 0xf9, 0xae, 0xe3, 0x7a, 0x51, 0x41, 0x38, 0x23, 0x4a, 0xa9, 0x3b, 0xae, - 0xa7, 0xd3, 0x1f, 0x31, 0x98, 0x9b, 0xbb, 0xed, 0xb6, 0x81, 0xae, 0x78, 0xfe, 0x4a, 0xc1, 0x7f, - 0xc7, 0x6b, 0x7b, 0x67, 0x73, 0xb3, 0x8b, 0xe8, 0x3a, 0x35, 0xaf, 0xb3, 0x37, 0xf5, 0x38, 0xc8, - 0xb7, 0xad, 0x1d, 0x8b, 0xea, 0xb6, 0x79, 0x9d, 0xbe, 0xa8, 0xb7, 0x81, 0x62, 0xa8, 0x56, 0x53, - 0x42, 0x4f, 0x15, 0x48, 0x07, 0xdc, 0x97, 0x8e, 0x25, 0xe3, 0x12, 0xba, 0xda, 0x3d, 0x35, 0x41, - 0xbe, 0x93, 0x67, 0xd1, 0x4b, 0x4f, 0xc6, 0x54, 0x4e, 0xf9, 0x1a, 0xbd, 0x68, 0x72, 0x51, 0xd3, - 0x71, 0x5b, 0x3e, 0x6f, 0xa2, 0xf5, 0x5d, 0x96, 0x2f, 0x99, 0x81, 0xbb, 0x6f, 0xe5, 0xe9, 0xcb, - 0xd3, 0x2b, 0x0b, 0x78, 0x70, 0xc4, 0x55, 0x5f, 0xb0, 0xbc, 0xed, 0x35, 0xe4, 0x99, 0xf0, 0x8f, - 0x95, 0xff, 0x4f, 0xae, 0x62, 0xe4, 0x8a, 0x9e, 0xf9, 0xf6, 0x76, 0x5d, 0x1b, 0x73, 0x8b, 0x45, - 0x59, 0xe2, 0x52, 0xd4, 0x7b, 0xc0, 0x75, 0xe1, 0x9b, 0x6f, 0x67, 0x5b, 0x64, 0x6b, 0xa5, 0x29, - 0x92, 0x3d, 0x3a, 0x83, 0xba, 0x0e, 0x6e, 0xa2, 0x1f, 0x57, 0x8c, 0xb5, 0xd5, 0x15, 0x6b, 0x6b, - 0xbb, 0x6d, 0x6d, 0x6d, 0x7b, 0xdd, 0x8a, 0xdd, 0xf5, 0x90, 0xd9, 0xaa, 0x6d, 0xea, 0x34, 0x48, - 0x2e, 0x20, 0xe5, 0xc8, 0x64, 0x15, 0xdd, 0x47, 0xe4, 0x66, 0x2a, 0x5e, 0x1e, 0x22, 0xfa, 0xc3, - 0x0f, 0xe2, 0xfe, 0xd0, 0xdd, 0x6d, 0x07, 0x98, 0xde, 0xd0, 0x83, 0x69, 0x28, 0xd0, 0xbb, 0x6d, - 0xd2, 0x29, 0x48, 0xe6, 0xa4, 0x73, 0x56, 0x0c, 0x25, 0xe9, 0x77, 0x8e, 0xff, 0xa7, 0x00, 0xf2, - 0xcb, 0xae, 0xd9, 0xd9, 0x86, 0x2f, 0x48, 0x61, 0xac, 0x0d, 0xa4, 0x33, 0x3b, 0x48, 0x3a, 0x95, - 0x01, 0xd2, 0x99, 0xe3, 0xa4, 0x33, 0x7a, 0xab, 0xfb, 0x2c, 0x98, 0x69, 0x3a, 0xed, 0x36, 0x6a, - 0x62, 0x7e, 0x54, 0x5a, 0x24, 0x30, 0xc8, 0x94, 0x2e, 0xa4, 0x91, 0xe8, 0x69, 0xc8, 0xab, 0x53, - 0x03, 0x2c, 0x15, 0xfa, 0x30, 0x01, 0xbe, 0x22, 0x0b, 0x72, 0x5a, 0x6b, 0x0b, 0x09, 0x46, 0xda, - 0x0c, 0x67, 0xa4, 0x3d, 0x09, 0x0a, 0x9e, 0xe9, 0x6e, 0x21, 0xcf, 0x3f, 0x8e, 0x43, 0xdf, 0x82, - 0xa0, 0x6e, 0x0a, 0x17, 0xd4, 0xed, 0x19, 0x20, 0x87, 0x79, 0xc6, 0xc2, 0xa5, 0xdc, 0xd4, 0x0f, - 0x7e, 0xc2, 0xfb, 0x79, 0x5c, 0xe3, 0x3c, 0x6e, 0xb5, 0x4e, 0x7e, 0xe8, 0xc5, 0x3a, 0xbf, 0x0f, - 0x6b, 0x72, 0xdf, 0x47, 0xd3, 0xb1, 0x2b, 0x3b, 0xe6, 0x16, 0x62, 0xcd, 0x0c, 0x13, 0xfc, 0xaf, - 0xda, 0x8e, 0xf3, 0x90, 0xc5, 0xe2, 0xab, 0x85, 0x09, 0xb8, 0x09, 0xdb, 0x56, 0xab, 0x85, 0x6c, - 0xd6, 0xb3, 0xd9, 0xdb, 0xd9, 0xd3, 0x20, 0x87, 0x69, 0xc0, 0xf2, 0x83, 0x27, 0xfe, 0xe2, 0x11, - 0x75, 0x06, 0x77, 0x2b, 0xda, 0x79, 0x8b, 0x19, 0xd1, 0x58, 0x27, 0xe3, 0xbb, 0x41, 0x1b, 0xd7, - 0xbf, 0x73, 0x3d, 0x19, 0xe4, 0x6d, 0xa7, 0x85, 0x06, 0x4e, 0x35, 0x34, 0x97, 0xfa, 0x34, 0x90, - 0x47, 0x2d, 0x3c, 0x2a, 0x28, 0x24, 0xfb, 0xe9, 0x78, 0x5e, 0xea, 0x34, 0x73, 0x32, 0x07, 0x91, - 0x7e, 0xd4, 0xa6, 0xdf, 0x01, 0x7f, 0x65, 0x02, 0x1c, 0xa5, 0x63, 0x40, 0x7d, 0xf7, 0x22, 0x2e, - 0xea, 0x22, 0x82, 0x8f, 0x28, 0x42, 0x14, 0xc9, 0xee, 0xee, 0xc5, 0x40, 0x6d, 0xa4, 0x2f, 0x7c, - 0x07, 0xcd, 0x8e, 0x64, 0xd2, 0x52, 0x86, 0x9d, 0xb4, 0x84, 0x09, 0x48, 0xf1, 0xbb, 0x78, 0x38, - 0x5d, 0x15, 0x48, 0xb2, 0x3f, 0x5d, 0xf5, 0x9b, 0x6c, 0x4e, 0x81, 0x09, 0x73, 0xd3, 0x43, 0x6e, - 0xa5, 0x45, 0xe4, 0x71, 0x4a, 0xf7, 0x5f, 0xf1, 0x84, 0x78, 0x11, 0x6d, 0x3a, 0x2e, 0xee, 0xe9, - 0x53, 0x74, 0x42, 0xf4, 0xdf, 0xb9, 0xfe, 0x09, 0x84, 0x4d, 0x94, 0x5b, 0xc1, 0x51, 0x6b, 0xcb, - 0x76, 0x5c, 0x14, 0x78, 0xe6, 0x9d, 0x9a, 0xa1, 0x87, 0xc5, 0x7b, 0x92, 0xd5, 0xdb, 0xc1, 0x31, - 0xdb, 0x59, 0x44, 0x1d, 0xc6, 0x77, 0x8a, 0xea, 0x2c, 0xe9, 0x11, 0xfb, 0x3f, 0xec, 0x1b, 0x5a, - 0xe6, 0xf6, 0x0f, 0x2d, 0xf0, 0xd3, 0x49, 0xd7, 0xc3, 0x3d, 0xc0, 0x8f, 0x4c, 0x2f, 0x53, 0x9f, - 0x05, 0x66, 0x5a, 0xcc, 0x6f, 0xa7, 0x69, 0x05, 0xbd, 0x26, 0xf2, 0x3f, 0x21, 0x73, 0x28, 0x72, - 0x39, 0x5e, 0xe4, 0x96, 0xc1, 0x24, 0x39, 0xa5, 0x81, 0x65, 0x2e, 0xdf, 0x13, 0x8c, 0x8e, 0x2c, - 0xd9, 0x82, 0x46, 0x71, 0x6c, 0x9b, 0x2f, 0xb3, 0x5f, 0xf4, 0xe0, 0xe7, 0x64, 0x2b, 0xeb, 0x78, - 0x0e, 0xa5, 0xdf, 0x3d, 0x3f, 0x93, 0x03, 0x47, 0x97, 0x5d, 0x67, 0xb7, 0xd3, 0x0d, 0xbb, 0xe7, - 0x5f, 0xf7, 0xb7, 0xa6, 0x17, 0xc4, 0xb9, 0xa8, 0x7f, 0xc7, 0x3d, 0x03, 0xa6, 0x5d, 0x36, 0xa2, - 0x86, 0xb6, 0x75, 0x3e, 0x89, 0xef, 0xda, 0xca, 0x41, 0xba, 0x76, 0xd8, 0x41, 0x72, 0x42, 0x07, - 0xe9, 0x15, 0xe4, 0x7c, 0x1f, 0x41, 0xfe, 0xab, 0x6c, 0x42, 0x41, 0xee, 0x61, 0x51, 0x84, 0x20, - 0x97, 0x41, 0x61, 0x8b, 0x64, 0x64, 0x72, 0xfc, 0x24, 0xb9, 0x96, 0x91, 0xc2, 0x75, 0xf6, 0x6b, - 0xc8, 0x57, 0x85, 0xe3, 0x6b, 0x32, 0xa1, 0x8a, 0xa7, 0x36, 0x7d, 0xa1, 0x7a, 0x67, 0x0e, 0xcc, - 0x04, 0xb5, 0x93, 0x83, 0x0f, 0x99, 0x41, 0x03, 0xfe, 0x3e, 0xeb, 0x4c, 0x30, 0x94, 0x2a, 0xdc, - 0x50, 0xda, 0x67, 0xf0, 0x9b, 0x4e, 0x30, 0xf8, 0xcd, 0x44, 0x0c, 0x7e, 0xf0, 0xc7, 0x15, 0xd9, - 0xa0, 0xc5, 0xe2, 0x18, 0x40, 0x5a, 0xf7, 0x58, 0x1e, 0xd5, 0x24, 0x43, 0x27, 0x0f, 0x6e, 0x55, - 0xfa, 0x42, 0xf3, 0xc1, 0x2c, 0x38, 0x46, 0x47, 0xc3, 0x0d, 0xbb, 0x1b, 0x8c, 0x45, 0x8f, 0x17, - 0xdd, 0x0a, 0x70, 0x9b, 0xba, 0x81, 0x5b, 0x01, 0x79, 0x13, 0x8d, 0xe0, 0xb1, 0x67, 0x96, 0x84, - 0x31, 0x97, 0xab, 0x25, 0xc2, 0xa2, 0x24, 0x77, 0x2a, 0x49, 0xb2, 0xd0, 0xf4, 0x19, 0xf8, 0x8b, - 0x0a, 0x98, 0xaa, 0x23, 0x6f, 0xd5, 0xbc, 0xea, 0xec, 0x7a, 0xd0, 0x94, 0x35, 0x7f, 0x3f, 0x13, - 0x14, 0xda, 0xe4, 0x17, 0x76, 0x03, 0xd7, 0x99, 0xbe, 0xf6, 0x63, 0xb2, 0xd1, 0x4b, 0x8b, 0xd6, - 0x59, 0x7e, 0xf1, 0xb0, 0x98, 0xcc, 0xee, 0x43, 0x40, 0xdd, 0x48, 0x4c, 0xa7, 0x89, 0xf6, 0x26, - 0xa2, 0xaa, 0x4e, 0x1f, 0x96, 0x9f, 0x52, 0xc0, 0x6c, 0x1d, 0x79, 0x95, 0xee, 0x92, 0xb9, 0xe7, - 0xb8, 0x96, 0x87, 0xf8, 0xcb, 0x20, 0xe2, 0xa1, 0x39, 0x0d, 0x80, 0x15, 0xfc, 0xc6, 0xa2, 0x81, - 0x73, 0x29, 0xf0, 0x37, 0x92, 0xee, 0x18, 0x0b, 0x74, 0x8c, 0x04, 0x84, 0x44, 0x7b, 0x98, 0x71, - 0xd5, 0xa7, 0x0f, 0xc4, 0xe7, 0xb3, 0x0c, 0x88, 0x92, 0xdb, 0xdc, 0xb6, 0xf6, 0x50, 0x2b, 0x21, - 0x10, 0xfe, 0x6f, 0x21, 0x10, 0x41, 0x41, 0x89, 0xb7, 0x87, 0x05, 0x3a, 0x46, 0xb1, 0x3d, 0x1c, - 0x57, 0xe0, 0x58, 0x4e, 0xa1, 0xe2, 0xa1, 0x87, 0xd9, 0x18, 0xee, 0x93, 0x65, 0x6b, 0xa8, 0xc2, - 0x65, 0x79, 0x15, 0x6e, 0xa8, 0x81, 0x85, 0xd6, 0x3d, 0x48, 0xa6, 0x73, 0x69, 0x0c, 0x2c, 0x7d, - 0xab, 0x4e, 0x9f, 0xe9, 0xef, 0x51, 0xc0, 0x89, 0x40, 0xe1, 0xa9, 0x23, 0x6f, 0xd1, 0xec, 0x6e, - 0x5f, 0x74, 0x4c, 0xb7, 0xc5, 0xdf, 0xcc, 0x36, 0xf4, 0x51, 0x0c, 0xf8, 0x17, 0x3c, 0x08, 0x55, - 0x11, 0x84, 0xbe, 0x7e, 0x41, 0x7d, 0x69, 0x19, 0xc5, 0x20, 0x13, 0xeb, 0xba, 0xf4, 0x5b, 0x01, - 0x58, 0xcf, 0x15, 0xc0, 0xba, 0x77, 0x58, 0x12, 0xd3, 0x07, 0xee, 0x97, 0xe9, 0x8c, 0xc0, 0xb9, - 0xb0, 0x3d, 0x28, 0x0b, 0x58, 0x84, 0x0b, 0x93, 0x12, 0x7d, 0xda, 0x60, 0x98, 0x39, 0x62, 0xa0, - 0xfb, 0x59, 0xba, 0x73, 0xc4, 0x21, 0xba, 0x96, 0xbd, 0x53, 0x01, 0x45, 0x72, 0x3e, 0x97, 0x73, - 0xef, 0x83, 0x0f, 0xc9, 0xa2, 0xb3, 0xcf, 0x95, 0x70, 0x22, 0xa9, 0x2b, 0x21, 0x7c, 0x47, 0x52, - 0x87, 0xc1, 0x5e, 0x6a, 0x47, 0x82, 0x58, 0x22, 0x7f, 0xc0, 0x01, 0x14, 0xa4, 0x0f, 0xda, 0x7f, - 0x56, 0x00, 0xc0, 0x1d, 0x9a, 0xf9, 0xa8, 0x3d, 0x4f, 0x16, 0xae, 0x73, 0xbc, 0x13, 0x25, 0x06, - 0xea, 0x44, 0x0f, 0x50, 0xb4, 0xc4, 0xd0, 0xfb, 0xed, 0x8d, 0x49, 0x7d, 0x97, 0x42, 0xaa, 0x46, - 0x02, 0x4b, 0x22, 0x6f, 0xa6, 0xc8, 0xba, 0xd3, 0x07, 0xe4, 0xb7, 0xb3, 0x20, 0x6f, 0x38, 0x75, - 0xe4, 0x1d, 0x5c, 0x15, 0x48, 0x7c, 0x9e, 0x92, 0xd4, 0x3b, 0x8a, 0xf3, 0x94, 0xfd, 0x0a, 0x4a, - 0x9f, 0x75, 0x8f, 0x64, 0xc1, 0x8c, 0xe1, 0x94, 0x03, 0x63, 0x95, 0xbc, 0x2f, 0x98, 0xfc, 0xc5, - 0x4b, 0x41, 0x03, 0xc3, 0x6a, 0x0e, 0x74, 0xf1, 0xd2, 0xe0, 0xf2, 0xd2, 0xe7, 0xdb, 0x5d, 0xe0, - 0xe8, 0x86, 0xdd, 0x72, 0x74, 0xd4, 0x72, 0x98, 0x49, 0x56, 0x55, 0x41, 0x6e, 0xd7, 0x6e, 0x39, - 0x84, 0xe4, 0xbc, 0x4e, 0x9e, 0x71, 0x9a, 0x8b, 0x5a, 0x0e, 0xdb, 0xaf, 0x23, 0xcf, 0xf0, 0x6b, - 0x0a, 0xc8, 0xe1, 0x7f, 0xe5, 0x59, 0xfd, 0x4e, 0x25, 0xe1, 0x09, 0x51, 0x5c, 0xfc, 0x48, 0x34, - 0xa1, 0xfb, 0x38, 0x23, 0x35, 0xf5, 0x10, 0xbb, 0x29, 0xaa, 0x3e, 0x8e, 0x15, 0xa1, 0x71, 0x5a, - 0x3d, 0x05, 0x26, 0x2e, 0xb6, 0x9d, 0xe6, 0xa5, 0xf0, 0x20, 0x23, 0x7b, 0x55, 0x6f, 0x03, 0x79, - 0xd7, 0xb4, 0xb7, 0x10, 0x33, 0x7e, 0x1f, 0xef, 0x19, 0x0b, 0xc9, 0x4e, 0xb4, 0x4e, 0xb3, 0xc0, - 0x77, 0x24, 0x39, 0x9b, 0xda, 0xa7, 0xf1, 0xc9, 0xe4, 0x61, 0x71, 0x88, 0x63, 0x04, 0x45, 0x30, - 0x53, 0x2e, 0xd1, 0x2b, 0xce, 0xd6, 0x6a, 0xe7, 0xb5, 0xa2, 0x42, 0x60, 0xc6, 0x3c, 0x49, 0x11, - 0x66, 0x5c, 0xfc, 0xbf, 0x5b, 0x98, 0xfb, 0x34, 0xfe, 0x30, 0x60, 0xfe, 0x44, 0x16, 0xcc, 0xae, - 0x5a, 0x5d, 0x2f, 0xca, 0x9b, 0x36, 0x26, 0x3c, 0xcf, 0x4b, 0x92, 0xaa, 0xca, 0x42, 0x3d, 0xd2, - 0x71, 0x79, 0x12, 0xa9, 0xc3, 0x71, 0x55, 0x8c, 0xc7, 0xed, 0x9b, 0x50, 0x40, 0xaf, 0x25, 0x92, - 0xe6, 0x64, 0x62, 0x45, 0x29, 0xac, 0x64, 0xfc, 0x8a, 0x52, 0x64, 0xdd, 0xe9, 0xf3, 0xf7, 0x6b, - 0x59, 0x70, 0x0c, 0x57, 0x1f, 0x67, 0x96, 0x8a, 0x66, 0xf3, 0x40, 0xb3, 0x54, 0x62, 0xcb, 0xf8, - 0x3e, 0x5a, 0x46, 0x61, 0x19, 0x1f, 0x54, 0xe8, 0x98, 0xd9, 0x1c, 0x61, 0x86, 0x1d, 0xc4, 0xe6, - 0x18, 0x33, 0xec, 0xf0, 0x6c, 0x8e, 0x37, 0xc5, 0x0e, 0xc9, 0xe6, 0x43, 0x33, 0xb0, 0xfe, 0x9a, - 0x12, 0xb0, 0x39, 0xd2, 0xb6, 0x11, 0xc3, 0xe6, 0xc4, 0xc7, 0xb3, 0xe0, 0xbb, 0x86, 0x64, 0xfc, - 0x88, 0xed, 0x1b, 0xc3, 0xc0, 0x74, 0x88, 0x36, 0x8e, 0x57, 0x2a, 0x60, 0x8e, 0x51, 0xd1, 0x7f, - 0xc9, 0x1c, 0x83, 0x51, 0xe2, 0x25, 0x73, 0x62, 0x1f, 0x7b, 0x91, 0xb2, 0xf1, 0xfb, 0xd8, 0xc7, - 0xd6, 0x9f, 0x3e, 0x38, 0x5f, 0xcf, 0x81, 0x93, 0x98, 0x84, 0x35, 0xa7, 0x65, 0x6d, 0x5e, 0xa5, - 0x54, 0x9c, 0x37, 0xdb, 0xbb, 0xa8, 0x0b, 0xdf, 0x97, 0x95, 0x45, 0xe9, 0xff, 0x07, 0x80, 0xd3, - 0x41, 0x2e, 0x8d, 0x70, 0xc3, 0x80, 0xba, 0x27, 0xaa, 0xb1, 0xfb, 0x6b, 0x0a, 0xa2, 0xce, 0xd6, - 0xfc, 0x42, 0x74, 0xae, 0x3c, 0xac, 0x15, 0x4e, 0x05, 0x5f, 0x7a, 0x1d, 0x3e, 0x32, 0xfb, 0x1d, - 0x3e, 0x6e, 0x05, 0x8a, 0xd9, 0x6a, 0x05, 0x50, 0xf5, 0x6e, 0x66, 0x93, 0x3a, 0x75, 0x9c, 0x05, - 0xe7, 0xec, 0xa2, 0xf0, 0xe8, 0x4b, 0x44, 0xce, 0x2e, 0xf2, 0xd4, 0x79, 0x50, 0xa0, 0x57, 0x34, - 0x05, 0x16, 0xfd, 0xfe, 0x99, 0x59, 0x2e, 0x51, 0xb5, 0xab, 0x89, 0x62, 0x78, 0x57, 0x22, 0xce, - 0xf4, 0x1b, 0xa7, 0x43, 0x3d, 0x59, 0x17, 0x04, 0xec, 0xd9, 0x43, 0x97, 0x3c, 0x9e, 0xdd, 0xb0, - 0x52, 0xa7, 0xd3, 0xbe, 0x6a, 0xb0, 0xd3, 0xf4, 0x89, 0x76, 0xc3, 0xb8, 0x43, 0xf9, 0xd9, 0xde, - 0x43, 0xf9, 0xc9, 0x77, 0xc3, 0x04, 0x3a, 0x46, 0xb1, 0x1b, 0x16, 0x57, 0xe0, 0x18, 0xec, 0x91, - 0x79, 0xaa, 0x35, 0xb3, 0xe0, 0x81, 0x6f, 0xce, 0xf6, 0x75, 0xa7, 0x02, 0xa2, 0x3b, 0x55, 0xbf, - 0xb8, 0x82, 0xb1, 0x41, 0x53, 0xd5, 0xa7, 0x81, 0xc2, 0xa6, 0xe3, 0xee, 0x98, 0xfe, 0xc6, 0x7d, - 0xaf, 0xf7, 0x36, 0x0b, 0xd8, 0xb7, 0x44, 0xf2, 0xe8, 0x2c, 0x2f, 0x5e, 0x8f, 0x3c, 0xdf, 0xea, - 0xb0, 0x70, 0x58, 0xf8, 0x51, 0xbd, 0x19, 0xcc, 0xb2, 0xa8, 0x58, 0x55, 0xd4, 0xf5, 0x50, 0x8b, - 0x1d, 0x4f, 0x16, 0x13, 0xd5, 0xb3, 0x60, 0x86, 0x25, 0x2c, 0x59, 0x6d, 0xd4, 0x65, 0x77, 0x12, - 0x0a, 0x69, 0xea, 0x49, 0x50, 0xb0, 0xba, 0xcf, 0xe9, 0x3a, 0x36, 0xf1, 0xc9, 0x9d, 0xd4, 0xd9, - 0x1b, 0x71, 0xdb, 0xa1, 0xf9, 0x02, 0x65, 0x95, 0x3a, 0xd1, 0xf7, 0x26, 0xc3, 0xcf, 0x0e, 0xb3, - 0x70, 0x48, 0x1c, 0x28, 0x11, 0xa3, 0xb0, 0xdb, 0x6c, 0x22, 0xd4, 0x62, 0xa7, 0x0d, 0xfc, 0xd7, - 0x84, 0x21, 0x14, 0x13, 0x2f, 0x33, 0x0e, 0x29, 0x86, 0xe2, 0x87, 0x4f, 0x80, 0x02, 0x8d, 0x2b, - 0x0e, 0x5f, 0x3e, 0xd7, 0x57, 0x18, 0xe7, 0x44, 0x61, 0xdc, 0x00, 0x33, 0xb6, 0x83, 0xab, 0x5b, - 0x37, 0x5d, 0x73, 0xa7, 0x1b, 0x67, 0x45, 0xa4, 0xe5, 0x06, 0x53, 0x46, 0x95, 0xfb, 0x6d, 0xe5, - 0x88, 0x2e, 0x14, 0xa3, 0xfe, 0xff, 0xc1, 0xd1, 0x8b, 0xec, 0x84, 0x6d, 0x97, 0x95, 0x9c, 0x8d, - 0xf6, 0xb9, 0xeb, 0x29, 0x79, 0x41, 0xfc, 0x73, 0xe5, 0x88, 0xde, 0x5b, 0x98, 0xfa, 0xc3, 0x60, - 0x0e, 0xbf, 0xb6, 0x9c, 0xcb, 0x3e, 0xe1, 0x4a, 0xb4, 0xa2, 0xd1, 0x53, 0xfc, 0x9a, 0xf0, 0xe3, - 0xca, 0x11, 0xbd, 0xa7, 0x28, 0xb5, 0x06, 0xc0, 0xb6, 0xb7, 0xd3, 0x66, 0x05, 0xe7, 0xa2, 0x45, - 0xb2, 0xa7, 0xe0, 0x95, 0xe0, 0xa7, 0x95, 0x23, 0x3a, 0x57, 0x84, 0xba, 0x0a, 0xa6, 0xbc, 0x2b, - 0x1e, 0x2b, 0x2f, 0x1f, 0xbd, 0xb9, 0xdd, 0x53, 0x9e, 0xe1, 0xff, 0xb3, 0x72, 0x44, 0x0f, 0x0b, - 0x50, 0x2b, 0x60, 0xb2, 0x73, 0x91, 0x15, 0x56, 0xe8, 0x73, 0x97, 0x72, 0xff, 0xc2, 0xd6, 0x2f, - 0x06, 0x65, 0x05, 0xbf, 0x63, 0xc2, 0x9a, 0xdd, 0x3d, 0x56, 0xd6, 0x84, 0x34, 0x61, 0x65, 0xff, - 0x1f, 0x4c, 0x58, 0x50, 0x80, 0x5a, 0x01, 0x53, 0x5d, 0xdb, 0xec, 0x74, 0xb7, 0x1d, 0xaf, 0x7b, - 0x6a, 0xb2, 0xc7, 0x2f, 0x32, 0xba, 0xb4, 0x3a, 0xfb, 0x47, 0x0f, 0xff, 0x56, 0x9f, 0x06, 0x4e, - 0xec, 0x92, 0xfb, 0xd9, 0xb4, 0x2b, 0x56, 0xd7, 0xb3, 0xec, 0x2d, 0x3f, 0xb8, 0x1f, 0x1d, 0x4d, - 0xfa, 0x7f, 0x54, 0xe7, 0xd9, 0x29, 0x05, 0x40, 0xfa, 0x26, 0xec, 0xdd, 0x8c, 0xa3, 0xd5, 0x72, - 0x87, 0x13, 0x9e, 0x05, 0x72, 0xf8, 0x13, 0xf1, 0x2c, 0x9c, 0xeb, 0x6f, 0xe8, 0xeb, 0x95, 0x1d, - 0xd2, 0x81, 0xf1, 0x4f, 0x78, 0x6e, 0xb4, 0x9d, 0x75, 0xd7, 0xd9, 0x72, 0x51, 0xb7, 0xcb, 0x1c, - 0x0e, 0xb9, 0x14, 0xdc, 0xc1, 0xad, 0xee, 0x9a, 0xb5, 0x45, 0xb5, 0x27, 0xe6, 0x8e, 0xcd, 0x27, - 0xd1, 0xd5, 0x66, 0x15, 0x5d, 0x26, 0x77, 0x7e, 0x9d, 0x3a, 0xea, 0xaf, 0x36, 0xfd, 0x14, 0x78, - 0x0b, 0x98, 0xe1, 0x3b, 0x19, 0xbd, 0x9c, 0xc4, 0x0a, 0x75, 0x2f, 0xf6, 0x06, 0x6f, 0x06, 0x73, - 0xa2, 0x4c, 0x73, 0x53, 0x8c, 0xe2, 0x0f, 0x85, 0xf0, 0x26, 0x70, 0xb4, 0xa7, 0x63, 0xf9, 0x67, - 0xf6, 0x33, 0xe1, 0x99, 0xfd, 0x33, 0x00, 0x84, 0x52, 0xdc, 0xb7, 0x98, 0x1b, 0xc1, 0x54, 0x20, - 0x97, 0x7d, 0x33, 0x7c, 0x25, 0x03, 0x26, 0x7d, 0x61, 0xeb, 0x97, 0x01, 0xcf, 0x2f, 0x36, 0xb7, - 0x81, 0xc0, 0x96, 0xd9, 0x42, 0x1a, 0x9e, 0x47, 0x42, 0x37, 0x5e, 0xc3, 0xf2, 0xda, 0xfe, 0x71, - 0x94, 0xde, 0x64, 0x75, 0x1d, 0x00, 0x8b, 0x60, 0x64, 0x84, 0xe7, 0x53, 0x9e, 0x92, 0xa0, 0x3f, - 0x50, 0x79, 0xe0, 0xca, 0x38, 0xfb, 0x78, 0x76, 0x78, 0x64, 0x0a, 0xe4, 0xeb, 0xeb, 0xa5, 0xb2, - 0x56, 0x3c, 0xa2, 0xce, 0x01, 0xa0, 0x3d, 0x6f, 0x5d, 0xd3, 0x2b, 0x5a, 0xb5, 0xac, 0x15, 0x33, - 0xf0, 0x55, 0x59, 0x30, 0x15, 0x74, 0x82, 0xbe, 0x8d, 0xd4, 0x98, 0x68, 0x0d, 0xbc, 0xff, 0x61, - 0x7f, 0xa7, 0xe2, 0x85, 0xec, 0x99, 0xe0, 0xda, 0xdd, 0x2e, 0x5a, 0xb2, 0xdc, 0xae, 0xa7, 0x3b, - 0x97, 0x97, 0x1c, 0x37, 0x08, 0x67, 0xe9, 0xdf, 0x73, 0x1c, 0xf1, 0x19, 0x6b, 0x14, 0x2d, 0x44, - 0x8e, 0x30, 0x20, 0x97, 0x59, 0x86, 0xc3, 0x04, 0x5c, 0xae, 0x47, 0x2f, 0x16, 0xee, 0x22, 0xdd, - 0xb9, 0xdc, 0x2d, 0xd9, 0xad, 0xb2, 0xd3, 0xde, 0xdd, 0xb1, 0xbb, 0x4c, 0x27, 0x88, 0xfa, 0x8c, - 0xb9, 0x43, 0x6e, 0x77, 0x99, 0x03, 0xa0, 0x5c, 0x5b, 0x5d, 0xd5, 0xca, 0x46, 0xa5, 0x56, 0x2d, - 0x1e, 0xc1, 0xdc, 0x32, 0x4a, 0x0b, 0xab, 0x98, 0x3b, 0x3f, 0x02, 0x26, 0xfd, 0x3e, 0xbd, 0xef, - 0x52, 0xe7, 0x12, 0x98, 0xf4, 0x7b, 0x39, 0x9b, 0x11, 0x9e, 0xd0, 0x7b, 0x14, 0x6d, 0xc7, 0x74, - 0x3d, 0xe2, 0x3f, 0xed, 0x17, 0xb2, 0x60, 0x76, 0x91, 0x1e, 0xfc, 0x76, 0xf6, 0xc9, 0x8c, 0x02, - 0x15, 0xcc, 0x95, 0x56, 0x57, 0x1b, 0x35, 0xbd, 0x51, 0xad, 0x19, 0x2b, 0x95, 0xea, 0x32, 0x9d, - 0x21, 0x2b, 0xcb, 0xd5, 0x9a, 0xae, 0xd1, 0x09, 0xb2, 0x5e, 0xcc, 0xd0, 0xdb, 0x85, 0x16, 0x26, - 0x41, 0xa1, 0x43, 0xb8, 0x0b, 0xbf, 0xa8, 0x24, 0x3c, 0x69, 0x1a, 0xe0, 0x14, 0x71, 0xff, 0x89, - 0xe0, 0x83, 0x9e, 0xed, 0x73, 0x4e, 0xeb, 0x2c, 0x98, 0xa1, 0xba, 0x5c, 0x97, 0x98, 0xef, 0xd9, - 0x15, 0x82, 0x42, 0x1a, 0xfc, 0x68, 0x36, 0xc1, 0xf1, 0xd3, 0xbe, 0x14, 0x25, 0x53, 0x2e, 0xfe, - 0x6c, 0x98, 0xdb, 0x84, 0x54, 0x30, 0x57, 0xa9, 0x1a, 0x9a, 0x5e, 0x2d, 0xad, 0xb2, 0x2c, 0x8a, - 0x7a, 0x0a, 0x1c, 0xaf, 0xd6, 0x58, 0x00, 0xa7, 0x3a, 0xb9, 0xb7, 0x74, 0x6d, 0xbd, 0xa6, 0x1b, - 0xc5, 0xbc, 0x7a, 0x12, 0xa8, 0xf4, 0x59, 0xb8, 0xf6, 0xb7, 0xa0, 0x3e, 0x11, 0xdc, 0xb4, 0x5a, - 0x59, 0xab, 0x18, 0x8d, 0xda, 0x52, 0x43, 0xaf, 0x5d, 0xa8, 0x63, 0x04, 0x75, 0x6d, 0xb5, 0x84, - 0x05, 0x89, 0xbb, 0x65, 0x68, 0x42, 0xbd, 0x06, 0x1c, 0x25, 0x37, 0x88, 0x91, 0xab, 0x83, 0x69, - 0x7d, 0x93, 0xea, 0x0d, 0xe0, 0x54, 0xa5, 0x5a, 0xdf, 0x58, 0x5a, 0xaa, 0x94, 0x2b, 0x5a, 0xd5, - 0x68, 0xac, 0x6b, 0xfa, 0x5a, 0xa5, 0x5e, 0xc7, 0xff, 0x16, 0xa7, 0xe0, 0x87, 0x15, 0x50, 0xa0, - 0x63, 0x26, 0x7c, 0xaf, 0x02, 0x66, 0xcf, 0x9b, 0x6d, 0x0b, 0x4f, 0x14, 0xe4, 0x72, 0x27, 0x78, - 0xa3, 0xe0, 0x9a, 0xee, 0x91, 0x4b, 0xa0, 0x98, 0x6b, 0x3a, 0x79, 0x81, 0x3f, 0xc9, 0x8b, 0x86, - 0x21, 0x8a, 0xc6, 0xb3, 0x63, 0x80, 0xa0, 0x35, 0xce, 0x0b, 0xb5, 0x45, 0x2c, 0x6e, 0x5e, 0x17, - 0xe0, 0x7c, 0x41, 0xc0, 0xb9, 0x7c, 0xb0, 0xe2, 0x93, 0x81, 0xff, 0x2b, 0xa3, 0x02, 0xbf, 0x08, - 0x66, 0x36, 0xaa, 0xa5, 0x0d, 0x63, 0xa5, 0xa6, 0x57, 0x7e, 0x88, 0x84, 0x81, 0x9d, 0x05, 0x53, - 0x4b, 0x35, 0x7d, 0xa1, 0xb2, 0xb8, 0xa8, 0x55, 0x8b, 0x79, 0xf5, 0x5a, 0x70, 0x4d, 0x5d, 0xd3, - 0xcf, 0x57, 0xca, 0x5a, 0x63, 0xa3, 0x5a, 0x3a, 0x5f, 0xaa, 0xac, 0x92, 0x31, 0xa2, 0x10, 0x73, - 0x31, 0xd5, 0x04, 0xfc, 0xb1, 0x1c, 0x00, 0xb4, 0xe9, 0x58, 0x93, 0xe6, 0xaf, 0x2f, 0xfa, 0xf3, - 0xa4, 0x8b, 0x86, 0xb0, 0x98, 0x88, 0xfe, 0x5b, 0x01, 0x93, 0x2e, 0xfb, 0xc0, 0xcc, 0x27, 0x83, - 0xca, 0xa1, 0x8f, 0x7e, 0x69, 0x7a, 0xf0, 0x3b, 0x7c, 0x5f, 0x92, 0x35, 0x42, 0x24, 0x61, 0xc9, - 0x90, 0x5c, 0x1a, 0x0d, 0x90, 0xf0, 0xc5, 0x19, 0x30, 0x27, 0x36, 0x0c, 0x37, 0x82, 0x28, 0x53, - 0x72, 0x8d, 0x10, 0x7f, 0xe6, 0x94, 0xac, 0xb3, 0x77, 0xb2, 0xe9, 0x14, 0xf8, 0x3d, 0x93, 0x9e, - 0xc6, 0xf4, 0x35, 0x96, 0x62, 0x06, 0x13, 0x8f, 0x95, 0x0e, 0x7a, 0x77, 0xad, 0x71, 0xc5, 0x2b, - 0x2a, 0xf0, 0x91, 0x1c, 0x98, 0x15, 0xee, 0x47, 0x82, 0xff, 0x94, 0x91, 0xb9, 0xf3, 0x84, 0xbb, - 0x79, 0x29, 0x73, 0xd0, 0x9b, 0x97, 0xce, 0xfe, 0x44, 0x06, 0x4c, 0xb0, 0x44, 0xc2, 0xe0, 0x5a, - 0x15, 0xeb, 0x02, 0x47, 0xc1, 0xf4, 0xb2, 0x66, 0x34, 0xea, 0x46, 0x49, 0x37, 0xb4, 0xc5, 0x62, - 0x46, 0x3d, 0x01, 0x8e, 0xad, 0x6b, 0x7a, 0xbd, 0x86, 0xf9, 0xb9, 0xae, 0xd7, 0xc8, 0x40, 0x48, - 0xd9, 0x8c, 0x61, 0x58, 0xd5, 0x16, 0x97, 0xb5, 0xc6, 0x42, 0xa9, 0xae, 0x15, 0x15, 0xfc, 0x6f, - 0xb5, 0x66, 0x68, 0xf5, 0xc6, 0x62, 0xa5, 0xa4, 0x3f, 0x58, 0xcc, 0xe1, 0x7f, 0xeb, 0x86, 0x5e, - 0x32, 0xb4, 0xe5, 0x4a, 0x99, 0xdc, 0xf8, 0x8b, 0x7b, 0x40, 0x1e, 0x4f, 0xa6, 0xda, 0xda, 0xba, - 0xf1, 0x60, 0xb1, 0x90, 0xdc, 0xab, 0xaf, 0xb7, 0x71, 0x63, 0xf6, 0xea, 0x8b, 0xab, 0x7e, 0x0c, - 0x57, 0x43, 0x29, 0xa0, 0x48, 0x29, 0xd0, 0xae, 0x74, 0x90, 0x6b, 0x21, 0xbb, 0x89, 0xe0, 0x25, - 0x99, 0x90, 0x71, 0xfb, 0xe2, 0x57, 0x91, 0x39, 0x82, 0xd3, 0x3c, 0xe9, 0x4b, 0x8f, 0xd2, 0x9e, - 0xdb, 0xa7, 0xb4, 0x7f, 0x2a, 0xa9, 0x5b, 0x5f, 0x2f, 0xb9, 0x23, 0x81, 0xec, 0xe3, 0x49, 0xdc, - 0xfa, 0x06, 0x50, 0x30, 0x96, 0x48, 0x90, 0x11, 0x73, 0x7a, 0x51, 0x81, 0x6f, 0x9f, 0x02, 0x45, - 0x4a, 0x28, 0xe7, 0x2b, 0xf5, 0x8b, 0xec, 0x92, 0xaa, 0x46, 0x82, 0xd0, 0x4f, 0xfe, 0xd1, 0xdc, - 0xac, 0x78, 0x34, 0x57, 0x30, 0xbd, 0x29, 0xbd, 0xfb, 0xdb, 0x49, 0xbb, 0x1f, 0xe7, 0x18, 0x15, - 0x7d, 0x45, 0x52, 0x7a, 0xdd, 0x2f, 0xb6, 0xfa, 0xf1, 0x5c, 0xa4, 0xc2, 0xae, 0x4a, 0xd2, 0x64, - 0x91, 0x89, 0xbf, 0x2f, 0x2a, 0xa9, 0x97, 0xac, 0xe0, 0x98, 0x16, 0x73, 0x89, 0x52, 0x7a, 0x5e, - 0xb2, 0x83, 0x28, 0x48, 0x1f, 0x85, 0xef, 0x65, 0x41, 0xae, 0xee, 0xb8, 0xde, 0xa8, 0x30, 0x48, - 0xba, 0xb3, 0xc7, 0x71, 0xa0, 0x1e, 0xbd, 0x72, 0x4a, 0x6f, 0x67, 0x2f, 0xbe, 0xfe, 0x31, 0x44, - 0xcf, 0x3a, 0x0a, 0xe6, 0x28, 0x25, 0x41, 0x2c, 0xf3, 0xef, 0x66, 0xe9, 0x78, 0xf5, 0x80, 0x2c, - 0x22, 0x67, 0xc1, 0x0c, 0xb7, 0xb3, 0x16, 0xdc, 0xab, 0xc9, 0xa7, 0xc1, 0x5f, 0xe7, 0x71, 0x59, - 0x14, 0x71, 0xe9, 0xb7, 0x6e, 0x0c, 0xc2, 0x81, 0x8f, 0x6a, 0x64, 0x4a, 0x12, 0x88, 0x2b, 0xa6, - 0xf2, 0xf4, 0x11, 0x79, 0xa1, 0x02, 0x0a, 0xcc, 0xb3, 0x69, 0xa4, 0x08, 0x24, 0xed, 0x19, 0x01, - 0x13, 0xe4, 0x3c, 0xa0, 0x94, 0x51, 0xf7, 0x8c, 0xf8, 0xfa, 0xd3, 0xc7, 0xe1, 0x5f, 0x99, 0xcb, - 0x5e, 0x69, 0xcf, 0xb4, 0xda, 0xe6, 0xc5, 0x76, 0x82, 0x00, 0x98, 0x1f, 0x4d, 0x78, 0x48, 0x29, - 0x68, 0xaa, 0x50, 0x5f, 0x04, 0xc7, 0x9f, 0x0e, 0xa6, 0xdc, 0xc0, 0xb0, 0xe6, 0x9f, 0xe1, 0xee, - 0x71, 0x97, 0x64, 0xdf, 0xf5, 0x30, 0x67, 0xa2, 0x13, 0x49, 0x52, 0xf4, 0x8c, 0xe5, 0x04, 0xc5, - 0x74, 0xa9, 0xd5, 0x5a, 0x42, 0xa6, 0xb7, 0xeb, 0xa2, 0x56, 0xa2, 0x29, 0x42, 0x64, 0xd1, 0x14, - 0xcf, 0x09, 0x21, 0x6c, 0xd5, 0xaa, 0x88, 0xce, 0x0f, 0x0e, 0x18, 0x0d, 0x7c, 0x5a, 0x46, 0x32, - 0x24, 0xbd, 0x2d, 0x80, 0xa4, 0x26, 0x40, 0xf2, 0xac, 0xe1, 0x88, 0x48, 0x1f, 0x90, 0x5f, 0x52, - 0xc0, 0x1c, 0xd5, 0x13, 0x46, 0x8d, 0xc9, 0xef, 0x26, 0xf4, 0x84, 0xe0, 0x6e, 0x8b, 0xe0, 0xc9, - 0x19, 0x09, 0x2c, 0x49, 0xfc, 0x26, 0xe4, 0xe8, 0x48, 0x1f, 0x99, 0xcf, 0x16, 0x00, 0xe0, 0xbc, - 0xdb, 0x3e, 0x5a, 0x08, 0x43, 0x48, 0xc1, 0x77, 0xb0, 0xf5, 0x47, 0x5d, 0x88, 0x4d, 0xca, 0x79, - 0xae, 0x05, 0xdb, 0x2a, 0x62, 0xa2, 0xd4, 0xac, 0xf2, 0x67, 0x09, 0x75, 0x5e, 0xe6, 0x5b, 0x36, - 0x70, 0x72, 0x1f, 0x72, 0x94, 0x7b, 0x34, 0x81, 0xf2, 0x3b, 0x88, 0x94, 0x64, 0xa8, 0xad, 0x0e, - 0xb1, 0x96, 0x3c, 0x05, 0x8e, 0xeb, 0x5a, 0x69, 0xb1, 0x56, 0x5d, 0x7d, 0x90, 0xbf, 0x56, 0xa0, - 0xa8, 0xf0, 0x8b, 0x93, 0x54, 0x60, 0x7b, 0x43, 0xc2, 0x31, 0x50, 0xe4, 0x55, 0xdc, 0x6a, 0x85, - 0x5b, 0xce, 0x0f, 0x1e, 0xd5, 0x24, 0x8a, 0x3d, 0x4c, 0x14, 0xde, 0x32, 0xc5, 0x75, 0xa3, 0x9f, - 0x56, 0x40, 0x31, 0xbc, 0x85, 0x96, 0xdd, 0x11, 0x53, 0x13, 0x9d, 0xdf, 0x3a, 0x74, 0x17, 0x25, - 0x74, 0x7e, 0xf3, 0x13, 0xd4, 0x5b, 0xc0, 0x5c, 0x73, 0x1b, 0x35, 0x2f, 0x55, 0x6c, 0x7f, 0x77, - 0x98, 0x6e, 0x25, 0xf6, 0xa4, 0x8a, 0xc0, 0x3c, 0x20, 0x02, 0x23, 0x2e, 0xa2, 0x85, 0x49, 0x9a, - 0x27, 0x2a, 0x02, 0x97, 0x3f, 0x0c, 0x70, 0xa9, 0x0a, 0xb8, 0xdc, 0x3d, 0x54, 0xa9, 0xc9, 0x60, - 0xa9, 0x0e, 0x01, 0x0b, 0x04, 0x27, 0x6b, 0xeb, 0x46, 0xa5, 0x56, 0x6d, 0x6c, 0xd4, 0xb5, 0xc5, - 0xc6, 0x82, 0x0f, 0x4e, 0xbd, 0xa8, 0xc0, 0x6f, 0x64, 0xc1, 0x04, 0x25, 0xab, 0xdb, 0x73, 0x6b, - 0x6c, 0xbc, 0xd7, 0x1f, 0x7c, 0xbb, 0xf4, 0x19, 0xfe, 0x80, 0x11, 0xac, 0x9e, 0x88, 0x71, 0xea, - 0x99, 0x60, 0x82, 0x82, 0xec, 0x3b, 0x8d, 0x9c, 0x8e, 0x18, 0xa5, 0x58, 0x31, 0xba, 0x9f, 0x5d, - 0xf2, 0x3c, 0xff, 0x00, 0x32, 0xd2, 0x9f, 0x59, 0xde, 0xa4, 0x50, 0x35, 0xf8, 0x82, 0xe5, 0x6d, - 0x13, 0xa7, 0x40, 0xf8, 0x5c, 0x19, 0x13, 0xe5, 0xed, 0x20, 0xbf, 0x87, 0x73, 0x0f, 0x70, 0xb0, - 0xa4, 0x99, 0xe0, 0x87, 0xa4, 0x23, 0x5f, 0x09, 0xf2, 0x19, 0xd0, 0x14, 0xbd, 0xe1, 0x39, 0x68, - 0x24, 0x54, 0xa1, 0x70, 0xa8, 0x49, 0xb9, 0x55, 0x49, 0x1c, 0x33, 0x4d, 0x8a, 0xa4, 0xb1, 0xac, - 0xe4, 0x27, 0x56, 0xac, 0xae, 0xe7, 0xb8, 0x57, 0xe1, 0x1b, 0x33, 0x60, 0xe2, 0x3c, 0x72, 0xbb, - 0x96, 0x63, 0xef, 0xdb, 0xd5, 0x3e, 0x03, 0xa6, 0x3b, 0x2e, 0xda, 0xb3, 0x9c, 0xdd, 0x6e, 0x68, - 0x41, 0xe1, 0x93, 0x30, 0x4b, 0xcc, 0x5d, 0x6f, 0xdb, 0x71, 0xc3, 0xc0, 0x06, 0xfe, 0xbb, 0x7a, - 0x1a, 0x00, 0xfa, 0x5c, 0x35, 0x77, 0x10, 0xdb, 0xab, 0xe7, 0x52, 0x54, 0x15, 0xe4, 0x3c, 0x6b, - 0x07, 0xb1, 0xb8, 0x84, 0xe4, 0x19, 0x4b, 0x09, 0x89, 0x22, 0xc6, 0xa2, 0xb5, 0x29, 0xba, 0xff, - 0x0a, 0xff, 0xab, 0x02, 0xa6, 0x97, 0x91, 0xc7, 0x48, 0xed, 0xf2, 0xe1, 0x81, 0x62, 0x62, 0x77, - 0xe3, 0x79, 0xb0, 0x6d, 0x76, 0xfd, 0xdf, 0x02, 0x33, 0xa9, 0x98, 0x18, 0xc6, 0x48, 0x54, 0xb8, - 0x30, 0xa8, 0xf0, 0x91, 0xac, 0xec, 0x81, 0x54, 0xc6, 0xcc, 0x79, 0x8e, 0xc0, 0xc8, 0x41, 0x60, - 0x72, 0x8f, 0xe5, 0xd8, 0x17, 0xb3, 0x96, 0x2f, 0x89, 0x15, 0xa3, 0x07, 0xb9, 0x25, 0x8f, 0xb2, - 0x0e, 0xa6, 0x24, 0x7d, 0xf1, 0xfa, 0xb6, 0x02, 0xa6, 0xeb, 0xdb, 0xce, 0x65, 0x46, 0x00, 0x7f, - 0x63, 0x6d, 0x1c, 0x54, 0x37, 0x80, 0xa9, 0xbd, 0x1e, 0x98, 0xc2, 0x84, 0xe8, 0x8b, 0x55, 0xe1, - 0xc3, 0x4a, 0x52, 0x98, 0x38, 0xe2, 0x46, 0x7e, 0xed, 0xa9, 0xfa, 0x83, 0x60, 0x82, 0x51, 0xcd, - 0x0c, 0x1d, 0xf1, 0x00, 0xfb, 0x99, 0xf9, 0x06, 0xe6, 0xc4, 0x06, 0x26, 0x43, 0x3e, 0xba, 0x71, - 0x63, 0x88, 0x0c, 0x9f, 0x25, 0x81, 0x0c, 0x7c, 0xe0, 0xcb, 0x23, 0x00, 0x1e, 0x7e, 0x27, 0x23, - 0x6b, 0x0e, 0x0c, 0x38, 0x10, 0x50, 0x70, 0xa0, 0x48, 0xfb, 0x03, 0x8b, 0x4b, 0x9f, 0x9f, 0xaf, - 0xca, 0x81, 0x99, 0x45, 0x6b, 0x73, 0x33, 0x18, 0xf5, 0x5e, 0x9a, 0x91, 0x63, 0x69, 0xf4, 0x56, - 0x32, 0xd6, 0x2e, 0x77, 0x5d, 0x17, 0xd9, 0x7e, 0xa3, 0x58, 0x77, 0xea, 0x49, 0x55, 0x6f, 0x05, - 0x47, 0xfd, 0x81, 0xde, 0xcf, 0x48, 0xc5, 0xb2, 0x37, 0x19, 0x7e, 0x4b, 0x7a, 0x2f, 0xc9, 0xe7, - 0x28, 0xdf, 0xa4, 0x88, 0x0e, 0x78, 0x0f, 0x98, 0xdd, 0xa6, 0xb9, 0xc9, 0x82, 0xdb, 0x1f, 0x2c, - 0x4f, 0xf6, 0x44, 0x34, 0x5d, 0x43, 0xdd, 0xae, 0xb9, 0x85, 0x74, 0x31, 0x73, 0x4f, 0xf7, 0x55, - 0x92, 0x5c, 0x2b, 0x22, 0xb7, 0x2d, 0x25, 0xd1, 0x92, 0xf4, 0xa5, 0xe3, 0xab, 0x8f, 0x07, 0xb9, - 0x25, 0xab, 0x8d, 0xe0, 0xcf, 0x64, 0xc1, 0x94, 0x8e, 0x9a, 0x8e, 0xdd, 0xc4, 0x6f, 0x9c, 0x63, - 0xc9, 0x3f, 0xf0, 0x7d, 0xe7, 0x7e, 0x11, 0x9a, 0xdb, 0x84, 0x06, 0xe1, 0x72, 0xe6, 0x83, 0x32, - 0x22, 0xfa, 0xcd, 0xeb, 0x03, 0xde, 0x94, 0x05, 0xde, 0x9c, 0x93, 0x2f, 0x6a, 0x0c, 0x01, 0xd3, - 0xb1, 0xc2, 0xbf, 0xb9, 0xd9, 0x76, 0x4c, 0xc1, 0xe4, 0xd4, 0xab, 0xdb, 0xdc, 0x06, 0x8a, 0xfe, - 0xf9, 0x00, 0xc7, 0x5b, 0xb7, 0x6c, 0x3b, 0x38, 0x80, 0xba, 0x2f, 0x5d, 0xdc, 0x2d, 0x8d, 0x8d, - 0xe1, 0x41, 0xda, 0xce, 0x6a, 0x8f, 0x90, 0xec, 0x5b, 0xc0, 0xdc, 0xc5, 0xab, 0x1e, 0xea, 0xb2, - 0x5c, 0xac, 0xda, 0x9c, 0xde, 0x93, 0x0a, 0xdf, 0x23, 0x15, 0xeb, 0x23, 0xa6, 0xc2, 0x64, 0xac, - 0x5e, 0x19, 0x62, 0xdd, 0x75, 0x1c, 0x14, 0xab, 0xb5, 0x45, 0x8d, 0xf8, 0x39, 0xf9, 0x8e, 0x23, - 0x5b, 0xf0, 0x65, 0x0a, 0x98, 0x21, 0x4e, 0x03, 0x3e, 0x0a, 0x37, 0x49, 0xac, 0x02, 0xe0, 0x97, - 0xa4, 0x7d, 0xa0, 0x48, 0x93, 0xf9, 0x0a, 0xa2, 0x19, 0xbd, 0x69, 0xb5, 0x7b, 0x19, 0x9d, 0xd7, - 0x7b, 0x52, 0xfb, 0x00, 0xa2, 0xf4, 0x05, 0xe4, 0x77, 0xa4, 0x1c, 0xa1, 0x06, 0x51, 0x77, 0x58, - 0xa8, 0x7c, 0x40, 0x01, 0xd3, 0x78, 0xd5, 0xe1, 0x83, 0x52, 0x13, 0x40, 0x71, 0xec, 0xf6, 0xd5, - 0xd0, 0x18, 0xe1, 0xbf, 0x26, 0xea, 0x24, 0x7f, 0x29, 0xbd, 0x5e, 0x26, 0x2c, 0xe2, 0x68, 0x19, - 0x13, 0x7e, 0xef, 0x97, 0x5a, 0x45, 0x0f, 0x20, 0xee, 0xb0, 0xe0, 0xfb, 0xcd, 0x3c, 0x28, 0x6c, - 0x74, 0x08, 0x72, 0x5f, 0xcb, 0xca, 0x44, 0xb7, 0xde, 0xe7, 0x04, 0x8f, 0xd5, 0xac, 0xb6, 0xd3, - 0x34, 0xdb, 0xeb, 0xe1, 0x69, 0xa2, 0x30, 0x41, 0xbd, 0x9b, 0xf9, 0xc5, 0xd1, 0xa3, 0x58, 0xb7, - 0xc4, 0x06, 0x7e, 0x26, 0x3c, 0xe2, 0x0e, 0x1c, 0xdc, 0x0e, 0x8e, 0xb5, 0xac, 0xae, 0x79, 0xb1, - 0x8d, 0x34, 0xbb, 0xe9, 0x5e, 0xa5, 0xec, 0xa0, 0x3e, 0x44, 0xfb, 0x3f, 0xa8, 0xf7, 0x82, 0x7c, - 0xd7, 0xbb, 0xda, 0xa6, 0x0b, 0x3f, 0xfe, 0x7c, 0x42, 0x64, 0x55, 0x75, 0x9c, 0x5d, 0xa7, 0x7f, - 0xf1, 0x97, 0x3e, 0x4e, 0x48, 0x5e, 0x60, 0x79, 0x27, 0x28, 0x38, 0xae, 0xb5, 0x65, 0xd1, 0xfb, - 0x14, 0xe6, 0xf6, 0xc5, 0x33, 0xa3, 0xaa, 0x40, 0x8d, 0x64, 0xd1, 0x59, 0x56, 0xf8, 0xfe, 0xac, - 0x6c, 0xf0, 0x14, 0x42, 0x23, 0x05, 0x67, 0x3c, 0x97, 0x58, 0xbe, 0x56, 0x2a, 0xac, 0x49, 0x34, - 0x59, 0xe9, 0x4f, 0xc2, 0x9f, 0xcb, 0x82, 0xc9, 0x45, 0xe7, 0xb2, 0x4d, 0x04, 0xf6, 0x2e, 0x39, - 0x9d, 0xb5, 0xcf, 0x41, 0x37, 0xf1, 0xea, 0xad, 0x58, 0xaf, 0x76, 0xd2, 0x5a, 0xbf, 0xca, 0x08, - 0x18, 0x62, 0x7b, 0x80, 0xe4, 0x55, 0x49, 0x71, 0xf5, 0xa4, 0xcf, 0xd7, 0x3f, 0x51, 0x40, 0x6e, - 0xd1, 0x75, 0x3a, 0xf0, 0x6d, 0x99, 0x04, 0x1b, 0xfe, 0x2d, 0xd7, 0xe9, 0x18, 0xe4, 0x16, 0x94, - 0xd0, 0x95, 0x9f, 0x4f, 0x53, 0xef, 0x02, 0x93, 0x1d, 0xa7, 0x6b, 0x79, 0xfe, 0x72, 0x60, 0xee, - 0x8e, 0xc7, 0xf5, 0xed, 0x95, 0xeb, 0x2c, 0x93, 0x1e, 0x64, 0xc7, 0xa3, 0x2f, 0x61, 0x21, 0xe6, - 0x0b, 0x66, 0xa3, 0x7f, 0x13, 0x4c, 0x4f, 0x2a, 0x7c, 0x39, 0x8f, 0xe4, 0xb3, 0x44, 0x24, 0x9f, - 0xd0, 0x87, 0xc3, 0xae, 0xd3, 0x19, 0xc9, 0x16, 0xdd, 0xab, 0x03, 0x54, 0x9f, 0x2d, 0xa0, 0x7a, - 0x9b, 0x54, 0x9d, 0xe9, 0x23, 0xfa, 0xfe, 0x1c, 0x00, 0x44, 0x5d, 0xd8, 0xc0, 0x0b, 0x19, 0x39, - 0x5d, 0xe9, 0xa7, 0x72, 0x1c, 0x2f, 0x4b, 0x22, 0x2f, 0x9f, 0x14, 0xa1, 0x8d, 0x90, 0xe2, 0x23, - 0x38, 0x5a, 0x02, 0xf9, 0x5d, 0xfc, 0x99, 0x71, 0x54, 0xb2, 0x08, 0xf2, 0xaa, 0xd3, 0x3f, 0xe1, - 0x1f, 0x67, 0x40, 0x9e, 0x24, 0xa8, 0xa7, 0x01, 0x20, 0x13, 0x34, 0x3d, 0x14, 0x92, 0x21, 0x53, - 0x31, 0x97, 0x42, 0xa4, 0xd5, 0x6a, 0xb1, 0xcf, 0x54, 0xf5, 0x0d, 0x13, 0xf0, 0xdf, 0x64, 0xda, - 0x26, 0x65, 0xb1, 0x89, 0x9c, 0x4b, 0xc1, 0x7f, 0x93, 0xb7, 0x55, 0xb4, 0x49, 0x83, 0xe1, 0xe6, - 0xf4, 0x30, 0x21, 0xf8, 0x7b, 0x35, 0xb8, 0xf0, 0xc4, 0xff, 0x9b, 0xa4, 0xe0, 0x45, 0x2d, 0x11, - 0xcb, 0x85, 0xb0, 0x8a, 0x02, 0xc9, 0xd4, 0x9b, 0x0c, 0xdf, 0x10, 0x88, 0xcd, 0xa2, 0x20, 0x36, - 0x4f, 0x49, 0xc0, 0xde, 0xf4, 0x85, 0xe7, 0x2b, 0x79, 0x30, 0x55, 0x75, 0x5a, 0x4c, 0x76, 0xb8, - 0x85, 0xdf, 0xc7, 0xf3, 0x89, 0x16, 0x7e, 0x41, 0x19, 0x11, 0x02, 0x72, 0xbf, 0x28, 0x20, 0x72, - 0x25, 0xf0, 0xf2, 0xa1, 0x2e, 0x80, 0x02, 0x91, 0xde, 0xfd, 0x17, 0xd9, 0xc4, 0x15, 0x41, 0x58, - 0xab, 0xb3, 0x3f, 0xff, 0xcd, 0xc9, 0xd8, 0x7f, 0x02, 0x79, 0xd2, 0xc0, 0x98, 0xbd, 0x11, 0xb1, - 0xa1, 0xd9, 0xf8, 0x86, 0x2a, 0xf1, 0x0d, 0xcd, 0xf5, 0x36, 0x34, 0xc9, 0x7a, 0x3e, 0x4a, 0x42, - 0xd2, 0x97, 0xf1, 0xff, 0x31, 0x01, 0x40, 0xd5, 0xdc, 0xb3, 0xb6, 0xe8, 0xde, 0xea, 0x5f, 0xf8, - 0xeb, 0x18, 0xb6, 0x0b, 0xfa, 0x9f, 0xb9, 0x89, 0xf0, 0x2e, 0x30, 0xc1, 0xe6, 0x3d, 0xd6, 0x90, - 0x1b, 0x85, 0x86, 0x84, 0xa5, 0x50, 0xf5, 0xf2, 0x8a, 0xa7, 0xfb, 0xf9, 0x85, 0xab, 0xfd, 0xb2, - 0x3d, 0x57, 0xfb, 0xf5, 0xdd, 0x1d, 0x88, 0xba, 0xf0, 0x0f, 0xbe, 0x47, 0x7a, 0x83, 0x8a, 0xa3, - 0x87, 0x6b, 0x51, 0x44, 0x17, 0xbc, 0x13, 0x4c, 0x38, 0xc1, 0x76, 0xb0, 0x12, 0x69, 0xcf, 0xaa, - 0xd8, 0x9b, 0x8e, 0xee, 0xe7, 0x94, 0xdc, 0x95, 0x92, 0xa2, 0x63, 0x2c, 0x87, 0x1c, 0x4e, 0x2e, - 0xfb, 0x81, 0x85, 0x70, 0x3b, 0x2e, 0x58, 0xde, 0xf6, 0xaa, 0x65, 0x5f, 0xea, 0xc2, 0xff, 0x20, - 0xa7, 0x41, 0x72, 0xf8, 0x67, 0x93, 0xe1, 0x2f, 0xc6, 0x6d, 0xa8, 0x8b, 0xa8, 0xdd, 0x1b, 0x55, - 0x4a, 0x7f, 0x6a, 0x23, 0x00, 0xbc, 0x1b, 0x14, 0x28, 0xa1, 0x6c, 0x10, 0x3d, 0x1b, 0x89, 0x5f, - 0x50, 0x92, 0xce, 0xfe, 0x80, 0x8f, 0x04, 0x38, 0x9e, 0x17, 0x70, 0x5c, 0x38, 0x10, 0x65, 0xa9, - 0x43, 0x7a, 0xf6, 0xa9, 0x60, 0x82, 0x71, 0x5a, 0x9d, 0xe3, 0x7b, 0x71, 0xf1, 0x88, 0x0a, 0x40, - 0x61, 0xcd, 0xd9, 0x43, 0x86, 0x53, 0xcc, 0xe0, 0x67, 0x4c, 0x9f, 0xe1, 0x14, 0xb3, 0xf0, 0x35, - 0x93, 0x60, 0x32, 0x88, 0xe8, 0xf2, 0xb9, 0x2c, 0x28, 0x86, 0x97, 0xf0, 0xd3, 0x16, 0xc9, 0xfb, - 0x56, 0xfe, 0x92, 0xb4, 0x83, 0x44, 0x10, 0x69, 0xa5, 0xb7, 0x32, 0xc9, 0x5b, 0xc6, 0xdf, 0x2a, - 0xe5, 0x30, 0x21, 0x5b, 0x4b, 0xfa, 0x5d, 0xed, 0x53, 0x59, 0x90, 0x2f, 0xb7, 0x1d, 0x1b, 0x25, - 0xba, 0x64, 0xbc, 0xff, 0x8e, 0x02, 0xfc, 0xf1, 0xac, 0xac, 0xae, 0x11, 0x32, 0x00, 0xd7, 0x2d, - 0xc9, 0x5b, 0xb9, 0x49, 0x2a, 0xb6, 0xe8, 0xf4, 0x19, 0xfa, 0x8d, 0x2c, 0x98, 0xa2, 0xb1, 0x51, - 0x4a, 0xed, 0x36, 0x7c, 0x5c, 0xc8, 0xd4, 0x3e, 0x51, 0x71, 0xe0, 0xef, 0x48, 0x3b, 0xb8, 0x07, - 0xad, 0x0a, 0xca, 0x4e, 0x10, 0x24, 0x26, 0x99, 0xbf, 0xb5, 0xdc, 0x9e, 0xd8, 0x40, 0x82, 0xd2, - 0x67, 0xf5, 0x9f, 0x67, 0xb1, 0x02, 0x60, 0x5f, 0x5a, 0x77, 0xd1, 0x9e, 0x85, 0x2e, 0xc3, 0xeb, - 0x43, 0x66, 0xef, 0x0f, 0xfc, 0xf0, 0x66, 0x69, 0x23, 0x0e, 0x57, 0x64, 0xe4, 0x96, 0xd4, 0x74, - 0x3b, 0xcc, 0xc4, 0x46, 0xf1, 0xde, 0x68, 0x1c, 0x5c, 0x31, 0x3a, 0x9f, 0x5d, 0xd2, 0x66, 0x13, - 0x4d, 0x45, 0xfa, 0x8c, 0x7d, 0x78, 0x02, 0x4c, 0x6e, 0xd8, 0xdd, 0x4e, 0xdb, 0xec, 0x6e, 0xc3, - 0xef, 0x2a, 0xc1, 0x1d, 0xdf, 0x4f, 0x17, 0xce, 0x97, 0xff, 0xe8, 0x2e, 0x72, 0x7d, 0x7f, 0x29, - 0xfa, 0xd2, 0xff, 0x12, 0x59, 0xf8, 0x7e, 0x45, 0x76, 0x91, 0xea, 0x57, 0x1a, 0x7f, 0xf9, 0x75, - 0x05, 0x4c, 0x76, 0xac, 0xa6, 0xb7, 0xeb, 0x06, 0x57, 0x92, 0x3e, 0x59, 0xae, 0x94, 0x75, 0xfa, - 0x97, 0x1e, 0xfc, 0x0e, 0x4d, 0x30, 0xc1, 0x12, 0xf7, 0x6d, 0x0b, 0xed, 0x3f, 0x2f, 0x79, 0x12, - 0x14, 0x4c, 0xd7, 0xb3, 0xba, 0xfe, 0x95, 0xcf, 0xec, 0x0d, 0x0f, 0x97, 0xf4, 0x69, 0xc3, 0x6d, - 0xfb, 0x91, 0x28, 0x82, 0x04, 0xf8, 0x01, 0xa9, 0xf5, 0x63, 0x7c, 0xcb, 0x93, 0x41, 0xfe, 0xc0, - 0x10, 0xb6, 0xe6, 0x6b, 0xc1, 0x35, 0x7a, 0xc9, 0xd0, 0x1a, 0x34, 0x70, 0x41, 0x10, 0xa3, 0xa0, - 0x05, 0xbf, 0xcb, 0xdb, 0xef, 0xc4, 0x39, 0x82, 0x71, 0x31, 0x9c, 0x23, 0x82, 0x84, 0x98, 0x39, - 0xe2, 0x37, 0xa5, 0x77, 0x77, 0x02, 0x96, 0x0c, 0xb0, 0xe5, 0xc5, 0xdd, 0xfc, 0xf2, 0x41, 0xa9, - 0x9d, 0x9a, 0x41, 0x35, 0x1d, 0x22, 0xfb, 0x7f, 0x7d, 0x02, 0x4c, 0x2c, 0x9b, 0xed, 0x36, 0x72, - 0xaf, 0xe2, 0xa9, 0xa5, 0xe8, 0x53, 0xb8, 0x66, 0xda, 0xd6, 0x26, 0x5e, 0xdf, 0xc7, 0x0e, 0x7a, - 0xef, 0x91, 0x8e, 0x2a, 0xca, 0xea, 0x98, 0xef, 0x2d, 0x3f, 0x82, 0xe7, 0xe7, 0x40, 0xce, 0xb2, - 0x37, 0x1d, 0x36, 0xf4, 0xf5, 0x5a, 0xd1, 0xfd, 0x9f, 0xc9, 0x12, 0x84, 0x64, 0x94, 0x0c, 0x2c, - 0x2a, 0x49, 0x45, 0xfa, 0x23, 0xe0, 0x6f, 0xe5, 0xc0, 0xac, 0x4f, 0x44, 0xc5, 0x6e, 0xa1, 0x2b, - 0xbc, 0x49, 0xe5, 0x65, 0x39, 0xd9, 0x43, 0x51, 0xbd, 0xed, 0x21, 0x45, 0x45, 0xb0, 0xd4, 0x00, - 0xa0, 0x69, 0x7a, 0x68, 0xcb, 0x71, 0xad, 0x60, 0x5c, 0x7b, 0x5a, 0x92, 0xd2, 0xca, 0xf4, 0xef, - 0xab, 0x3a, 0x57, 0x8e, 0x7a, 0x2f, 0x98, 0x46, 0xc1, 0xb9, 0x67, 0xdf, 0xe4, 0x12, 0x8b, 0x17, - 0x9f, 0x1f, 0xfe, 0xb9, 0xd4, 0xd9, 0x2b, 0x99, 0x66, 0x26, 0xc3, 0xac, 0x31, 0x5c, 0x1f, 0xda, - 0xa8, 0xae, 0x95, 0xf4, 0xfa, 0x4a, 0x69, 0x75, 0xb5, 0x52, 0x5d, 0x0e, 0x82, 0x78, 0xa8, 0x60, - 0x6e, 0xb1, 0x76, 0xa1, 0xca, 0x45, 0x59, 0xc9, 0xc1, 0x75, 0x30, 0xe9, 0xf3, 0xab, 0x9f, 0xb3, - 0x23, 0xcf, 0x33, 0xe6, 0xec, 0xc8, 0x25, 0x61, 0x25, 0xcb, 0x6a, 0x06, 0x0e, 0x33, 0xe4, 0x19, - 0xfe, 0x91, 0x09, 0xf2, 0xc4, 0x36, 0x0e, 0xdf, 0x49, 0xee, 0x84, 0xee, 0xb4, 0xcd, 0x26, 0x82, - 0x3b, 0x09, 0xb4, 0x6a, 0x3f, 0xcc, 0x7d, 0x76, 0x5f, 0x98, 0x7b, 0xf2, 0xc8, 0xb4, 0xb7, 0xe3, - 0xfd, 0xec, 0xf1, 0x3a, 0xcd, 0x22, 0x1e, 0x53, 0x8a, 0xdd, 0x25, 0xa1, 0x66, 0x7c, 0x46, 0x66, - 0x84, 0x48, 0x46, 0xd3, 0x94, 0x4c, 0xa3, 0x94, 0xdb, 0x4f, 0x89, 0xa3, 0x28, 0xfd, 0x1e, 0xff, - 0xc5, 0x1c, 0xc8, 0xd7, 0x3b, 0x6d, 0xcb, 0x83, 0xaf, 0xcc, 0x8e, 0x04, 0x33, 0x7a, 0x35, 0x81, - 0x32, 0xf0, 0x6a, 0x82, 0x70, 0x17, 0x34, 0x27, 0xb1, 0x0b, 0x6a, 0xa0, 0x2b, 0x9e, 0xb8, 0x0b, - 0x7a, 0x17, 0x0b, 0xc4, 0x45, 0xf7, 0x50, 0x9f, 0xd0, 0x87, 0xa5, 0xa4, 0x59, 0x7d, 0x22, 0xbc, - 0x9d, 0x7d, 0x2a, 0x0b, 0x34, 0x05, 0x40, 0x61, 0xa1, 0x66, 0x18, 0xb5, 0xb5, 0xe2, 0x11, 0x12, - 0xa1, 0xa4, 0xb6, 0x5e, 0xcc, 0xa8, 0x53, 0x20, 0x5f, 0xa9, 0x56, 0x35, 0xbd, 0x98, 0x25, 0xa1, - 0xaf, 0x2a, 0xc6, 0xaa, 0x56, 0x54, 0xc4, 0x38, 0xd5, 0xb1, 0x6a, 0xb4, 0x58, 0x77, 0x9a, 0xe2, - 0x25, 0xa7, 0x50, 0x47, 0xd3, 0x93, 0xbe, 0x70, 0xfd, 0x17, 0x05, 0xe4, 0xd7, 0x90, 0xbb, 0x85, - 0xe0, 0x8f, 0x26, 0xd8, 0xac, 0xdb, 0xb4, 0xdc, 0x2e, 0x0d, 0x14, 0x16, 0x6e, 0xd6, 0xf1, 0x69, - 0xea, 0xcd, 0x60, 0xb6, 0x8b, 0x9a, 0x8e, 0xdd, 0xf2, 0x33, 0xd1, 0xf1, 0x48, 0x4c, 0x84, 0xaf, - 0x48, 0x08, 0x19, 0x21, 0x74, 0x24, 0x3b, 0x6e, 0x49, 0x80, 0xe9, 0x57, 0x6b, 0xfa, 0xc0, 0x7c, - 0x4b, 0xc1, 0x3f, 0x75, 0xae, 0xc2, 0x57, 0x48, 0xef, 0xa2, 0xde, 0x0e, 0x0a, 0x44, 0x4c, 0xfd, - 0x39, 0xba, 0xff, 0x78, 0xcc, 0xf2, 0xa8, 0x0b, 0xe0, 0x58, 0x17, 0xb5, 0x51, 0xd3, 0x43, 0x2d, - 0xdc, 0x75, 0xf5, 0x81, 0x83, 0xc2, 0xfe, 0xec, 0xf0, 0x4f, 0x79, 0x00, 0xef, 0x11, 0x01, 0xbc, - 0xa5, 0x0f, 0x2b, 0x71, 0x83, 0xa2, 0x75, 0x65, 0xdc, 0x8c, 0x7a, 0xdb, 0x09, 0x8c, 0xdb, 0xfe, - 0x3b, 0xfe, 0xb6, 0xed, 0xed, 0xb4, 0xc9, 0x37, 0xe6, 0xc1, 0xef, 0xbf, 0xab, 0xf3, 0x60, 0xc2, - 0xb4, 0xaf, 0x92, 0x4f, 0xb9, 0x98, 0x56, 0xfb, 0x99, 0xe0, 0x6b, 0x02, 0xe4, 0xef, 0x13, 0x90, - 0x7f, 0x92, 0x1c, 0xb9, 0xe9, 0x03, 0xff, 0x93, 0x13, 0x20, 0xbf, 0x6e, 0x76, 0x3d, 0x04, 0xff, - 0x6f, 0x45, 0x16, 0xf9, 0x5b, 0xc0, 0xdc, 0xa6, 0xd3, 0xdc, 0xed, 0xa2, 0x96, 0xd8, 0x29, 0x7b, - 0x52, 0x47, 0x81, 0xb9, 0x7a, 0x1b, 0x28, 0xfa, 0x89, 0xac, 0x58, 0x7f, 0x3b, 0x7d, 0x5f, 0x3a, - 0x89, 0x7a, 0xdc, 0x5d, 0x37, 0x5d, 0xaf, 0xb6, 0x49, 0xd2, 0x82, 0xa8, 0xc7, 0x7c, 0xa2, 0x00, - 0x7d, 0x21, 0x06, 0xfa, 0x89, 0x68, 0xe8, 0x27, 0x25, 0xa0, 0x57, 0x4b, 0x60, 0x72, 0xd3, 0x6a, - 0x23, 0xf2, 0xc3, 0x14, 0xf9, 0xa1, 0xdf, 0x9c, 0x44, 0x78, 0x1f, 0xcc, 0x49, 0x4b, 0x56, 0x1b, - 0xe9, 0xc1, 0x6f, 0xfe, 0x42, 0x06, 0x84, 0x0b, 0x99, 0x55, 0xea, 0xdf, 0x8a, 0x15, 0x2f, 0xdb, - 0xdc, 0x41, 0xbe, 0x11, 0xcd, 0x66, 0xa7, 0x47, 0x5a, 0xa6, 0x67, 0x12, 0x30, 0x66, 0x74, 0xf2, - 0x2c, 0xfa, 0x77, 0x28, 0xbd, 0xfe, 0x1d, 0x2f, 0x52, 0x92, 0x8d, 0x88, 0x3e, 0xb1, 0x11, 0x3d, - 0xea, 0xa2, 0x0f, 0x10, 0xd5, 0x14, 0x83, 0x77, 0x0c, 0x4c, 0xd3, 0x74, 0x91, 0xb7, 0xce, 0x7b, - 0x54, 0xe4, 0x75, 0x31, 0x91, 0xb8, 0xd6, 0x75, 0xeb, 0xe6, 0x0e, 0x22, 0x95, 0x95, 0xf1, 0x37, - 0xe6, 0x32, 0xb5, 0x2f, 0x3d, 0x1c, 0x7f, 0xf3, 0xa3, 0x1e, 0x7f, 0xfb, 0xb5, 0x31, 0xfd, 0x6e, - 0xf8, 0xba, 0x1c, 0x50, 0xca, 0xbb, 0xde, 0x63, 0x7a, 0xf8, 0xfd, 0x9e, 0xb4, 0xbf, 0x0a, 0x1b, - 0xcf, 0x22, 0x2f, 0x05, 0x1f, 0xd3, 0xe8, 0x9b, 0x50, 0x4a, 0xe4, 0xfc, 0x62, 0xa2, 0xda, 0x96, - 0xbe, 0x8c, 0xbc, 0x4d, 0x09, 0x1c, 0x1e, 0x5f, 0x98, 0x39, 0xb8, 0x6a, 0x0e, 0xe9, 0xf8, 0xc4, - 0x8d, 0x0c, 0xc1, 0xbb, 0x3f, 0xf0, 0xe4, 0x84, 0x18, 0x69, 0x64, 0x9b, 0x9c, 0xb0, 0x72, 0x46, - 0xa7, 0x2f, 0xf0, 0x55, 0xd2, 0x6e, 0xe0, 0x94, 0x6d, 0xb1, 0x2e, 0x81, 0xc9, 0x74, 0x2a, 0xb9, - 0x8b, 0x1f, 0x63, 0xaa, 0x4d, 0x1f, 0xb0, 0xbf, 0x8f, 0x36, 0x19, 0x0e, 0x83, 0x18, 0x7c, 0xad, - 0xf4, 0xb6, 0x12, 0x6d, 0xf6, 0x00, 0x7b, 0x61, 0x32, 0x7e, 0xcb, 0x6d, 0x3a, 0xc5, 0x56, 0x9c, - 0x3e, 0xc7, 0xbf, 0xa9, 0x80, 0x02, 0xdd, 0x4a, 0x84, 0x6f, 0xc9, 0x24, 0xb8, 0x31, 0xdb, 0x13, - 0x5d, 0x01, 0x83, 0xf7, 0x24, 0x36, 0x07, 0xc1, 0x65, 0x30, 0x97, 0xc8, 0x65, 0x50, 0x3c, 0x57, - 0x29, 0xd1, 0x8f, 0x68, 0x1b, 0x53, 0x5e, 0x4e, 0x26, 0xe9, 0x61, 0x7d, 0x09, 0x4a, 0x1f, 0xef, - 0x9f, 0xce, 0x83, 0x19, 0x5a, 0xf5, 0x05, 0xab, 0xb5, 0x85, 0x3c, 0xf8, 0xee, 0xec, 0xf7, 0x0f, - 0xea, 0x6a, 0x15, 0xcc, 0x5c, 0x26, 0x64, 0xaf, 0x9a, 0x57, 0x9d, 0x5d, 0x8f, 0x59, 0x2e, 0x6e, - 0x8b, 0xb5, 0x7b, 0xd0, 0x76, 0xce, 0xd3, 0x3f, 0x74, 0xe1, 0x7f, 0xcc, 0x63, 0x6a, 0xf0, 0xa7, - 0x8e, 0x58, 0x05, 0xa2, 0x64, 0xf1, 0x49, 0xea, 0x49, 0x50, 0xd8, 0xb3, 0xd0, 0xe5, 0x4a, 0x8b, - 0x69, 0xb7, 0xec, 0x4d, 0x3c, 0x42, 0x1e, 0xbb, 0xff, 0xca, 0xc3, 0xcd, 0x68, 0x49, 0x57, 0x0a, - 0xe5, 0x76, 0x61, 0x07, 0x92, 0x35, 0x86, 0x33, 0xbe, 0xe2, 0xc5, 0x8a, 0x49, 0x2e, 0xec, 0x8f, - 0x52, 0x9c, 0xc5, 0x80, 0x16, 0xb1, 0x27, 0x48, 0x28, 0x03, 0x46, 0x7c, 0xe7, 0xa2, 0x5c, 0x94, - 0x85, 0x01, 0x55, 0xa7, 0xcf, 0xf9, 0x37, 0x28, 0x60, 0xaa, 0x8e, 0xbc, 0x25, 0x0b, 0xb5, 0x5b, - 0x5d, 0xe8, 0x1e, 0x5c, 0x35, 0x3a, 0x07, 0x0a, 0x9b, 0xa4, 0xb0, 0x41, 0xe7, 0x0f, 0x58, 0x36, - 0xf8, 0xba, 0xac, 0xec, 0xce, 0x2e, 0xb3, 0xbe, 0xf9, 0xd4, 0x8e, 0x04, 0x26, 0x39, 0xcf, 0xdc, - 0xf8, 0x9a, 0xd3, 0x47, 0xe9, 0xed, 0x0a, 0x98, 0x61, 0x37, 0xb1, 0x95, 0xda, 0xd6, 0x96, 0x0d, - 0x77, 0x47, 0xd0, 0x43, 0xd4, 0xa7, 0x80, 0xbc, 0x89, 0x4b, 0x63, 0x4e, 0xfa, 0xb0, 0xef, 0xe0, - 0x49, 0xea, 0xd3, 0x69, 0xc6, 0x04, 0xc1, 0x14, 0x43, 0xc1, 0xf6, 0x69, 0x1e, 0x63, 0x30, 0xc5, - 0x81, 0x95, 0xa7, 0x8f, 0xd8, 0x97, 0x15, 0x70, 0x9c, 0x11, 0x70, 0x1e, 0xb9, 0x9e, 0xd5, 0x34, - 0xdb, 0x14, 0xb9, 0x17, 0x67, 0x46, 0x01, 0xdd, 0x0a, 0x98, 0xdd, 0xe3, 0x8b, 0x65, 0x10, 0x9e, - 0xed, 0x0b, 0xa1, 0x40, 0x80, 0x2e, 0xfe, 0x98, 0x20, 0x28, 0x9d, 0xc0, 0x55, 0xa1, 0xcc, 0x31, - 0x06, 0xa5, 0x93, 0x26, 0x22, 0x7d, 0x88, 0x5f, 0x9e, 0xa3, 0x01, 0x6a, 0xc2, 0xe1, 0xf3, 0x2f, - 0xa4, 0xb1, 0xdd, 0x00, 0xd3, 0x04, 0x4b, 0xfa, 0x23, 0x33, 0x43, 0xc4, 0x08, 0x71, 0x30, 0xee, - 0xb0, 0xcb, 0x9f, 0x82, 0x7f, 0x75, 0xbe, 0x1c, 0x78, 0x01, 0x80, 0xf0, 0x13, 0x3f, 0x48, 0x67, - 0xa2, 0x06, 0xe9, 0xac, 0xdc, 0x20, 0xfd, 0x66, 0xe9, 0xe0, 0x25, 0xfd, 0xc9, 0x3e, 0xb8, 0x78, - 0xc8, 0x85, 0xad, 0x18, 0x5c, 0x7b, 0xfa, 0x72, 0xf1, 0x9a, 0x5c, 0xef, 0x95, 0xdb, 0x1f, 0x1d, - 0xc9, 0x7a, 0x8a, 0x1f, 0x0f, 0x94, 0x9e, 0xf1, 0xe0, 0x00, 0x9a, 0xf4, 0xad, 0xe0, 0x28, 0xad, - 0xa2, 0x1c, 0x90, 0x95, 0xa7, 0xa1, 0x19, 0x7a, 0x92, 0xe1, 0xa3, 0x43, 0x08, 0xc1, 0xa0, 0xfb, - 0xc0, 0xe3, 0x06, 0xb9, 0x64, 0xca, 0x6e, 0x52, 0x01, 0x39, 0xbc, 0x6b, 0xc4, 0xbf, 0x91, 0xa3, - 0xda, 0xee, 0x06, 0xb9, 0x9f, 0x0b, 0x7e, 0x21, 0x37, 0x8a, 0x19, 0xe1, 0x7e, 0x90, 0x23, 0xae, - 0xea, 0x4a, 0xa4, 0x49, 0x23, 0xac, 0x32, 0xbc, 0x3c, 0x0d, 0x5d, 0xf1, 0x56, 0x8e, 0xe8, 0xe4, - 0x4f, 0xf5, 0x36, 0x70, 0xf4, 0xa2, 0xd9, 0xbc, 0xb4, 0xe5, 0x3a, 0xbb, 0xe4, 0x26, 0x23, 0x87, - 0x5d, 0x89, 0x44, 0xae, 0x96, 0x13, 0x3f, 0xa8, 0x77, 0xf8, 0xaa, 0x43, 0x7e, 0x90, 0xea, 0xb0, - 0x72, 0x84, 0x29, 0x0f, 0xea, 0x53, 0x83, 0x41, 0xa7, 0x10, 0x3b, 0xe8, 0xac, 0x1c, 0xf1, 0x87, - 0x1d, 0x75, 0x11, 0x4c, 0xb6, 0xac, 0x3d, 0xb2, 0x55, 0x4d, 0x56, 0x5d, 0x83, 0x8e, 0x12, 0x2f, - 0x5a, 0x7b, 0x74, 0x63, 0x7b, 0xe5, 0x88, 0x1e, 0xfc, 0xa9, 0x2e, 0x83, 0x29, 0xb2, 0x2d, 0x40, - 0x8a, 0x99, 0x4c, 0x74, 0x4c, 0x78, 0xe5, 0x88, 0x1e, 0xfe, 0x8b, 0xb5, 0x8f, 0x1c, 0x39, 0xc3, - 0x71, 0x9f, 0xbf, 0xdd, 0x9e, 0x49, 0xb4, 0xdd, 0x8e, 0x79, 0x41, 0x37, 0xdc, 0x4f, 0x82, 0x7c, - 0x93, 0x70, 0x38, 0xcb, 0x38, 0x4c, 0x5f, 0xd5, 0x7b, 0x40, 0x6e, 0xc7, 0x74, 0xfd, 0xc5, 0xf3, - 0x2d, 0x83, 0xcb, 0x5d, 0x33, 0xdd, 0x4b, 0x18, 0x41, 0xfc, 0xd7, 0xc2, 0x04, 0xc8, 0x13, 0xc6, - 0x05, 0x0f, 0xf0, 0x6d, 0x39, 0xaa, 0x86, 0x94, 0x1d, 0x1b, 0x4f, 0xfb, 0x86, 0xe3, 0x1f, 0x74, - 0xf9, 0x50, 0x66, 0x34, 0x1a, 0x64, 0xdf, 0x3b, 0xaa, 0x95, 0xc8, 0x3b, 0xaa, 0x7b, 0x2e, 0x4b, - 0xcd, 0xf5, 0x5e, 0x96, 0x1a, 0x9a, 0x0f, 0xf2, 0x83, 0x1d, 0x55, 0xfe, 0x74, 0x08, 0xd5, 0xa5, - 0x97, 0x11, 0xd1, 0x2b, 0xf0, 0xb6, 0x65, 0x73, 0x6d, 0xf6, 0x5f, 0x13, 0x0e, 0x4a, 0x49, 0x95, - 0x9a, 0x01, 0xe4, 0xa5, 0x3f, 0x36, 0xfd, 0x46, 0x0e, 0x9c, 0xa2, 0x57, 0xf2, 0xee, 0x21, 0xc3, - 0x11, 0xef, 0x0e, 0x84, 0x9f, 0x1c, 0x89, 0xd0, 0xf4, 0x99, 0x70, 0x94, 0xbe, 0x13, 0xce, 0xbe, - 0xc3, 0xc6, 0xb9, 0x01, 0x87, 0x8d, 0xf3, 0xc9, 0x2c, 0x87, 0xbf, 0xc7, 0xcb, 0xcf, 0xba, 0x28, - 0x3f, 0x77, 0x47, 0x00, 0xd4, 0x8f, 0x2f, 0x23, 0xd1, 0x6f, 0xde, 0x19, 0x48, 0x4a, 0x5d, 0x90, - 0x94, 0xfb, 0x86, 0x27, 0x24, 0x7d, 0x69, 0xf9, 0xdd, 0x1c, 0xb8, 0x26, 0x24, 0xa6, 0x8a, 0x2e, - 0x33, 0x41, 0xf9, 0xdc, 0x48, 0x04, 0x25, 0x79, 0x2c, 0x83, 0xb4, 0x25, 0xe6, 0x8f, 0xa5, 0xcf, - 0x00, 0xf5, 0x02, 0x15, 0xf0, 0x26, 0x42, 0x58, 0x4e, 0x82, 0x02, 0x1d, 0x61, 0x18, 0x34, 0xec, - 0x2d, 0xe1, 0x70, 0x23, 0x77, 0x72, 0x48, 0x96, 0xb6, 0x31, 0xc8, 0x0f, 0xb3, 0x6b, 0x18, 0xbb, - 0xae, 0x5d, 0xb1, 0x3d, 0x07, 0xfe, 0xc4, 0x48, 0x04, 0x27, 0xf0, 0x86, 0x53, 0x86, 0xf1, 0x86, - 0x1b, 0xca, 0xca, 0xe1, 0xb7, 0xe0, 0x50, 0xac, 0x1c, 0x11, 0x95, 0xa7, 0x8f, 0xdf, 0x3b, 0x14, - 0x7a, 0x3d, 0x7f, 0x1d, 0x79, 0x0b, 0xa2, 0x86, 0x08, 0x1f, 0x1c, 0x05, 0x90, 0xc7, 0x7d, 0x35, - 0x89, 0xdd, 0x2e, 0x45, 0x5e, 0xc4, 0x13, 0x4f, 0xb1, 0xb7, 0x1c, 0x08, 0xcb, 0xc1, 0x1e, 0x0a, - 0x47, 0x82, 0x94, 0xdc, 0xe5, 0x06, 0x09, 0xc8, 0x48, 0x1f, 0xb3, 0x97, 0x2a, 0xa0, 0xc0, 0xae, - 0x62, 0xdf, 0x48, 0xc5, 0x61, 0x42, 0x8c, 0x75, 0x2c, 0xb1, 0x23, 0x97, 0xf8, 0xc2, 0xf2, 0xf4, - 0xf6, 0xe2, 0x0e, 0xe9, 0x46, 0xf2, 0x6f, 0x65, 0xc1, 0x74, 0x1d, 0x79, 0x65, 0xd3, 0x75, 0x2d, - 0x73, 0x6b, 0x54, 0x1e, 0xdf, 0xb2, 0xde, 0xc3, 0xf0, 0xdb, 0x19, 0xd9, 0xf3, 0x34, 0x81, 0x21, - 0xdc, 0x27, 0x35, 0x22, 0xb6, 0x9f, 0xdc, 0x55, 0xf0, 0x83, 0x4a, 0x1b, 0x83, 0xc7, 0x76, 0x16, - 0x4c, 0xf8, 0x67, 0xea, 0xce, 0x09, 0xe7, 0x2c, 0xb7, 0xbd, 0x1d, 0xff, 0x18, 0x0c, 0x79, 0xde, - 0x7f, 0x96, 0x0b, 0xbe, 0x3a, 0xa1, 0xa3, 0x7c, 0xfc, 0x81, 0xc0, 0x64, 0x7d, 0x2c, 0x89, 0x3b, - 0xfc, 0x61, 0x1d, 0x01, 0xfc, 0x9d, 0x09, 0x66, 0x8e, 0x5c, 0x35, 0x3d, 0x74, 0x05, 0xfe, 0x85, - 0x02, 0x26, 0xea, 0xc8, 0xc3, 0xf3, 0x2d, 0x26, 0xff, 0xc0, 0x12, 0xae, 0x72, 0x16, 0x8f, 0x29, - 0x66, 0xc3, 0x78, 0x0e, 0x98, 0xea, 0xb8, 0x4e, 0x13, 0x75, 0xbb, 0xcc, 0x7a, 0xc1, 0x3b, 0xaa, - 0xf5, 0x9b, 0xfd, 0x09, 0x69, 0xf3, 0xeb, 0xfe, 0x3f, 0x7a, 0xf8, 0x7b, 0x52, 0x35, 0x80, 0x96, - 0xc4, 0x1a, 0x38, 0x6e, 0x35, 0x20, 0xae, 0xf2, 0xf4, 0x81, 0xfe, 0x8c, 0x02, 0x66, 0xea, 0xc8, - 0x0b, 0xb8, 0x98, 0x60, 0x93, 0x23, 0x1a, 0x5e, 0x01, 0x4a, 0xe5, 0x60, 0x50, 0xca, 0x5f, 0x90, - 0x27, 0x72, 0x33, 0x28, 0x6c, 0x8c, 0x17, 0xe4, 0xc9, 0x51, 0x30, 0x86, 0xe3, 0x6b, 0x4f, 0x00, - 0x53, 0x84, 0x16, 0xd2, 0x61, 0x7f, 0x2e, 0x17, 0x76, 0xde, 0xcf, 0xa7, 0xd4, 0x79, 0xef, 0x05, - 0x79, 0x72, 0xf1, 0x3e, 0xe9, 0xb8, 0xd3, 0x32, 0x6a, 0xfb, 0x1a, 0xce, 0xae, 0xd3, 0xbf, 0xfa, - 0xfb, 0x69, 0xe6, 0x93, 0xf9, 0x69, 0xbe, 0x31, 0x9b, 0x68, 0x26, 0xa4, 0x6b, 0x87, 0x11, 0x76, - 0xf9, 0x04, 0xf3, 0x66, 0x4c, 0xdd, 0xe9, 0x0b, 0xc7, 0x8b, 0x15, 0x30, 0x89, 0xe7, 0x6d, 0xa2, - 0x8f, 0x5f, 0x38, 0xb8, 0x38, 0xf4, 0x57, 0xf4, 0x13, 0x8e, 0xc0, 0x3e, 0x47, 0x46, 0xa7, 0xde, - 0x27, 0x18, 0x81, 0xe3, 0x2a, 0x4f, 0x1f, 0x8f, 0x77, 0x51, 0x3c, 0x48, 0x7f, 0x80, 0x6f, 0x52, - 0x80, 0xb2, 0x8c, 0xbc, 0x71, 0x6b, 0x91, 0x6f, 0x97, 0x0e, 0x55, 0x24, 0x30, 0x8c, 0xd0, 0x3c, - 0xbf, 0x8c, 0x46, 0xd3, 0x81, 0xe4, 0x62, 0x14, 0x49, 0x11, 0x90, 0x3e, 0x6a, 0xef, 0xa5, 0xa8, - 0xd1, 0xcd, 0x85, 0x1f, 0x1b, 0xc1, 0xa8, 0x3a, 0x5e, 0xc3, 0x87, 0xcf, 0x40, 0x52, 0xc6, 0x61, - 0xf5, 0xb7, 0x7e, 0x95, 0x8f, 0xe5, 0x42, 0x3a, 0x80, 0x3b, 0xfb, 0x36, 0x6a, 0x5e, 0x42, 0x2d, - 0xf8, 0xc3, 0x07, 0x87, 0xee, 0x14, 0x98, 0x68, 0xd2, 0xd2, 0x08, 0x78, 0x93, 0xba, 0xff, 0x9a, - 0xe0, 0x76, 0x65, 0x71, 0x20, 0xa2, 0xbf, 0x8f, 0xf1, 0x76, 0x65, 0x89, 0xea, 0xc7, 0xa0, 0xb6, - 0xd0, 0x55, 0x46, 0xa5, 0xe9, 0xd8, 0xf0, 0x3f, 0x1e, 0x1c, 0x96, 0x1b, 0xc0, 0x94, 0xd5, 0x74, - 0xec, 0xca, 0x8e, 0x1f, 0xdc, 0x6f, 0x4a, 0x0f, 0x13, 0xfc, 0xaf, 0xda, 0x8e, 0xf3, 0x90, 0xc5, - 0x76, 0xcd, 0xc3, 0x84, 0x61, 0x95, 0x09, 0x4c, 0xfa, 0x61, 0x29, 0x13, 0x7d, 0xea, 0x4e, 0x1f, - 0xb2, 0x47, 0x43, 0xef, 0x36, 0x3a, 0x14, 0x3e, 0x26, 0xac, 0xc0, 0xc3, 0x4c, 0x67, 0x7c, 0x2b, - 0x0e, 0x65, 0x3a, 0x8b, 0x21, 0x60, 0x0c, 0xf7, 0x8b, 0x84, 0x38, 0xa6, 0x6e, 0x03, 0x3e, 0x00, - 0x3a, 0xa3, 0x53, 0x0f, 0x87, 0x44, 0xe7, 0x70, 0x54, 0xc4, 0x0f, 0xb2, 0x50, 0x97, 0x4c, 0xe3, - 0x81, 0xff, 0x69, 0x14, 0xe0, 0xdc, 0x3d, 0x8c, 0xbf, 0x02, 0xf5, 0x56, 0x48, 0x70, 0x2f, 0xf4, - 0x3e, 0x0e, 0xe2, 0x52, 0xc6, 0x78, 0x63, 0xba, 0x4c, 0xfd, 0xe9, 0x03, 0xf8, 0xb3, 0x0a, 0x98, - 0x23, 0x3e, 0x02, 0x6d, 0x64, 0xba, 0x74, 0xa0, 0x1c, 0x89, 0xa3, 0xfc, 0xbb, 0xa4, 0x03, 0xfc, - 0x88, 0x7c, 0x08, 0xe9, 0x18, 0x09, 0x14, 0x72, 0xd1, 0x7d, 0x24, 0x49, 0x18, 0xcb, 0x36, 0x4a, - 0x31, 0x20, 0x81, 0x89, 0xf8, 0x68, 0xf0, 0x48, 0xe8, 0x91, 0x2b, 0x32, 0xc3, 0xef, 0x6c, 0x63, - 0xf6, 0xc8, 0x95, 0x21, 0x62, 0x0c, 0x57, 0x46, 0x3e, 0x85, 0x19, 0x9c, 0x0d, 0x72, 0x6d, 0xfa, - 0x6b, 0x73, 0xc1, 0x89, 0xb6, 0xcf, 0x8c, 0xc4, 0x03, 0xf3, 0x00, 0x81, 0xed, 0x55, 0x90, 0x73, - 0x9d, 0xcb, 0xd4, 0xb4, 0x35, 0xab, 0x93, 0x67, 0xa2, 0xf2, 0x3b, 0xed, 0xdd, 0x1d, 0x9b, 0x9e, - 0x0c, 0x9d, 0xd5, 0xfd, 0x57, 0xf5, 0x66, 0x30, 0x7b, 0xd9, 0xf2, 0xb6, 0x57, 0x90, 0xd9, 0x42, - 0xae, 0xee, 0x5c, 0x26, 0x1e, 0x73, 0x93, 0xba, 0x98, 0x28, 0xfa, 0xaf, 0x48, 0xe8, 0x97, 0xe4, - 0x2e, 0xf5, 0xb1, 0x1c, 0x7f, 0x4b, 0xa2, 0x79, 0x46, 0x53, 0x95, 0xbe, 0xc0, 0xbc, 0x4f, 0x01, - 0x53, 0xba, 0x73, 0x99, 0x09, 0xc9, 0xff, 0x79, 0xb8, 0x32, 0x92, 0x78, 0xa1, 0x47, 0xef, 0xc6, - 0xf7, 0xc9, 0x1f, 0xfb, 0x42, 0x2f, 0xb6, 0xfa, 0xb1, 0x9c, 0x5c, 0x9a, 0xd1, 0x9d, 0xcb, 0x75, - 0xe4, 0xd1, 0x1e, 0x01, 0x1b, 0x23, 0x72, 0xb2, 0xb6, 0xba, 0xb4, 0x40, 0xb6, 0x0e, 0x0f, 0xde, - 0x93, 0xee, 0x22, 0x04, 0x0c, 0x0a, 0x48, 0x1c, 0xf7, 0x2e, 0xc2, 0x40, 0x0a, 0xc6, 0x10, 0x23, - 0x45, 0x01, 0xd3, 0xba, 0x73, 0x19, 0x4f, 0x0d, 0x4b, 0x56, 0xbb, 0x3d, 0x9a, 0x19, 0x32, 0xa9, - 0xf2, 0xef, 0xb3, 0xc1, 0xa7, 0x62, 0xec, 0xca, 0xff, 0x00, 0x02, 0xd2, 0x87, 0xe1, 0x45, 0xb4, - 0xb3, 0xf8, 0x33, 0xb4, 0x3d, 0x1a, 0x1c, 0x86, 0xed, 0x10, 0x01, 0x19, 0x87, 0xd6, 0x21, 0xa2, - 0x28, 0x18, 0xcb, 0xce, 0xc9, 0x5c, 0x99, 0x4c, 0xf3, 0xa3, 0xed, 0x13, 0x8f, 0x24, 0x73, 0x4d, - 0x64, 0xd3, 0xae, 0x40, 0xc8, 0x48, 0xd0, 0x48, 0xe0, 0x82, 0x28, 0x41, 0x43, 0xfa, 0x78, 0x7c, - 0x58, 0x01, 0x33, 0x94, 0x84, 0xc7, 0x88, 0x16, 0x30, 0x54, 0xa7, 0xe2, 0x5b, 0x70, 0x38, 0x9d, - 0x2a, 0x86, 0x82, 0xb1, 0xdc, 0xd2, 0x89, 0xf5, 0xb8, 0x21, 0x8e, 0x8f, 0x47, 0x21, 0x38, 0xb4, - 0x32, 0x36, 0xc2, 0x23, 0xe4, 0xc3, 0x28, 0x63, 0x87, 0x74, 0x8c, 0xfc, 0x45, 0x41, 0x2f, 0x1a, - 0x25, 0x06, 0x07, 0xe8, 0x0a, 0x23, 0x84, 0x61, 0xc8, 0xae, 0x70, 0x48, 0x48, 0x7c, 0x45, 0x01, - 0x80, 0x12, 0xb0, 0xe6, 0xec, 0x91, 0x4b, 0x79, 0x46, 0x30, 0x9c, 0xf5, 0xba, 0xd5, 0x2b, 0x03, - 0xdc, 0xea, 0x13, 0x86, 0x70, 0x49, 0x6a, 0x09, 0xe4, 0xb8, 0x8c, 0x1b, 0x39, 0x76, 0x4b, 0x60, - 0x7c, 0xfd, 0xe9, 0x63, 0xfc, 0x25, 0xaa, 0xcd, 0x85, 0x07, 0x4c, 0x7f, 0x79, 0x24, 0x28, 0x73, - 0xab, 0x7f, 0x45, 0x5c, 0xfd, 0x1f, 0x00, 0xdb, 0x61, 0x75, 0xc4, 0x41, 0x07, 0x47, 0xd3, 0xd7, - 0x11, 0x0f, 0xef, 0x80, 0xe8, 0x8f, 0xe5, 0xc0, 0x51, 0x36, 0x88, 0x7c, 0x3f, 0x40, 0x9c, 0xf0, - 0x1c, 0x9e, 0x30, 0x48, 0x0e, 0x40, 0x79, 0x54, 0x06, 0xa9, 0x24, 0xa6, 0x4c, 0x09, 0xf2, 0xc6, - 0x62, 0xdd, 0x28, 0x68, 0x57, 0x3a, 0xa6, 0xdd, 0x92, 0x0f, 0xf7, 0x3b, 0x00, 0x78, 0xdf, 0xd6, - 0xa8, 0x88, 0xb6, 0xc6, 0x3e, 0x96, 0xc9, 0xc4, 0x3b, 0xd7, 0x84, 0x65, 0x94, 0xdc, 0xb1, 0xef, - 0x5c, 0x47, 0xd7, 0x9d, 0x3e, 0x4a, 0x8f, 0x28, 0x20, 0x57, 0x77, 0x5c, 0x0f, 0x3e, 0x9c, 0xa4, - 0x77, 0x52, 0xce, 0x87, 0x20, 0xf9, 0xef, 0x6a, 0x59, 0xb8, 0x35, 0xf9, 0x5c, 0xfc, 0x51, 0x67, - 0xd3, 0x33, 0x89, 0x57, 0x37, 0xae, 0x9f, 0xbb, 0x3e, 0x39, 0x69, 0x3c, 0x1d, 0xca, 0xbf, 0x7a, - 0xf4, 0x01, 0x8c, 0xd4, 0xe2, 0xe9, 0x44, 0xd6, 0x9c, 0x3e, 0x6e, 0xff, 0x7d, 0x8e, 0xf9, 0xb6, - 0x2e, 0x59, 0x6d, 0x04, 0x1f, 0xa6, 0x2e, 0x23, 0x55, 0x73, 0x07, 0xc9, 0x1f, 0x89, 0x89, 0x75, - 0x6d, 0x25, 0xf1, 0x65, 0x95, 0x30, 0xbe, 0x6c, 0xd2, 0x0e, 0x45, 0x0f, 0xa0, 0x53, 0x92, 0xc6, - 0xdd, 0xa1, 0x62, 0xea, 0x1e, 0x4b, 0x9c, 0xce, 0x63, 0x75, 0xe4, 0x51, 0xa5, 0xb2, 0xe6, 0xdf, - 0xc0, 0xf2, 0x23, 0x23, 0x89, 0xd8, 0x19, 0x5c, 0xf0, 0xa2, 0xf4, 0x5c, 0xf0, 0xf2, 0x3e, 0x1e, - 0x9c, 0x35, 0x11, 0x9c, 0x67, 0x44, 0x33, 0x48, 0x24, 0x72, 0x24, 0x30, 0xbd, 0x3d, 0x80, 0x69, - 0x5d, 0x80, 0xe9, 0x9e, 0x21, 0xa9, 0x48, 0x1f, 0xb0, 0xcf, 0x63, 0x55, 0x85, 0x2c, 0xfa, 0x4b, - 0x76, 0x8b, 0x45, 0x58, 0xfd, 0xc7, 0xc3, 0xde, 0x6c, 0xdb, 0x1f, 0x82, 0x55, 0x88, 0xe5, 0x9c, - 0xef, 0xbd, 0xad, 0x7e, 0x81, 0x86, 0x73, 0xc5, 0x83, 0x28, 0xd9, 0x69, 0x93, 0xbf, 0xb1, 0x3e, - 0xf8, 0x0f, 0xfe, 0x49, 0x32, 0xfb, 0x1b, 0x29, 0xa2, 0x87, 0x71, 0x29, 0xeb, 0x40, 0x09, 0x2c, - 0x73, 0x12, 0xd4, 0xfd, 0xfb, 0x70, 0x0b, 0x0b, 0x23, 0x81, 0x0c, 0xe9, 0x16, 0x46, 0x0a, 0x38, - 0x4c, 0xb7, 0xb0, 0x41, 0x04, 0x8c, 0xe1, 0x96, 0xf9, 0x3c, 0xdb, 0x95, 0x27, 0x3e, 0x93, 0xf0, - 0xaf, 0xb2, 0xa9, 0xcf, 0xb6, 0xdf, 0xc9, 0x24, 0xf2, 0x63, 0x26, 0x74, 0xc5, 0x4f, 0xb7, 0x49, - 0x3c, 0x93, 0xe3, 0x8a, 0x1b, 0x83, 0xfd, 0x27, 0x4b, 0x7c, 0xca, 0x2f, 0x58, 0x2d, 0x6f, 0x7b, - 0x44, 0x27, 0x33, 0x2e, 0xe3, 0xb2, 0xfc, 0xeb, 0x8a, 0xc9, 0x0b, 0xfc, 0x97, 0x4c, 0xa2, 0x50, - 0x50, 0x01, 0x4b, 0x08, 0x59, 0x11, 0x2c, 0x4e, 0x10, 0xc0, 0x29, 0xb6, 0xbc, 0x31, 0x4a, 0xf4, - 0x79, 0xab, 0x85, 0x9c, 0xc7, 0xa0, 0x44, 0x13, 0xba, 0x46, 0x27, 0xd1, 0x71, 0xc5, 0xfd, 0x3b, - 0x95, 0xe8, 0x80, 0x25, 0x23, 0x92, 0xe8, 0xd8, 0xf2, 0xd2, 0xe7, 0xf1, 0xab, 0x67, 0xd8, 0x82, - 0x68, 0xd5, 0xb2, 0x2f, 0xc1, 0x7f, 0x2a, 0xf8, 0x17, 0x25, 0x5f, 0xb0, 0xbc, 0x6d, 0x16, 0xd3, - 0xe5, 0x77, 0xa5, 0xef, 0x38, 0x19, 0x22, 0x6e, 0x8b, 0x18, 0x16, 0x2a, 0xbf, 0x2f, 0x2c, 0x54, - 0x09, 0xcc, 0x5a, 0xb6, 0x87, 0x5c, 0xdb, 0x6c, 0x2f, 0xb5, 0xcd, 0xad, 0xee, 0xa9, 0x89, 0xbe, - 0x97, 0xd0, 0x55, 0xb8, 0x3c, 0xba, 0xf8, 0x07, 0x7f, 0x9d, 0xe4, 0xa4, 0x78, 0x2d, 0x7e, 0x44, - 0x14, 0xab, 0xa9, 0xe8, 0x28, 0x56, 0x41, 0x94, 0x2a, 0x30, 0x38, 0xc8, 0xb5, 0xac, 0x8e, 0x9b, - 0x30, 0x6c, 0xdf, 0x39, 0xc9, 0x68, 0x6a, 0x41, 0x08, 0xc7, 0x5f, 0x55, 0x12, 0x59, 0xe9, 0xb0, - 0x20, 0xcc, 0xf7, 0x0a, 0x41, 0x62, 0x0d, 0x95, 0x6f, 0xbc, 0xd2, 0xd3, 0xf8, 0x40, 0xe5, 0xc9, - 0x49, 0xa8, 0x3c, 0xbc, 0x50, 0xe5, 0xe5, 0x84, 0x2a, 0x89, 0xd1, 0x4f, 0xa6, 0xb5, 0x63, 0x38, - 0x55, 0x94, 0x07, 0xc7, 0xfc, 0xa8, 0xb5, 0x9d, 0x0e, 0x32, 0x5d, 0xd3, 0x6e, 0x22, 0xf8, 0x68, - 0x76, 0x14, 0x6a, 0xef, 0x12, 0x98, 0xb4, 0x9a, 0x8e, 0x5d, 0xb7, 0x9e, 0xef, 0x5f, 0x12, 0x17, - 0x1f, 0x2c, 0x9d, 0x70, 0xa4, 0xc2, 0xfe, 0xd0, 0x83, 0x7f, 0xd5, 0x0a, 0x98, 0x6a, 0x9a, 0x6e, - 0x8b, 0x06, 0xd3, 0xcb, 0xf7, 0x5c, 0xc8, 0x14, 0x59, 0x50, 0xd9, 0xff, 0x45, 0x0f, 0xff, 0x56, - 0x6b, 0x22, 0x13, 0x0b, 0x3d, 0x51, 0x39, 0x22, 0x0b, 0x5b, 0x0c, 0x7f, 0x12, 0x78, 0x8e, 0xb9, - 0xe3, 0xa2, 0x36, 0xb9, 0x13, 0x9e, 0x8e, 0x10, 0x53, 0x7a, 0x98, 0x90, 0x74, 0x99, 0x4f, 0xaa, - 0xda, 0x87, 0xc6, 0xb8, 0x97, 0xf9, 0x52, 0x54, 0xa4, 0x2f, 0x99, 0xef, 0x2c, 0x80, 0x59, 0x3a, - 0xaa, 0x31, 0x76, 0xc2, 0x9f, 0x25, 0x57, 0x3a, 0x7b, 0x0f, 0xa0, 0xab, 0xb0, 0x7e, 0xf0, 0x39, - 0xb9, 0x08, 0x94, 0x4b, 0x41, 0xe0, 0x40, 0xfc, 0x98, 0x74, 0xff, 0xdd, 0xa7, 0x6b, 0x9e, 0xd2, - 0x34, 0xee, 0xfd, 0xf7, 0xf8, 0xea, 0xd3, 0xc7, 0xe7, 0x17, 0x14, 0xa0, 0x94, 0x5a, 0x2d, 0xd8, - 0x3c, 0x38, 0x14, 0x67, 0xc0, 0xb4, 0xdf, 0x67, 0xc2, 0x58, 0x8e, 0x7c, 0x52, 0x52, 0x63, 0x66, - 0xc0, 0x9b, 0x52, 0x6b, 0xec, 0xbb, 0x03, 0x31, 0x75, 0xa7, 0x0f, 0xca, 0x2f, 0x4f, 0xb0, 0x4e, - 0xb3, 0xe0, 0x38, 0x97, 0xc8, 0x91, 0x97, 0x87, 0x15, 0x90, 0x5f, 0x42, 0x5e, 0x73, 0x7b, 0x44, - 0x7d, 0x66, 0xd7, 0x6d, 0xfb, 0x7d, 0x66, 0xdf, 0xfd, 0xf4, 0x83, 0x75, 0x58, 0x9f, 0xac, 0x79, - 0x42, 0xd2, 0xb8, 0xa3, 0x34, 0xc7, 0xd6, 0x9e, 0x3e, 0x38, 0xff, 0xa2, 0x80, 0xb9, 0xc0, 0xc2, - 0x45, 0x31, 0xf9, 0xf9, 0xc7, 0x9c, 0xdd, 0x12, 0x7e, 0x2e, 0x59, 0xa8, 0xb3, 0x80, 0xa7, 0x62, - 0xcb, 0x52, 0x36, 0x2c, 0x26, 0x08, 0x82, 0x26, 0x47, 0xe0, 0x18, 0x56, 0xf0, 0x0a, 0x98, 0x24, - 0x04, 0x2d, 0x5a, 0x7b, 0xc4, 0x05, 0x50, 0x30, 0x34, 0xfe, 0xf8, 0x48, 0x0c, 0x8d, 0xf7, 0x88, - 0x86, 0x46, 0xc9, 0xc8, 0xc5, 0xbe, 0x9d, 0x31, 0xa1, 0x4f, 0x0c, 0xfe, 0x7f, 0xe4, 0x66, 0xc6, - 0x04, 0x3e, 0x31, 0x03, 0xea, 0x4f, 0x1f, 0xd1, 0x4f, 0x36, 0xd8, 0x60, 0xeb, 0x6f, 0x8c, 0xc2, - 0xff, 0x7e, 0x0c, 0xe4, 0xce, 0xe3, 0x87, 0xff, 0x15, 0xde, 0x6c, 0xf5, 0x8a, 0x11, 0x04, 0x59, - 0x78, 0x36, 0xc8, 0xe1, 0xf2, 0xd9, 0xb2, 0xe5, 0x36, 0xb9, 0x5d, 0x5a, 0x4c, 0x88, 0x4e, 0xfe, - 0x53, 0x4f, 0x82, 0x42, 0xd7, 0xd9, 0x75, 0x9b, 0x58, 0x7d, 0xc6, 0x12, 0xc3, 0xde, 0x92, 0x06, - 0x17, 0x15, 0x8a, 0x9e, 0x1f, 0x9d, 0xeb, 0x27, 0x77, 0xd1, 0x91, 0x22, 0x5c, 0x74, 0x94, 0x60, - 0xff, 0x40, 0x82, 0xb6, 0xf4, 0x25, 0xe2, 0xaf, 0xc8, 0x9d, 0x7f, 0xad, 0x51, 0xc1, 0x1e, 0xc1, - 0x96, 0x83, 0x8a, 0x43, 0x52, 0xc7, 0x6d, 0x91, 0xb5, 0x41, 0x3c, 0xf7, 0xb1, 0x3a, 0x6e, 0x4b, - 0xd0, 0x30, 0x96, 0xd3, 0xe6, 0x05, 0xe6, 0x6c, 0xfa, 0xe0, 0x28, 0xd1, 0xcd, 0x09, 0x42, 0x7f, - 0x20, 0x74, 0x46, 0xe8, 0x84, 0x3a, 0x34, 0x3a, 0x87, 0xe4, 0x86, 0xfa, 0x07, 0x0a, 0x89, 0x68, - 0xe9, 0x2b, 0x39, 0xf2, 0x17, 0x16, 0x25, 0x86, 0x08, 0xcf, 0xc1, 0x42, 0x3c, 0xe7, 0xd9, 0xe1, - 0x43, 0x7c, 0x8b, 0xac, 0xe3, 0xe8, 0x1f, 0x77, 0x88, 0x6f, 0x59, 0x42, 0xd2, 0x07, 0xf2, 0xd7, - 0xe8, 0x05, 0x61, 0xa5, 0xa6, 0x67, 0xed, 0x8d, 0xb8, 0xa7, 0x89, 0xd3, 0x4b, 0xc2, 0xa8, 0xbe, - 0xfb, 0x38, 0x44, 0x29, 0x1c, 0x77, 0x54, 0x5f, 0x39, 0x32, 0xc6, 0x70, 0x1c, 0x1d, 0x60, 0xee, - 0x31, 0xdb, 0xcc, 0x9b, 0x98, 0x35, 0x00, 0x1d, 0x1c, 0xad, 0xb3, 0x60, 0x86, 0x5b, 0xfa, 0xfb, - 0x17, 0xcf, 0x08, 0x69, 0x49, 0x0f, 0xac, 0x07, 0x2c, 0x1b, 0xb9, 0x61, 0x20, 0x81, 0xc1, 0x57, - 0x86, 0x88, 0xb1, 0xdc, 0xeb, 0xe6, 0xcf, 0x61, 0x63, 0xc2, 0xea, 0x77, 0x79, 0xac, 0x6a, 0x22, - 0x56, 0x77, 0xc9, 0xb0, 0x49, 0x6e, 0x4e, 0x93, 0x5a, 0x37, 0xbe, 0x23, 0x80, 0x4b, 0x17, 0xe0, - 0x7a, 0xf6, 0xd0, 0x74, 0xa4, 0x8f, 0xd8, 0x9b, 0x15, 0x7a, 0xb9, 0x53, 0x69, 0xcf, 0xb4, 0xda, - 0x24, 0xca, 0xc0, 0x08, 0x2e, 0x27, 0xfe, 0x33, 0x1e, 0x94, 0xf3, 0x22, 0x28, 0xf7, 0xcb, 0x30, - 0x43, 0xa0, 0x28, 0x02, 0x9b, 0xa7, 0xf3, 0xc6, 0x71, 0x1a, 0x62, 0xf8, 0xda, 0xde, 0x70, 0x7e, - 0xec, 0x3b, 0x6f, 0x35, 0xff, 0xed, 0x00, 0xa4, 0x07, 0x05, 0x90, 0xb4, 0x83, 0xd2, 0x95, 0x3e, - 0x56, 0xaf, 0xa4, 0x53, 0x57, 0x9d, 0x2e, 0xaf, 0x46, 0x33, 0x75, 0xb1, 0x95, 0x9b, 0x22, 0xac, - 0xdc, 0x12, 0x9e, 0x71, 0x08, 0x5d, 0x77, 0x7d, 0xe2, 0x06, 0x75, 0xa7, 0xdc, 0x88, 0xcf, 0x38, - 0x0c, 0xa4, 0x20, 0x7d, 0x70, 0xfe, 0x41, 0x01, 0x60, 0xd9, 0x75, 0x76, 0x3b, 0x35, 0xb7, 0x85, - 0x5c, 0xf8, 0x37, 0xe1, 0x62, 0xed, 0x65, 0x23, 0x58, 0xac, 0xad, 0x03, 0xb0, 0x15, 0x14, 0xce, - 0x46, 0xa3, 0xa7, 0xc8, 0x2d, 0xcd, 0x42, 0xa2, 0x74, 0xae, 0x0c, 0xf1, 0x9a, 0xdf, 0xe7, 0x8a, - 0x18, 0xc7, 0xcd, 0x2f, 0x61, 0x71, 0xa3, 0x5c, 0xac, 0xbd, 0x2b, 0xc0, 0xda, 0x10, 0xb0, 0xbe, - 0xff, 0x00, 0x94, 0xa4, 0x8f, 0xf9, 0x3f, 0x4e, 0x80, 0x69, 0xba, 0xb5, 0x4a, 0x79, 0xfa, 0x77, - 0x21, 0xe8, 0xbf, 0x3c, 0x02, 0xd0, 0x37, 0xc0, 0x8c, 0x13, 0x96, 0x4e, 0xe7, 0x3f, 0xde, 0x58, - 0x16, 0x0b, 0x3b, 0x47, 0x97, 0x2e, 0x14, 0x03, 0x3f, 0xc2, 0x23, 0xaf, 0x8b, 0xc8, 0xdf, 0x13, - 0xc3, 0x6f, 0xae, 0xc4, 0x51, 0x42, 0xff, 0xee, 0x00, 0xfa, 0x0d, 0x01, 0xfa, 0xd2, 0x41, 0x48, - 0x19, 0xc3, 0x15, 0x07, 0x0a, 0xc8, 0x91, 0x13, 0x89, 0xbf, 0x91, 0xa2, 0x2d, 0xe6, 0x14, 0x98, - 0x20, 0x5d, 0x36, 0x58, 0x23, 0xfa, 0xaf, 0xf8, 0x8b, 0xb9, 0xe9, 0x21, 0x37, 0xf0, 0x2e, 0xf1, - 0x5f, 0x31, 0x0d, 0xbe, 0x27, 0x78, 0xf7, 0x54, 0x81, 0x6e, 0x1a, 0x07, 0x09, 0x43, 0x2f, 0x20, - 0x79, 0x8e, 0x8f, 0xec, 0x8c, 0xe2, 0x30, 0x0b, 0xc8, 0x01, 0x84, 0xa4, 0x0f, 0xfc, 0x17, 0x72, - 0xe0, 0x14, 0xb5, 0x00, 0x2e, 0xb9, 0xce, 0x4e, 0xcf, 0x8d, 0x62, 0xd6, 0xc1, 0x65, 0xe1, 0x16, - 0x30, 0xe7, 0x09, 0x3e, 0xf0, 0x4c, 0x26, 0x7a, 0x52, 0xe1, 0x9f, 0xf2, 0xfe, 0x2f, 0xcf, 0x13, - 0x91, 0x5c, 0x88, 0x61, 0x60, 0x14, 0xed, 0x89, 0x37, 0x55, 0x24, 0x09, 0xe5, 0x0c, 0x8a, 0xca, - 0x50, 0xf6, 0xe5, 0x40, 0xa6, 0xf2, 0x32, 0x32, 0xf5, 0xfe, 0x40, 0xa6, 0x7e, 0x58, 0x90, 0xa9, - 0xe5, 0x83, 0xb3, 0x24, 0x7d, 0xd9, 0x7a, 0x6d, 0xb0, 0x89, 0x17, 0x6c, 0xb1, 0xee, 0xa4, 0xb0, - 0xb1, 0xca, 0xfb, 0x8e, 0xe5, 0x04, 0xdf, 0x31, 0xf1, 0x0e, 0x90, 0x04, 0x56, 0x0b, 0x91, 0xea, - 0x08, 0x59, 0x9a, 0x03, 0x59, 0xcb, 0xa7, 0x2e, 0x6b, 0xb5, 0x86, 0xb2, 0x4b, 0xc4, 0x56, 0x34, - 0x06, 0x3b, 0xe0, 0x1c, 0x28, 0x2c, 0x59, 0x6d, 0x0f, 0xb9, 0xf0, 0x4b, 0xcc, 0x2a, 0xf1, 0xda, - 0x14, 0x27, 0x80, 0x45, 0x50, 0xd8, 0x24, 0xb5, 0x31, 0x95, 0xf9, 0x76, 0xb9, 0xde, 0x43, 0x29, - 0xd4, 0xd9, 0xbf, 0x49, 0x23, 0x22, 0xf6, 0x14, 0x33, 0x32, 0x73, 0x46, 0x82, 0x88, 0x88, 0x83, - 0x49, 0x18, 0xcb, 0x65, 0x60, 0x05, 0x1d, 0xed, 0xe0, 0x39, 0xfe, 0x52, 0x7a, 0x08, 0x17, 0x81, - 0x62, 0xb5, 0xba, 0x64, 0x70, 0x9c, 0xd2, 0xf1, 0x63, 0x52, 0xbf, 0xae, 0x5e, 0x56, 0x51, 0x92, - 0xc7, 0xed, 0xd7, 0x25, 0x45, 0x45, 0xfa, 0x98, 0x7d, 0x87, 0x38, 0xf5, 0x76, 0xda, 0x66, 0x13, - 0x61, 0xea, 0x53, 0x43, 0x8d, 0x8e, 0x64, 0x39, 0x7f, 0x24, 0xe3, 0xfa, 0x69, 0xfe, 0x00, 0xfd, - 0x74, 0x58, 0x93, 0x71, 0xc0, 0x73, 0xd2, 0xf0, 0x43, 0x33, 0x19, 0xc7, 0x92, 0x31, 0x86, 0xab, - 0x5e, 0xfd, 0xc3, 0xcb, 0x63, 0xed, 0xad, 0xc3, 0x6e, 0xa8, 0x31, 0x66, 0x8d, 0xec, 0xa0, 0xf2, - 0x30, 0x1b, 0x6a, 0xd1, 0x34, 0x8c, 0x01, 0xad, 0x39, 0x86, 0xd6, 0x67, 0xd9, 0x34, 0x9a, 0xf2, - 0x9e, 0x76, 0xd7, 0x71, 0xbd, 0x64, 0x7b, 0xda, 0x98, 0x3a, 0x9d, 0xfc, 0x97, 0xf4, 0x90, 0x9c, - 0x78, 0x96, 0x7d, 0x54, 0xd3, 0x67, 0x82, 0x43, 0x72, 0x83, 0x08, 0x48, 0x1f, 0xde, 0xb7, 0x1e, - 0xd2, 0xe4, 0x39, 0x6c, 0x77, 0x64, 0x7d, 0x60, 0x64, 0x53, 0xe7, 0x30, 0xdd, 0x31, 0x9a, 0x86, - 0xf4, 0xf1, 0xfa, 0x7b, 0x6e, 0xe2, 0x7c, 0xf3, 0x18, 0x27, 0x4e, 0xbf, 0x67, 0xe6, 0x87, 0xec, - 0x99, 0xc3, 0xee, 0xd5, 0x31, 0x5e, 0x8f, 0x6e, 0xc2, 0x1c, 0x66, 0xaf, 0x2e, 0x86, 0x88, 0xf4, - 0x11, 0x7f, 0x8b, 0x02, 0xf2, 0xf5, 0xf1, 0xcf, 0x97, 0xc3, 0xae, 0x45, 0x08, 0xaf, 0xea, 0x23, - 0x9b, 0x2e, 0x87, 0x59, 0x8b, 0x44, 0x92, 0x30, 0x86, 0xcb, 0x0e, 0x8e, 0x82, 0x19, 0x62, 0x12, - 0xf1, 0xb7, 0xc4, 0xff, 0x9e, 0xcd, 0x9a, 0x6f, 0x4c, 0xb1, 0xaf, 0x3e, 0x07, 0x4c, 0xfa, 0xfb, - 0x66, 0x6c, 0xe6, 0x9c, 0x97, 0xeb, 0x9f, 0xc1, 0xbe, 0x5b, 0xf0, 0xff, 0x81, 0x1c, 0x57, 0x46, - 0xbe, 0xaf, 0x3e, 0xac, 0xe3, 0xca, 0xa1, 0xee, 0xad, 0xff, 0x49, 0x38, 0xa3, 0xfe, 0xc7, 0xf4, - 0x30, 0xef, 0xdd, 0x73, 0xcf, 0xf5, 0xd9, 0x73, 0x7f, 0x94, 0xc7, 0xb2, 0x2e, 0x62, 0x79, 0xaf, - 0x2c, 0x0b, 0x47, 0x38, 0xd7, 0x3e, 0x12, 0xc0, 0x79, 0x5e, 0x80, 0x73, 0xe1, 0x40, 0xb4, 0x8c, - 0xe1, 0x90, 0x6a, 0x2e, 0x9c, 0x73, 0x3f, 0x96, 0x62, 0x3f, 0xee, 0x39, 0x01, 0x93, 0xdb, 0x77, - 0x02, 0x46, 0xe8, 0xe9, 0xf9, 0x03, 0xf6, 0xf4, 0x8f, 0xf1, 0xd2, 0x61, 0x88, 0xd2, 0xf1, 0x6c, - 0x79, 0x44, 0x46, 0x37, 0x33, 0xbf, 0x27, 0x10, 0x8f, 0x0b, 0x82, 0x78, 0x94, 0x0f, 0x46, 0x4c, - 0xfa, 0xf2, 0xf1, 0x87, 0xfe, 0x82, 0xf6, 0x90, 0xfb, 0xfb, 0xb0, 0x5b, 0xc5, 0x02, 0x13, 0x47, - 0x36, 0x73, 0x0f, 0xb3, 0x55, 0x3c, 0x88, 0x92, 0x31, 0xc4, 0xbf, 0x9b, 0x05, 0xd3, 0x84, 0xa6, - 0x0b, 0x56, 0x6b, 0x0b, 0x79, 0xf0, 0x57, 0xa9, 0x3f, 0xa9, 0x1f, 0x6d, 0x74, 0x44, 0x21, 0xa1, - 0xa2, 0xce, 0x26, 0x27, 0xf5, 0xe8, 0xa0, 0x44, 0xce, 0x73, 0x04, 0x8e, 0x3b, 0x6a, 0xe5, 0x40, - 0x0a, 0xd2, 0x87, 0xec, 0x23, 0xd4, 0xdd, 0x66, 0xd5, 0xbc, 0xea, 0xec, 0x7a, 0xf0, 0x85, 0x23, - 0x18, 0xa0, 0x17, 0x40, 0xa1, 0x4d, 0x4a, 0x63, 0x47, 0x68, 0xe2, 0x97, 0x3b, 0x8c, 0x05, 0xb4, - 0x7e, 0x9d, 0xfd, 0x99, 0xf4, 0x1c, 0x4d, 0xc8, 0x47, 0x5a, 0xce, 0xb8, 0xcf, 0xd1, 0x0c, 0xa8, - 0x7f, 0x2c, 0xf7, 0x1a, 0x4d, 0xe2, 0xda, 0xad, 0x1d, 0xcb, 0x1b, 0x51, 0xb4, 0x8d, 0x36, 0x2e, - 0xcb, 0x8f, 0xb6, 0x41, 0x5e, 0x92, 0x9e, 0xee, 0xe5, 0xb8, 0x82, 0x7f, 0x1f, 0xf7, 0xe9, 0xde, - 0xf8, 0xea, 0xd3, 0xc7, 0xe4, 0xbf, 0xd0, 0x9e, 0x75, 0x9e, 0x3a, 0x4a, 0xa7, 0xe8, 0x83, 0x3d, - 0x74, 0x67, 0xa1, 0xa4, 0x1d, 0x5e, 0x67, 0xe9, 0x5b, 0x7f, 0xfa, 0xc0, 0x7c, 0xe0, 0x34, 0xc8, - 0x2f, 0xa2, 0x8b, 0xbb, 0x5b, 0xf0, 0x1e, 0x30, 0x69, 0xb8, 0x08, 0x55, 0xec, 0x4d, 0x07, 0x73, - 0xd7, 0xc3, 0xcf, 0x3e, 0x24, 0xec, 0x0d, 0xe3, 0xb1, 0x8d, 0xcc, 0x56, 0x78, 0x56, 0xd0, 0x7f, - 0x85, 0xaf, 0xc8, 0x82, 0x5c, 0xdd, 0x33, 0x3d, 0x38, 0x15, 0x60, 0x0b, 0x5f, 0xc8, 0x63, 0x71, - 0x8f, 0x88, 0xc5, 0x2d, 0x02, 0x2f, 0x08, 0x05, 0xf3, 0xf8, 0xff, 0x08, 0x00, 0x20, 0x98, 0x7c, - 0xa8, 0xeb, 0xd8, 0x38, 0x87, 0x7f, 0x5c, 0xd5, 0x7f, 0x87, 0xaf, 0x09, 0xd8, 0x7d, 0x9f, 0xc0, - 0xee, 0x27, 0xc9, 0x55, 0x31, 0x06, 0x4b, 0x5b, 0x16, 0x4c, 0x61, 0xd6, 0xae, 0x20, 0xb3, 0xd5, - 0x85, 0x8f, 0x0f, 0x85, 0x3f, 0x82, 0xcd, 0xf0, 0x83, 0xd2, 0x01, 0x50, 0x69, 0xab, 0x82, 0xc2, - 0xa3, 0x3d, 0x3a, 0xfc, 0xcd, 0xff, 0xac, 0x18, 0x38, 0xe6, 0x1c, 0xc8, 0x59, 0xf6, 0xa6, 0xc3, - 0xfc, 0x0b, 0xaf, 0x8f, 0x28, 0x1b, 0xcb, 0x84, 0x4e, 0x32, 0x4a, 0x46, 0x47, 0x8d, 0x27, 0x6b, - 0x2c, 0x17, 0x0d, 0xe6, 0x70, 0xed, 0xf0, 0xff, 0x18, 0xc8, 0x6c, 0x55, 0x05, 0xb9, 0x8e, 0xe9, - 0x6d, 0xb3, 0xaa, 0xc9, 0x33, 0xd6, 0x91, 0x77, 0x6d, 0xd3, 0x76, 0xec, 0xab, 0x3b, 0xd6, 0xf3, - 0x83, 0xfb, 0x8c, 0x85, 0x34, 0x4c, 0xf9, 0x16, 0xb2, 0x91, 0x6b, 0x7a, 0xa8, 0xbe, 0xb7, 0x45, - 0xd6, 0x58, 0x93, 0x3a, 0x9f, 0x94, 0x58, 0xfe, 0x31, 0xc5, 0xd1, 0xf2, 0xbf, 0x69, 0xb5, 0x11, - 0x89, 0xaa, 0xc5, 0xe4, 0xdf, 0x7f, 0x4f, 0x24, 0xff, 0x7d, 0xaa, 0x48, 0x1f, 0x8d, 0xef, 0x66, - 0xc1, 0x4c, 0x1d, 0x0b, 0x5c, 0x7d, 0x77, 0x67, 0xc7, 0x74, 0xaf, 0xc2, 0x9b, 0x42, 0x54, 0x38, - 0xd1, 0xcc, 0x88, 0x7e, 0x29, 0x7f, 0x20, 0x7d, 0x95, 0x37, 0xeb, 0xda, 0x5c, 0x0d, 0x89, 0xfb, - 0xc1, 0x53, 0x41, 0x1e, 0x8b, 0xb7, 0xef, 0x71, 0x19, 0xdb, 0x11, 0x68, 0x4e, 0xc9, 0xe8, 0x63, - 0x03, 0x69, 0x1b, 0x43, 0xe4, 0x93, 0x2c, 0x38, 0x5a, 0xf7, 0xcc, 0xe6, 0xa5, 0x65, 0xc7, 0x75, - 0x76, 0x3d, 0xcb, 0x46, 0x5d, 0xf8, 0xb8, 0x10, 0x01, 0x5f, 0xfe, 0x33, 0xa1, 0xfc, 0xc3, 0x7f, - 0xcd, 0xc8, 0xce, 0xa2, 0xc1, 0xb0, 0xca, 0x17, 0x1f, 0x11, 0x4c, 0x4c, 0x6e, 0x5e, 0x94, 0x29, - 0x71, 0x2c, 0xa7, 0x24, 0x8a, 0xda, 0x95, 0x8e, 0xe3, 0x7a, 0xab, 0x4e, 0xd3, 0x6c, 0x77, 0x3d, - 0xc7, 0x45, 0xb0, 0x16, 0xcb, 0x35, 0x3c, 0xc2, 0xb4, 0x9c, 0x66, 0x38, 0x39, 0xb2, 0x37, 0x5e, - 0xec, 0x14, 0x51, 0xc6, 0x3f, 0x22, 0xbd, 0xcb, 0x48, 0xb9, 0xd2, 0x4b, 0x51, 0x84, 0x9c, 0xf7, - 0x1b, 0xd2, 0x92, 0x1d, 0x6c, 0x91, 0xdb, 0x79, 0x94, 0x22, 0x6a, 0x0c, 0xa6, 0xf2, 0x2c, 0x98, - 0xad, 0xef, 0x5e, 0x0c, 0x0a, 0xe9, 0xf2, 0x4a, 0xc8, 0xeb, 0xa4, 0x23, 0x8a, 0x30, 0xc1, 0xe3, - 0x0b, 0x8a, 0xe0, 0xef, 0xcd, 0x60, 0xb6, 0xcb, 0x67, 0x63, 0x78, 0x8b, 0x89, 0x92, 0x91, 0x44, - 0x06, 0xd7, 0x9a, 0x3e, 0x03, 0xdf, 0x93, 0x05, 0xb3, 0xb5, 0x0e, 0xb2, 0x51, 0x8b, 0x7a, 0x41, - 0x0a, 0x0c, 0x7c, 0x45, 0x42, 0x06, 0x0a, 0x05, 0x45, 0x30, 0x30, 0xf4, 0x58, 0x5e, 0xf4, 0x99, - 0x17, 0x26, 0x24, 0x62, 0x5c, 0x5c, 0x6d, 0xe9, 0x33, 0xee, 0x8b, 0x59, 0x30, 0xad, 0xef, 0xda, - 0xeb, 0xae, 0x83, 0x67, 0x63, 0x17, 0xde, 0x1b, 0x0e, 0x10, 0xb7, 0x83, 0x63, 0xad, 0x5d, 0x97, - 0xd8, 0x9f, 0x2a, 0x76, 0x1d, 0x35, 0x1d, 0xbb, 0xd5, 0x25, 0xed, 0xc8, 0xeb, 0xfb, 0x3f, 0xdc, - 0x9d, 0x7b, 0xf8, 0xeb, 0x4a, 0x06, 0xfe, 0xac, 0x74, 0x58, 0x22, 0xda, 0x78, 0xae, 0x6a, 0xf9, - 0x91, 0x40, 0x32, 0xf8, 0xd0, 0xa0, 0x1a, 0xd2, 0x67, 0xee, 0x87, 0xb2, 0x40, 0x2d, 0x35, 0x9b, - 0xce, 0xae, 0xed, 0xd5, 0x51, 0x1b, 0x35, 0x3d, 0xc3, 0x35, 0x9b, 0x08, 0x1e, 0x0d, 0x78, 0xcc, - 0xb8, 0xf6, 0x0a, 0xe9, 0xfd, 0x45, 0xda, 0xa6, 0xfd, 0x65, 0x26, 0x60, 0x9e, 0xdc, 0x2e, 0xa2, - 0x64, 0x45, 0x63, 0xb8, 0x67, 0x27, 0x0b, 0x72, 0xeb, 0x96, 0xbd, 0xc5, 0x47, 0x6b, 0x3a, 0x8e, - 0x75, 0x9d, 0x16, 0xba, 0xc2, 0xa4, 0x91, 0xbe, 0xa8, 0x77, 0x80, 0xe3, 0xf6, 0xee, 0xce, 0x45, - 0xe4, 0xd6, 0x36, 0xc9, 0x4c, 0xd0, 0x35, 0x9c, 0x3a, 0xb2, 0xa9, 0xa2, 0x94, 0xd7, 0xfb, 0x7e, - 0x13, 0xd5, 0x04, 0x09, 0x05, 0x17, 0x53, 0x12, 0xc1, 0xeb, 0x80, 0xa8, 0x2c, 0x47, 0x54, 0x22, - 0xd5, 0xb6, 0x4f, 0xe1, 0xe9, 0xf3, 0xf7, 0x6b, 0x59, 0x30, 0xb1, 0x86, 0x3c, 0xd7, 0x6a, 0x76, - 0xe1, 0xe7, 0xf1, 0x34, 0x84, 0xbc, 0x75, 0xd3, 0x35, 0x77, 0x90, 0x87, 0xdc, 0x2e, 0xd4, 0x42, - 0xa6, 0x43, 0x30, 0xd9, 0x69, 0x9b, 0xde, 0xa6, 0xe3, 0xee, 0x30, 0x9d, 0x21, 0x78, 0xc7, 0xfa, - 0xc1, 0x1e, 0x72, 0xbb, 0x21, 0x59, 0xfe, 0x2b, 0x13, 0x70, 0x79, 0x6d, 0x8c, 0x91, 0x32, 0x2f, - 0x90, 0x71, 0x20, 0x6d, 0x4c, 0xa6, 0xc4, 0xb1, 0xdc, 0x25, 0xa3, 0xac, 0x3a, 0x5b, 0xf0, 0x55, - 0x0a, 0xc8, 0x11, 0xc9, 0x7b, 0x4b, 0x46, 0x58, 0x42, 0xec, 0xa0, 0x6e, 0xd7, 0xdc, 0x42, 0xfe, - 0x12, 0x82, 0xbd, 0xaa, 0x77, 0x81, 0x7c, 0x1b, 0xed, 0xa1, 0x36, 0x21, 0x63, 0xee, 0x8e, 0x9b, - 0x84, 0x96, 0xad, 0x3a, 0x5b, 0xf3, 0xb8, 0xac, 0x79, 0x56, 0xce, 0xfc, 0x2a, 0xce, 0xaa, 0xd3, - 0x3f, 0xce, 0x3e, 0x07, 0xe4, 0xc9, 0xbb, 0x3a, 0x05, 0xf2, 0x8b, 0xda, 0xc2, 0xc6, 0x72, 0xf1, - 0x08, 0x7e, 0xf4, 0xe9, 0x9b, 0x02, 0xf9, 0xa5, 0x92, 0x51, 0x5a, 0x2d, 0x66, 0x71, 0x3b, 0x2a, - 0xd5, 0xa5, 0x5a, 0x51, 0xc1, 0x89, 0xeb, 0xa5, 0x6a, 0xa5, 0x5c, 0xcc, 0xa9, 0xd3, 0x60, 0xe2, - 0x42, 0x49, 0xaf, 0x56, 0xaa, 0xcb, 0xc5, 0x3c, 0xfc, 0x5b, 0x1e, 0xbf, 0xbb, 0x45, 0xfc, 0x6e, - 0x8e, 0xa2, 0xa9, 0x1f, 0x64, 0xbf, 0x12, 0x40, 0x76, 0xaf, 0x00, 0xd9, 0x0f, 0xc8, 0x14, 0x32, - 0x06, 0x94, 0xb2, 0x60, 0x62, 0xdd, 0x75, 0x9a, 0xa8, 0xdb, 0x85, 0xbf, 0x94, 0x05, 0x85, 0xb2, - 0x69, 0x37, 0x51, 0x1b, 0x5e, 0x17, 0x42, 0x45, 0x7d, 0x81, 0x32, 0xc1, 0x71, 0x80, 0x7f, 0xe0, - 0x39, 0x73, 0xbf, 0xc8, 0x99, 0xdb, 0x84, 0x46, 0xb1, 0x72, 0xe7, 0x69, 0x99, 0x11, 0xfc, 0x79, - 0x7d, 0xc0, 0x9f, 0xb2, 0xc0, 0x9f, 0x73, 0xf2, 0x45, 0xa5, 0xcf, 0xa5, 0x6f, 0x67, 0xc0, 0xf1, - 0x65, 0x64, 0x23, 0xd7, 0x6a, 0x52, 0xe2, 0xfd, 0xf6, 0xdf, 0x2b, 0xb6, 0xff, 0x89, 0x02, 0xd1, - 0xfd, 0xfe, 0x10, 0x1b, 0xff, 0xda, 0xa0, 0xf1, 0xf7, 0x0b, 0x8d, 0xbf, 0x5d, 0xb2, 0x9c, 0x31, - 0x5c, 0x1c, 0x3b, 0x05, 0x66, 0xaa, 0x8e, 0x67, 0x6d, 0x5a, 0x4d, 0xba, 0x71, 0xfc, 0x4a, 0x05, - 0xe4, 0x56, 0xad, 0xae, 0xc7, 0x9f, 0x40, 0x3f, 0x03, 0xa6, 0x2d, 0xbb, 0xd9, 0xde, 0x6d, 0x21, - 0x1d, 0x99, 0x54, 0x56, 0x26, 0x75, 0x3e, 0x29, 0xb4, 0xc7, 0x63, 0xb2, 0x14, 0xdf, 0x1e, 0xff, - 0x29, 0x69, 0xdd, 0x89, 0x27, 0x81, 0x9c, 0xef, 0x8e, 0x98, 0x92, 0x4a, 0x60, 0xd6, 0xe6, 0xb2, - 0xfa, 0x47, 0xce, 0x7b, 0x23, 0x36, 0xf3, 0xc5, 0xe9, 0xe2, 0x1f, 0xf0, 0x7d, 0x52, 0xaa, 0xd6, - 0x20, 0x82, 0x92, 0x21, 0xb3, 0x94, 0x1c, 0x19, 0x55, 0x05, 0x73, 0x95, 0xaa, 0xa1, 0xe9, 0xd5, - 0xd2, 0x2a, 0xcb, 0xa2, 0xc0, 0xef, 0x66, 0x41, 0x5e, 0x47, 0x9d, 0xf6, 0x55, 0x3e, 0x24, 0x27, - 0xf3, 0xee, 0xca, 0x04, 0xde, 0x5d, 0xea, 0x12, 0x00, 0x66, 0x13, 0x57, 0x4c, 0xee, 0x1e, 0xc9, - 0xf6, 0x0d, 0x14, 0x27, 0x34, 0xb0, 0x14, 0xe4, 0xd6, 0xb9, 0x3f, 0xe1, 0x8b, 0xa5, 0xcd, 0x3d, - 0x42, 0x69, 0x84, 0xc2, 0x88, 0xe1, 0xe0, 0xfd, 0x52, 0x16, 0x9a, 0x81, 0xc5, 0x1d, 0x0e, 0xfb, - 0xbf, 0x9c, 0x05, 0x39, 0x03, 0xaf, 0xbf, 0xb8, 0xa5, 0xd8, 0x27, 0x87, 0x93, 0x71, 0x5c, 0x4c, - 0x84, 0x8c, 0xdf, 0x07, 0x66, 0x78, 0x89, 0x65, 0xfb, 0x1b, 0xb1, 0x22, 0x2e, 0xfc, 0x30, 0x8c, - 0x84, 0xf7, 0x21, 0xe7, 0x70, 0x58, 0xfc, 0x95, 0xdb, 0x00, 0x58, 0x43, 0x58, 0xaf, 0xed, 0x6e, - 0x5b, 0x1d, 0xf8, 0xdf, 0x14, 0x30, 0xb5, 0x8c, 0xbc, 0xba, 0x67, 0x7a, 0xbb, 0xdd, 0x1e, 0x1b, - 0xa5, 0xed, 0x94, 0xcd, 0xe6, 0x36, 0x62, 0xc3, 0x91, 0xff, 0x0a, 0xdf, 0xad, 0xc8, 0x6e, 0x02, - 0x86, 0xf5, 0xcc, 0x07, 0x75, 0x44, 0x60, 0xf2, 0x64, 0x90, 0x6b, 0x99, 0x9e, 0xc9, 0xb0, 0xb8, - 0xae, 0x07, 0x8b, 0xb0, 0x20, 0x9d, 0x64, 0x83, 0xbf, 0x95, 0x95, 0xd9, 0x05, 0x94, 0xa8, 0x3f, - 0x19, 0x08, 0xef, 0xcb, 0x0c, 0x81, 0xc2, 0x31, 0x30, 0x5b, 0xad, 0x19, 0x8d, 0xd5, 0xda, 0xf2, - 0xb2, 0x86, 0x53, 0x8b, 0x8a, 0x7a, 0x12, 0xa8, 0xeb, 0xa5, 0x07, 0xd7, 0xb4, 0xaa, 0xd1, 0xa8, - 0xd6, 0x16, 0x35, 0xf6, 0x67, 0x4e, 0x3d, 0x0a, 0xa6, 0xcb, 0xa5, 0xf2, 0x8a, 0x9f, 0x90, 0x57, - 0x4f, 0x81, 0xe3, 0x6b, 0xda, 0xda, 0x82, 0xa6, 0xd7, 0x57, 0x2a, 0xeb, 0x0d, 0x5c, 0xcc, 0x52, - 0x6d, 0xa3, 0xba, 0x58, 0x2c, 0xa8, 0x10, 0x9c, 0xe4, 0xbe, 0x5c, 0xd0, 0x6b, 0xd5, 0xe5, 0x46, - 0xdd, 0x28, 0x19, 0x5a, 0x71, 0x42, 0xbd, 0x06, 0x1c, 0x2d, 0x97, 0xaa, 0x24, 0x7b, 0xb9, 0x56, - 0xad, 0x6a, 0x65, 0xa3, 0x38, 0x09, 0xff, 0x35, 0x07, 0xa6, 0x2b, 0xdd, 0xaa, 0xb9, 0x83, 0xce, - 0x9b, 0x6d, 0xab, 0x05, 0x7f, 0x96, 0xd3, 0x26, 0x6f, 0x06, 0xb3, 0x2e, 0x7d, 0x44, 0x2d, 0xc3, - 0x42, 0x14, 0xcd, 0x59, 0x5d, 0x4c, 0x54, 0x4f, 0x82, 0x82, 0x4d, 0x0a, 0x60, 0xac, 0x61, 0x6f, - 0xea, 0x02, 0x00, 0xf4, 0xc9, 0x08, 0x6f, 0xc1, 0x3b, 0xdb, 0xdb, 0x9b, 0xcc, 0x1d, 0xd4, 0x45, - 0xee, 0x9e, 0xd5, 0x44, 0x7e, 0x4e, 0x9d, 0xfb, 0x0b, 0x7e, 0x45, 0x91, 0x35, 0x0a, 0x72, 0xa0, - 0x72, 0xcd, 0x89, 0x18, 0x0d, 0x7f, 0x46, 0x91, 0x31, 0xe9, 0x49, 0x15, 0x99, 0x4c, 0x52, 0x5e, - 0x9a, 0x1d, 0x42, 0x52, 0x66, 0xc1, 0x94, 0x51, 0xab, 0x35, 0xea, 0x2b, 0x35, 0xdd, 0x28, 0x2a, - 0xea, 0x0c, 0x98, 0xc4, 0xaf, 0xab, 0xb5, 0xea, 0x72, 0x31, 0xa7, 0x9e, 0x00, 0xc7, 0x56, 0x4a, - 0xf5, 0x46, 0xa5, 0x7a, 0xbe, 0xb4, 0x5a, 0x59, 0x6c, 0x94, 0x57, 0x4a, 0x7a, 0xbd, 0x98, 0x57, - 0xaf, 0x03, 0x27, 0x8c, 0x8a, 0xa6, 0x37, 0x96, 0xb4, 0x92, 0xb1, 0xa1, 0x6b, 0xf5, 0x46, 0xb5, - 0xd6, 0xa8, 0x96, 0xd6, 0xb4, 0x62, 0x01, 0x77, 0x7f, 0xf2, 0x29, 0x14, 0x9b, 0x89, 0xfd, 0xc2, - 0x38, 0x19, 0x21, 0x8c, 0x53, 0xbd, 0xc2, 0x08, 0x78, 0xb1, 0xd2, 0xb5, 0xba, 0xa6, 0x9f, 0xd7, - 0x8a, 0xd3, 0xfd, 0x64, 0x6d, 0x46, 0x3d, 0x0e, 0x8a, 0x98, 0x86, 0x46, 0xa5, 0xee, 0xe7, 0x5c, - 0x2c, 0xce, 0xc2, 0x8f, 0x15, 0xc0, 0x49, 0x1d, 0x6d, 0x59, 0x5d, 0x0f, 0xb9, 0xeb, 0xe6, 0xd5, - 0x1d, 0x64, 0x7b, 0xfe, 0x20, 0xff, 0xbf, 0x13, 0x0b, 0xe3, 0x1a, 0x98, 0xed, 0xd0, 0x32, 0xd6, - 0x90, 0xb7, 0xed, 0xb4, 0xd8, 0x2c, 0xfc, 0xc4, 0xc8, 0x91, 0x63, 0x7e, 0x9d, 0xcf, 0xae, 0x8b, - 0x7f, 0x73, 0xb2, 0xad, 0xc4, 0xc8, 0x76, 0x6e, 0x18, 0xd9, 0x56, 0x6f, 0x00, 0x53, 0xbb, 0x5d, - 0xe4, 0x6a, 0x3b, 0xa6, 0xd5, 0xf6, 0x6f, 0x31, 0x0b, 0x12, 0xe0, 0x3b, 0x72, 0xb2, 0x6e, 0xa6, - 0x5c, 0x5b, 0xfa, 0xb3, 0x31, 0x62, 0x6c, 0x3d, 0x0d, 0x00, 0x6b, 0xec, 0x86, 0xdb, 0x66, 0xc2, - 0xca, 0xa5, 0x60, 0xfa, 0x2e, 0x5a, 0xed, 0xb6, 0x65, 0x6f, 0x05, 0xc6, 0xfa, 0x30, 0x01, 0xbe, - 0x54, 0x91, 0x71, 0x3b, 0x4d, 0x4a, 0x5b, 0xb2, 0xde, 0xf4, 0xe2, 0xec, 0x98, 0xc7, 0xdd, 0xfd, - 0x5d, 0xa7, 0xa0, 0x16, 0xc1, 0x0c, 0x49, 0x63, 0x3d, 0xb0, 0x38, 0x81, 0xc7, 0x60, 0xbf, 0xb8, - 0x35, 0xcd, 0x58, 0xa9, 0x2d, 0x06, 0xdf, 0x26, 0x71, 0x91, 0x98, 0x98, 0x52, 0xf5, 0x41, 0xd2, - 0x1b, 0xa7, 0xd4, 0xc7, 0x81, 0xeb, 0xb8, 0x01, 0xbb, 0xb4, 0xaa, 0x6b, 0xa5, 0xc5, 0x07, 0x1b, - 0xda, 0xf3, 0x2a, 0x75, 0xa3, 0x2e, 0x76, 0x2e, 0xbf, 0x1f, 0x4d, 0x63, 0x7a, 0xb5, 0xb5, 0x52, - 0x65, 0x95, 0x8d, 0xef, 0x4b, 0x35, 0x7d, 0xad, 0x64, 0x14, 0x67, 0xe0, 0xab, 0x14, 0x50, 0x5c, - 0x46, 0xde, 0xba, 0xe3, 0x7a, 0x66, 0x7b, 0xd5, 0xb2, 0x2f, 0x6d, 0xb8, 0x6d, 0x5e, 0x67, 0xfa, - 0x17, 0xe9, 0xb3, 0xb5, 0xe2, 0x14, 0x29, 0x14, 0x18, 0x6d, 0xc6, 0xee, 0x90, 0x6c, 0xa1, 0x30, - 0x85, 0x09, 0xf0, 0xc7, 0xb3, 0x32, 0x67, 0x69, 0xe5, 0x6b, 0x4d, 0x26, 0x27, 0x2f, 0x18, 0xf7, - 0xfc, 0xdc, 0x07, 0xb5, 0x02, 0x7c, 0x38, 0x07, 0x26, 0x97, 0x2c, 0xdb, 0x6c, 0x5b, 0xcf, 0x17, - 0x02, 0xc4, 0x85, 0x63, 0x4c, 0x26, 0x66, 0x8c, 0xc9, 0x0e, 0x35, 0x7f, 0xfe, 0xa2, 0x22, 0xbb, - 0x61, 0xc1, 0xf1, 0xde, 0x27, 0x32, 0x62, 0xf2, 0xfc, 0xfd, 0xac, 0xcc, 0x96, 0xc4, 0xe0, 0xf2, - 0x92, 0x61, 0xf8, 0x89, 0xef, 0x0f, 0x1d, 0xab, 0xa7, 0x7f, 0x4f, 0xf6, 0x13, 0x85, 0x29, 0xf8, - 0x67, 0x0a, 0x80, 0xcb, 0xc8, 0x3b, 0x8f, 0xdc, 0x60, 0x29, 0x40, 0x46, 0x7d, 0xa6, 0x6f, 0x73, - 0x5d, 0xf6, 0x2d, 0x3c, 0x80, 0x17, 0x44, 0x00, 0x4b, 0x31, 0x9d, 0x27, 0xa2, 0xe8, 0x88, 0xce, - 0x5b, 0x01, 0x85, 0x2e, 0xf9, 0xce, 0xc4, 0xec, 0xa9, 0xd1, 0xd3, 0x25, 0x29, 0x8c, 0x2f, 0x9d, - 0x16, 0xac, 0xb3, 0x02, 0xe0, 0x77, 0x82, 0x45, 0xd0, 0x0f, 0x09, 0xd2, 0xb1, 0x74, 0x60, 0x62, - 0x93, 0xc9, 0x8b, 0x9b, 0xae, 0xb8, 0xf4, 0xd3, 0x6f, 0xe0, 0x17, 0x72, 0xe0, 0x78, 0xbf, 0xe6, - 0xf0, 0xf7, 0xc8, 0x1d, 0x07, 0x79, 0x44, 0x66, 0x7c, 0xda, 0xd9, 0xe9, 0x8b, 0xfa, 0x34, 0x70, - 0x82, 0x6d, 0x98, 0x5e, 0x44, 0x86, 0x53, 0x45, 0x97, 0xbb, 0x6d, 0xe4, 0x79, 0xc8, 0x25, 0x2d, - 0x9b, 0xd4, 0xfb, 0x7f, 0x84, 0x7f, 0xa7, 0xc8, 0xba, 0xa6, 0x0f, 0xe0, 0x77, 0x44, 0x4f, 0xff, - 0x69, 0x45, 0xc6, 0xd9, 0x3c, 0x59, 0xd9, 0xc9, 0x50, 0x7c, 0xd1, 0xb8, 0x67, 0xf8, 0xfe, 0x53, - 0x2b, 0xe9, 0xf3, 0x34, 0xdd, 0x9f, 0xa1, 0xcf, 0x6b, 0x7a, 0x65, 0xa9, 0xa2, 0xe1, 0xf9, 0xfe, - 0x04, 0x38, 0x16, 0x7e, 0x5b, 0x7c, 0xb0, 0x51, 0xd7, 0xaa, 0x46, 0x71, 0x12, 0x0f, 0x20, 0x34, - 0x79, 0xa9, 0x54, 0x59, 0xd5, 0x16, 0x1b, 0x46, 0x0d, 0x7f, 0x59, 0x1c, 0x6e, 0xce, 0x87, 0x2f, - 0xcc, 0x81, 0xa3, 0x84, 0xb7, 0x57, 0x09, 0x57, 0x31, 0x53, 0x7a, 0x3c, 0x57, 0x02, 0x80, 0xa6, - 0x28, 0x7b, 0xe1, 0x67, 0xa4, 0xef, 0x08, 0xe3, 0x20, 0xec, 0xa9, 0x23, 0x42, 0x32, 0xbe, 0x9d, - 0x95, 0x39, 0xef, 0x29, 0x5d, 0x6c, 0x32, 0xa1, 0xf8, 0xe7, 0x71, 0x4f, 0x05, 0xd1, 0xe0, 0x13, - 0xf5, 0xaf, 0x4c, 0x7e, 0x7e, 0xde, 0x7a, 0x45, 0x27, 0xe2, 0x30, 0x07, 0x00, 0x49, 0x21, 0x12, - 0x44, 0xe5, 0xa0, 0xef, 0x44, 0x12, 0x25, 0x07, 0xa5, 0xb2, 0x51, 0x39, 0xaf, 0x45, 0xc9, 0xc1, - 0xa7, 0x15, 0x30, 0xb9, 0x8c, 0x3c, 0xbc, 0xd8, 0xe9, 0xc2, 0x67, 0x49, 0x18, 0x66, 0xb0, 0x7e, - 0x41, 0x2e, 0x47, 0x0e, 0xd6, 0xe7, 0xf4, 0x0d, 0xfe, 0xd4, 0x30, 0xba, 0x81, 0x5f, 0x75, 0xc4, - 0x44, 0xf2, 0x0c, 0x90, 0xf7, 0xf0, 0x67, 0x66, 0x1f, 0x7e, 0x7c, 0xe4, 0x3c, 0x82, 0x0b, 0x59, - 0x34, 0x3d, 0x53, 0xa7, 0xf9, 0xb9, 0x69, 0x43, 0x52, 0xa9, 0x88, 0x20, 0xe4, 0xfb, 0x51, 0x31, - 0xfc, 0x5b, 0x05, 0x9c, 0xa0, 0xfd, 0xa3, 0xd4, 0xe9, 0xd4, 0x3d, 0xc7, 0x45, 0x3a, 0x6a, 0x22, - 0xab, 0xe3, 0xf5, 0x18, 0xde, 0x5c, 0x9a, 0xea, 0xef, 0xec, 0xb1, 0x57, 0xf8, 0x26, 0x45, 0x36, - 0xa2, 0xe1, 0xbe, 0xfe, 0xd8, 0x53, 0x5f, 0x44, 0x67, 0x7f, 0x34, 0x2b, 0x13, 0xa3, 0x30, 0x61, - 0xe1, 0xc9, 0x80, 0xfa, 0xf0, 0x21, 0x00, 0xe5, 0x9b, 0x54, 0x74, 0xad, 0xac, 0x55, 0xd6, 0xf1, - 0x24, 0x70, 0x23, 0xb8, 0x7e, 0x7d, 0x43, 0x2f, 0xaf, 0x94, 0xea, 0x5a, 0x43, 0xd7, 0x96, 0x2b, - 0x75, 0x43, 0x2f, 0x19, 0x95, 0x9a, 0x4f, 0xc0, 0x84, 0x7a, 0x03, 0x38, 0x55, 0xdf, 0x58, 0xa8, - 0x97, 0xf5, 0xca, 0x3a, 0x49, 0xd7, 0xb5, 0xaa, 0x76, 0x81, 0x7d, 0x9d, 0x84, 0x1f, 0x2c, 0x82, - 0x69, 0xac, 0x99, 0xd7, 0xa9, 0xc2, 0x0e, 0xbf, 0x99, 0x03, 0xd3, 0x3a, 0xea, 0x3a, 0xed, 0x3d, - 0xa2, 0xbc, 0x8f, 0x6b, 0x4d, 0xf0, 0x2d, 0x45, 0xf6, 0x34, 0x14, 0x47, 0xec, 0x3c, 0x47, 0x68, - 0xf4, 0x0a, 0xd0, 0xf4, 0xa3, 0x03, 0x33, 0xbd, 0x25, 0x4c, 0x50, 0xe7, 0x81, 0xea, 0x5c, 0xb6, - 0x91, 0x5b, 0x6f, 0x5e, 0xd6, 0xbc, 0xed, 0x52, 0xab, 0xe5, 0xa2, 0x6e, 0x97, 0x99, 0x15, 0xfa, - 0x7c, 0x51, 0x6f, 0x05, 0x47, 0x49, 0x2a, 0x97, 0x99, 0x1e, 0xdd, 0xec, 0x4d, 0x0e, 0x72, 0x96, - 0xec, 0xab, 0x7e, 0xce, 0x3c, 0x97, 0x33, 0x4c, 0xe6, 0x9d, 0x0f, 0x0b, 0xa2, 0xcf, 0xeb, 0x19, - 0x30, 0x6d, 0x9b, 0x3b, 0x48, 0xbb, 0xd2, 0xb1, 0x5c, 0xd4, 0x3d, 0x35, 0x41, 0x76, 0xd3, 0xf8, - 0x24, 0xf8, 0xfb, 0x52, 0xa7, 0xb7, 0xe4, 0x38, 0x96, 0x4c, 0xf6, 0x97, 0x87, 0x10, 0xfd, 0x3e, - 0xe3, 0x8c, 0x02, 0x3f, 0xa8, 0x80, 0x19, 0x46, 0x54, 0xc9, 0xbe, 0x5a, 0x69, 0xc1, 0x1b, 0x05, - 0xb5, 0xd4, 0xc4, 0x69, 0xbe, 0x5a, 0x4a, 0x5e, 0xe0, 0xcf, 0x29, 0xb2, 0xee, 0x44, 0x7d, 0x1a, - 0x4e, 0xea, 0x88, 0x76, 0x71, 0xd9, 0x74, 0x76, 0x99, 0x4b, 0xcd, 0xa4, 0x4e, 0x5f, 0xd2, 0xb4, - 0xb6, 0xc1, 0x0f, 0x49, 0x39, 0x2b, 0x49, 0x36, 0xe3, 0x90, 0x00, 0xfc, 0xb8, 0x02, 0xe6, 0x18, - 0x55, 0x75, 0xe6, 0x35, 0x2b, 0xe5, 0x3e, 0xfe, 0xf3, 0xd2, 0x8a, 0x60, 0x9f, 0xf6, 0xb3, 0x9a, - 0x1e, 0x33, 0x40, 0x7e, 0x44, 0x2a, 0xd4, 0x88, 0x74, 0x43, 0x0e, 0x09, 0xca, 0x77, 0xe6, 0xc0, - 0xf4, 0x46, 0x17, 0xb9, 0xcc, 0x2f, 0x0e, 0xbe, 0x3e, 0x07, 0x94, 0x65, 0x24, 0xec, 0x70, 0xbe, - 0x24, 0x27, 0x6b, 0xad, 0xe3, 0x1b, 0xcb, 0x15, 0x8a, 0x75, 0xa4, 0x08, 0xd8, 0x6e, 0x01, 0x73, - 0x94, 0xa5, 0x25, 0xcf, 0xc3, 0x4a, 0xa2, 0x7f, 0x08, 0xa0, 0x27, 0x75, 0x14, 0x7b, 0x38, 0xa4, - 0x2e, 0x9c, 0xa5, 0x8c, 0x69, 0x5a, 0x45, 0x9b, 0x34, 0x10, 0x55, 0x4e, 0xef, 0x49, 0x25, 0x17, - 0x37, 0x77, 0x10, 0xf5, 0x06, 0xe5, 0x32, 0xe7, 0x49, 0xe6, 0x7e, 0x9f, 0xe0, 0x37, 0xa5, 0x22, - 0xf4, 0xc9, 0x73, 0x27, 0x99, 0x2c, 0x74, 0x46, 0xa3, 0x92, 0x1c, 0x07, 0x45, 0x9c, 0x83, 0x6c, - 0x8c, 0xe8, 0x5a, 0xbd, 0xb6, 0x7a, 0x5e, 0xeb, 0x6f, 0x5f, 0xc8, 0xc3, 0x17, 0x29, 0x60, 0x6a, - 0xc1, 0x75, 0xcc, 0x56, 0xd3, 0xec, 0x7a, 0xf0, 0x3b, 0x59, 0x30, 0xb3, 0x6e, 0x5e, 0x6d, 0x3b, - 0x66, 0x8b, 0x78, 0x22, 0xf6, 0x8c, 0x05, 0x1d, 0xfa, 0xc9, 0x1f, 0x0b, 0xd8, 0xab, 0xe8, 0x66, - 0x1f, 0x38, 0xc2, 0x67, 0x64, 0xae, 0x12, 0x0b, 0xf6, 0xdf, 0xb2, 0xfd, 0x42, 0x7f, 0xf9, 0x74, - 0xcd, 0xf3, 0x34, 0x45, 0x68, 0x94, 0x1f, 0x94, 0x0b, 0xe6, 0x25, 0x53, 0xe4, 0xe1, 0x6c, 0x97, - 0x3f, 0x3c, 0x09, 0x0a, 0x8b, 0x88, 0x68, 0x71, 0xbf, 0x9d, 0x05, 0x13, 0xec, 0x32, 0x7d, 0x78, - 0x97, 0xe0, 0xe4, 0xd8, 0x22, 0x19, 0x82, 0xe1, 0x38, 0x78, 0xc7, 0x8b, 0x75, 0xee, 0xf4, 0x12, - 0x79, 0x4e, 0xe0, 0xfe, 0x45, 0xeb, 0x8d, 0xb8, 0xc0, 0x3f, 0x99, 0xfb, 0x57, 0x6c, 0x51, 0xe9, - 0x3b, 0x41, 0xbd, 0x3b, 0xcb, 0x7c, 0x9e, 0xb8, 0x51, 0xef, 0x57, 0x79, 0xf9, 0x8c, 0x75, 0x03, - 0x63, 0xc4, 0xc7, 0x78, 0x2d, 0xdd, 0x09, 0x26, 0x28, 0xcf, 0xfd, 0xf5, 0x68, 0xaf, 0x03, 0x01, - 0x2d, 0x82, 0x9c, 0x64, 0xf2, 0x73, 0x4a, 0xfa, 0x8e, 0x45, 0x57, 0x3e, 0x96, 0x13, 0x7d, 0x33, - 0x55, 0xe4, 0x5d, 0x76, 0xdc, 0x4b, 0x75, 0xcf, 0xf4, 0x10, 0xfc, 0xe7, 0x2c, 0x50, 0xea, 0xc8, - 0xe3, 0xcf, 0x12, 0x57, 0xc1, 0x31, 0xda, 0x20, 0x96, 0x91, 0x8c, 0xdf, 0xb4, 0x21, 0x67, 0xfa, - 0x32, 0x81, 0xcb, 0xa7, 0xef, 0xff, 0x15, 0xfe, 0x52, 0xdf, 0x10, 0x0a, 0xd9, 0x3e, 0x8b, 0x06, - 0xc6, 0x19, 0x9e, 0x40, 0x2c, 0x60, 0x11, 0x72, 0xfa, 0x7b, 0x52, 0x6a, 0xb5, 0x5c, 0x99, 0x87, - 0x32, 0x14, 0x9c, 0x9d, 0x00, 0x79, 0x6d, 0xa7, 0xe3, 0x5d, 0x3d, 0xfb, 0x04, 0x30, 0x5b, 0xf7, - 0x5c, 0x64, 0xee, 0x70, 0x3a, 0xb5, 0xe7, 0x5c, 0x42, 0xb6, 0xaf, 0x53, 0x93, 0x97, 0xbb, 0xef, - 0x02, 0x13, 0xb6, 0xd3, 0x30, 0x77, 0xbd, 0x6d, 0xf5, 0xc6, 0x7d, 0x97, 0xde, 0xaf, 0x51, 0x6f, - 0xdd, 0x1a, 0x3b, 0x4b, 0xf3, 0x95, 0x7b, 0x88, 0x56, 0x55, 0xb0, 0x9d, 0xd2, 0xae, 0xb7, 0xbd, - 0x70, 0xc3, 0xc7, 0xff, 0xe6, 0x74, 0xe6, 0xd3, 0x7f, 0x73, 0x3a, 0xf3, 0xe5, 0xbf, 0x39, 0x9d, - 0xf9, 0xf9, 0xaf, 0x9e, 0x3e, 0xf2, 0xe9, 0xaf, 0x9e, 0x3e, 0xf2, 0xf9, 0xaf, 0x9e, 0x3e, 0xf2, - 0x43, 0xd9, 0xce, 0xc5, 0x8b, 0x05, 0x52, 0xca, 0x9d, 0xff, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x74, 0xca, 0x11, 0x38, 0x6d, 0xdf, 0x01, 0x00, + // 18541 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7b, 0x98, 0x24, 0x47, + 0x75, 0x27, 0x3a, 0x55, 0x59, 0x55, 0xdd, 0x1d, 0xfd, 0x98, 0x9a, 0xd4, 0xcc, 0x68, 0x14, 0x12, + 0xa3, 0x61, 0x24, 0x84, 0x2c, 0x44, 0x0b, 0x24, 0x5e, 0x12, 0x12, 0x52, 0x75, 0x75, 0x76, 0x77, + 0xa1, 0xee, 0xaa, 0x26, 0x2b, 0x7b, 0x06, 0xd9, 0xd7, 0xb7, 0x36, 0xa7, 0x2a, 0xba, 0x3b, 0x35, + 0xd5, 0x99, 0xe5, 0xac, 0xec, 0x9e, 0x19, 0xee, 0xb7, 0x77, 0x6d, 0x63, 0x40, 0xd8, 0x66, 0x31, + 0xc6, 0xac, 0x0d, 0x18, 0x30, 0x4f, 0x1b, 0x6c, 0xc0, 0xbc, 0x0d, 0xb6, 0xb1, 0xcd, 0xdb, 0x18, + 0x63, 0x0c, 0xc6, 0x3c, 0x6c, 0x3e, 0x83, 0xc1, 0x2c, 0xde, 0xbb, 0x2c, 0xd7, 0xfe, 0x16, 0x58, + 0x6c, 0xb8, 0xdc, 0x2f, 0x1e, 0x99, 0x19, 0x51, 0x5d, 0x99, 0x15, 0x59, 0x5d, 0x59, 0x2d, 0xec, + 0xfd, 0x2f, 0x33, 0x32, 0x32, 0xe2, 0xc4, 0xf9, 0x9d, 0x13, 0x71, 0x22, 0xe2, 0xc4, 0x09, 0x70, + 0xaa, 0x73, 0xe1, 0xb6, 0x8e, 0xeb, 0x78, 0x4e, 0xf7, 0xb6, 0xa6, 0xb3, 0xb3, 0x63, 0xda, 0xad, + 0xee, 0x3c, 0x79, 0x57, 0x27, 0x4c, 0xfb, 0x8a, 0x77, 0xa5, 0x83, 0xe0, 0x8d, 0x9d, 0x8b, 0x5b, + 0xb7, 0xb5, 0xad, 0x0b, 0xb7, 0x75, 0x2e, 0xdc, 0xb6, 0xe3, 0xb4, 0x50, 0xdb, 0xff, 0x81, 0xbc, + 0xb0, 0xec, 0xf0, 0xe6, 0xa8, 0x5c, 0x6d, 0xa7, 0x69, 0xb6, 0xbb, 0x9e, 0xe3, 0x22, 0x96, 0xf3, + 0x64, 0x58, 0x25, 0xda, 0x43, 0xb6, 0xe7, 0x97, 0x70, 0xdd, 0x96, 0xe3, 0x6c, 0xb5, 0x11, 0xfd, + 0x76, 0x61, 0x77, 0xf3, 0xb6, 0xae, 0xe7, 0xee, 0x36, 0x3d, 0xf6, 0xf5, 0x4c, 0xef, 0xd7, 0x16, + 0xea, 0x36, 0x5d, 0xab, 0xe3, 0x39, 0x2e, 0xcd, 0x71, 0xf6, 0x87, 0x9f, 0x9b, 0x00, 0x8a, 0xde, + 0x69, 0xc2, 0xef, 0x4c, 0x00, 0xa5, 0xd4, 0xe9, 0xc0, 0x0f, 0x67, 0x01, 0x58, 0x46, 0xde, 0x39, + 0xe4, 0x76, 0x2d, 0xc7, 0x86, 0x47, 0xc1, 0x84, 0x8e, 0x7e, 0x6a, 0x17, 0x75, 0xbd, 0xbb, 0x72, + 0x0f, 0x7d, 0x5d, 0xc9, 0xc0, 0xd7, 0x67, 0xc1, 0xa4, 0x8e, 0xba, 0x1d, 0xc7, 0xee, 0x22, 0xf5, + 0x3e, 0x90, 0x47, 0xae, 0xeb, 0xb8, 0xa7, 0x32, 0x67, 0x32, 0x37, 0x4f, 0xdf, 0x7e, 0xcb, 0x3c, + 0x6b, 0xfe, 0xbc, 0xde, 0x69, 0xce, 0x97, 0x3a, 0x9d, 0xf9, 0xb0, 0xa4, 0x79, 0xff, 0xa7, 0x79, + 0x0d, 0xff, 0xa1, 0xd3, 0x1f, 0xd5, 0x53, 0x60, 0x62, 0x8f, 0x66, 0x38, 0x95, 0x3d, 0x93, 0xb9, + 0x79, 0x4a, 0xf7, 0x5f, 0xf1, 0x97, 0x16, 0xf2, 0x4c, 0xab, 0xdd, 0x3d, 0xa5, 0xd0, 0x2f, 0xec, + 0x15, 0xbe, 0x26, 0x03, 0xf2, 0xa4, 0x10, 0xb5, 0x0c, 0x72, 0x4d, 0xa7, 0x85, 0x48, 0xf5, 0x73, + 0xb7, 0xdf, 0x26, 0x5f, 0xfd, 0x7c, 0xd9, 0x69, 0x21, 0x9d, 0xfc, 0xac, 0x9e, 0x01, 0xd3, 0x3e, + 0x5b, 0x42, 0x32, 0xf8, 0xa4, 0xb3, 0xb7, 0x83, 0x1c, 0xce, 0xaf, 0x4e, 0x82, 0x5c, 0x75, 0x63, + 0x75, 0xb5, 0x78, 0x44, 0x3d, 0x06, 0x66, 0x37, 0xaa, 0xf7, 0x57, 0x6b, 0xe7, 0xab, 0x0d, 0x4d, + 0xd7, 0x6b, 0x7a, 0x31, 0xa3, 0xce, 0x82, 0xa9, 0x85, 0xd2, 0x62, 0xa3, 0x52, 0x5d, 0xdf, 0x30, + 0x8a, 0x59, 0xf8, 0x4a, 0x05, 0xcc, 0xd5, 0x91, 0xb7, 0x88, 0xf6, 0xac, 0x26, 0xaa, 0x7b, 0xa6, + 0x87, 0xe0, 0x0b, 0x33, 0x01, 0x33, 0xd5, 0x0d, 0x5c, 0x69, 0xf0, 0x89, 0x35, 0xe0, 0x8e, 0x7d, + 0x0d, 0x10, 0x4b, 0x98, 0x67, 0x7f, 0xcf, 0x73, 0x69, 0x3a, 0x5f, 0xce, 0xd9, 0xc7, 0x82, 0x69, + 0xee, 0x9b, 0x3a, 0x07, 0xc0, 0x42, 0xa9, 0x7c, 0xff, 0xb2, 0x5e, 0xdb, 0xa8, 0x2e, 0x16, 0x8f, + 0xe0, 0xf7, 0xa5, 0x9a, 0xae, 0xb1, 0xf7, 0x0c, 0xfc, 0x5e, 0x86, 0x03, 0x73, 0x51, 0x04, 0x73, + 0x7e, 0x30, 0x31, 0x7d, 0x00, 0x85, 0x6f, 0x08, 0xc0, 0x59, 0x16, 0xc0, 0xb9, 0x23, 0x59, 0x71, + 0xe9, 0x03, 0xf4, 0x9c, 0x2c, 0x98, 0xac, 0x6f, 0xef, 0x7a, 0x2d, 0xe7, 0x92, 0x0d, 0xa7, 0x02, + 0x64, 0xe0, 0x37, 0x79, 0x9e, 0x3c, 0x4d, 0xe4, 0xc9, 0xcd, 0xfb, 0x1b, 0xc1, 0x4a, 0x88, 0xe0, + 0xc6, 0x6f, 0x04, 0xdc, 0x28, 0x09, 0xdc, 0x78, 0xac, 0x6c, 0x41, 0xe9, 0xf3, 0xe1, 0x97, 0xee, + 0x00, 0xf9, 0x7a, 0xc7, 0x6c, 0x22, 0xf8, 0x09, 0x05, 0xcc, 0xac, 0x22, 0x73, 0x0f, 0x95, 0x3a, + 0x1d, 0xd7, 0xd9, 0x43, 0xb0, 0x1c, 0xca, 0xeb, 0x29, 0x30, 0xd1, 0xc5, 0x99, 0x2a, 0x2d, 0xd2, + 0x82, 0x29, 0xdd, 0x7f, 0x55, 0x4f, 0x03, 0x60, 0xb5, 0x90, 0xed, 0x59, 0x9e, 0x85, 0xba, 0xa7, + 0xb2, 0x67, 0x94, 0x9b, 0xa7, 0x74, 0x2e, 0x05, 0x7e, 0x27, 0x2b, 0x2b, 0x63, 0x84, 0x8a, 0x79, + 0x9e, 0x82, 0x08, 0xae, 0xbe, 0x36, 0x2b, 0x23, 0x63, 0x03, 0x8b, 0x4b, 0xc6, 0xdb, 0xb7, 0x64, + 0x92, 0x33, 0x17, 0xe7, 0xa8, 0xd6, 0x1a, 0xf5, 0x8d, 0xf2, 0x4a, 0xa3, 0xbe, 0x5e, 0x2a, 0x6b, + 0x45, 0xa4, 0x1e, 0x07, 0x45, 0xf2, 0xd8, 0xa8, 0xd4, 0x1b, 0x8b, 0xda, 0xaa, 0x66, 0x68, 0x8b, + 0xc5, 0x4d, 0x55, 0x05, 0x73, 0xba, 0xf6, 0x8c, 0x0d, 0xad, 0x6e, 0x34, 0x96, 0x4a, 0x95, 0x55, + 0x6d, 0xb1, 0xb8, 0x85, 0x7f, 0x5e, 0xad, 0xac, 0x55, 0x8c, 0x86, 0xae, 0x95, 0xca, 0x2b, 0xda, + 0x62, 0x71, 0x5b, 0xbd, 0x1a, 0x5c, 0x55, 0xad, 0x35, 0x4a, 0xeb, 0xeb, 0x7a, 0xed, 0x9c, 0xd6, + 0x60, 0x7f, 0xd4, 0x8b, 0x16, 0xad, 0xc8, 0x68, 0xd4, 0x57, 0x4a, 0xba, 0x56, 0x5a, 0x58, 0xd5, + 0x8a, 0x0f, 0xc2, 0x67, 0x2b, 0x60, 0x76, 0xcd, 0xbc, 0x88, 0xea, 0xdb, 0xa6, 0x8b, 0xcc, 0x0b, + 0x6d, 0x04, 0x6f, 0x90, 0xc0, 0x13, 0x7e, 0x82, 0xc7, 0x4b, 0x13, 0xf1, 0xba, 0xad, 0x0f, 0x83, + 0x85, 0x2a, 0x22, 0x00, 0xfb, 0x5f, 0x81, 0x1a, 0xac, 0x08, 0x80, 0x3d, 0x21, 0x61, 0x79, 0xc9, + 0x10, 0xfb, 0xd9, 0x87, 0x01, 0x62, 0xf0, 0x4b, 0x0a, 0x98, 0xab, 0xd8, 0x7b, 0x96, 0x87, 0x96, + 0x91, 0x8d, 0x5c, 0x3c, 0x0e, 0x48, 0xc1, 0xf0, 0x7a, 0x85, 0x83, 0x61, 0x49, 0x84, 0xe1, 0x71, + 0x7d, 0xd8, 0x26, 0xd6, 0x11, 0x31, 0xda, 0x5e, 0x07, 0xa6, 0x2c, 0x92, 0xaf, 0x6c, 0xb5, 0x18, + 0xc7, 0xc2, 0x04, 0xf5, 0x46, 0x30, 0x4b, 0x5f, 0x96, 0xac, 0x36, 0xba, 0x1f, 0x5d, 0x61, 0xe3, + 0xae, 0x98, 0x08, 0x7f, 0x31, 0x50, 0xbe, 0x8a, 0x80, 0xe5, 0x13, 0x93, 0x12, 0x95, 0x0c, 0xcc, + 0x97, 0x3c, 0x1c, 0xd4, 0x6f, 0x9f, 0x96, 0x59, 0xf0, 0x07, 0x59, 0x30, 0x5d, 0xf7, 0x9c, 0x0e, + 0x16, 0x59, 0xcb, 0xde, 0x92, 0x03, 0xf7, 0x63, 0xbc, 0x8e, 0x95, 0x45, 0x70, 0x1f, 0xdb, 0x87, + 0x8f, 0x5c, 0x05, 0x11, 0x1a, 0xf6, 0x9d, 0x40, 0xc3, 0x96, 0x04, 0x54, 0x6e, 0x4f, 0x54, 0xda, + 0x8f, 0xa0, 0x7e, 0xbd, 0x44, 0x01, 0x45, 0x5f, 0xcc, 0xbc, 0xf2, 0xae, 0xeb, 0x22, 0xdb, 0x93, + 0x03, 0xe1, 0x6f, 0x78, 0x10, 0x56, 0x44, 0x10, 0x6e, 0x8f, 0x11, 0x66, 0xbf, 0x96, 0x14, 0x75, + 0xec, 0x8f, 0x03, 0x34, 0xef, 0x17, 0xd0, 0x7c, 0x72, 0x72, 0xb2, 0x92, 0x41, 0xba, 0x32, 0x04, + 0xa2, 0xc7, 0x41, 0x11, 0x8f, 0x49, 0x65, 0xa3, 0x72, 0x4e, 0x6b, 0x54, 0xaa, 0xe7, 0x2a, 0x86, + 0x56, 0x44, 0xf0, 0xc5, 0x0a, 0x98, 0xa1, 0xa4, 0xe9, 0x68, 0xcf, 0xb9, 0x28, 0xd9, 0xeb, 0x7d, + 0x29, 0xa1, 0xb1, 0xc0, 0xd7, 0x10, 0xa1, 0x19, 0x3f, 0x9f, 0xc0, 0x58, 0x88, 0x29, 0xee, 0xe1, + 0xd4, 0x5b, 0xed, 0x53, 0x83, 0xad, 0x3e, 0xda, 0xd2, 0xb7, 0xb7, 0x7a, 0x49, 0x0e, 0x00, 0xda, + 0xc8, 0x73, 0x16, 0xba, 0x04, 0xd7, 0x42, 0x4c, 0x04, 0xb1, 0xcd, 0x0c, 0x14, 0xdb, 0x6c, 0x3f, + 0xb1, 0x7d, 0x0f, 0x3f, 0x66, 0x2d, 0x88, 0xe8, 0xdd, 0x1a, 0xc9, 0x6e, 0x4c, 0x49, 0xf4, 0xec, + 0xd0, 0x17, 0x94, 0xac, 0x68, 0x75, 0x5e, 0x07, 0xa6, 0xc8, 0x63, 0xd5, 0xdc, 0x41, 0x4c, 0x87, + 0xc2, 0x04, 0xf5, 0x2c, 0x98, 0xa1, 0x19, 0x9b, 0x8e, 0x8d, 0xdb, 0x93, 0x23, 0x19, 0x84, 0x34, + 0x0c, 0x62, 0xd3, 0x45, 0xa6, 0xe7, 0xb8, 0xa4, 0x8c, 0x3c, 0x05, 0x91, 0x4b, 0x82, 0xdf, 0x08, + 0xb4, 0x50, 0x13, 0x24, 0xe7, 0xf1, 0x49, 0x9a, 0x92, 0x4c, 0x6e, 0xf6, 0x86, 0xd3, 0x3f, 0xaa, + 0x75, 0x0d, 0x8c, 0xf6, 0x12, 0x99, 0xda, 0x21, 0xf5, 0x24, 0x50, 0x59, 0x2a, 0xce, 0x5b, 0xae, + 0x55, 0x0d, 0xad, 0x6a, 0x14, 0x37, 0xfb, 0x4a, 0xd4, 0x16, 0x7c, 0x6d, 0x0e, 0xe4, 0x9e, 0xee, + 0x58, 0x36, 0x7c, 0x4e, 0x46, 0x10, 0x09, 0x1b, 0x79, 0x97, 0x1c, 0xf7, 0x62, 0xa0, 0xa8, 0x61, + 0x42, 0x3c, 0x36, 0xa1, 0x28, 0x29, 0x03, 0x45, 0x29, 0xd7, 0x4f, 0x94, 0x7e, 0x99, 0x17, 0xa5, + 0xbb, 0x45, 0x51, 0xba, 0xa9, 0x0f, 0xff, 0x31, 0xf1, 0x11, 0x1d, 0xc0, 0x47, 0x83, 0x0e, 0xe0, + 0x5e, 0x01, 0xc6, 0xc7, 0xc8, 0x15, 0x93, 0x0c, 0xc0, 0x2f, 0xa6, 0xaa, 0xf8, 0xfd, 0xa0, 0xde, + 0x8a, 0x80, 0x7a, 0xbb, 0x4f, 0x9f, 0x60, 0xed, 0xef, 0x3a, 0x1e, 0xdc, 0xdf, 0x4d, 0x5c, 0x54, + 0x4f, 0x80, 0x63, 0x8b, 0x95, 0xa5, 0x25, 0x4d, 0xd7, 0xaa, 0x46, 0xa3, 0xaa, 0x19, 0xe7, 0x6b, + 0xfa, 0xfd, 0xc5, 0x36, 0x7c, 0x8d, 0x02, 0x00, 0xe6, 0x50, 0xd9, 0xb4, 0x9b, 0xa8, 0x2d, 0xd7, + 0xa3, 0xff, 0x8f, 0x6c, 0xb2, 0x3e, 0x21, 0x2c, 0x3f, 0x02, 0xce, 0x57, 0x64, 0xe5, 0xb5, 0x32, + 0xb2, 0xb0, 0x64, 0xa0, 0xbe, 0xe9, 0xe1, 0x60, 0x7b, 0x5e, 0x05, 0x8e, 0xfa, 0xe5, 0xb1, 0xec, + 0xfd, 0xa7, 0x7d, 0x6f, 0xcd, 0x81, 0x39, 0x06, 0x8b, 0x3f, 0x8f, 0x7f, 0x28, 0x23, 0x33, 0x91, + 0x87, 0x60, 0x92, 0x4d, 0xdb, 0xfd, 0xee, 0x3d, 0x78, 0x57, 0x97, 0xc1, 0x74, 0x07, 0xb9, 0x3b, + 0x56, 0xb7, 0x6b, 0x39, 0x36, 0x5d, 0x90, 0x9b, 0xbb, 0xfd, 0x51, 0x01, 0xc7, 0xc9, 0xda, 0xe5, + 0xfc, 0xba, 0xe9, 0x7a, 0x56, 0xd3, 0xea, 0x98, 0xb6, 0xb7, 0x1e, 0x66, 0xd6, 0xf9, 0x3f, 0xe1, + 0x8b, 0x12, 0x4e, 0x6b, 0xc4, 0x96, 0x44, 0x88, 0xc4, 0x1f, 0x24, 0x98, 0x92, 0xc4, 0x16, 0x98, + 0x4c, 0x2c, 0x3e, 0x9c, 0xaa, 0x58, 0xf4, 0xc1, 0x7b, 0x4b, 0xbd, 0x06, 0x9c, 0xa8, 0x54, 0xcb, + 0x35, 0x5d, 0xd7, 0xca, 0x46, 0x63, 0x5d, 0xd3, 0xd7, 0x2a, 0xf5, 0x7a, 0xa5, 0x56, 0xad, 0x1f, + 0x44, 0xdb, 0xe1, 0xc7, 0x95, 0x40, 0x62, 0x16, 0x51, 0xb3, 0x6d, 0xd9, 0x08, 0xde, 0x7b, 0x40, + 0x81, 0x11, 0x57, 0x7d, 0xe4, 0x71, 0x66, 0xf5, 0x47, 0xe0, 0xfc, 0xea, 0xe4, 0x38, 0xf7, 0x2f, + 0xf0, 0xdf, 0xb0, 0xfa, 0x7f, 0x49, 0x01, 0xc7, 0x38, 0x45, 0xd4, 0xd1, 0xce, 0xc8, 0x56, 0xf2, + 0x7e, 0x96, 0xd7, 0xdd, 0x8a, 0x88, 0x69, 0x3f, 0x6b, 0x7a, 0x1f, 0x19, 0x11, 0xb0, 0xbe, 0x29, + 0x80, 0x75, 0x55, 0x80, 0xf5, 0x29, 0x43, 0x94, 0x99, 0x0c, 0xd9, 0xdf, 0x4d, 0x15, 0xd9, 0x6b, + 0xc0, 0x89, 0xf5, 0x92, 0x6e, 0x54, 0xca, 0x95, 0xf5, 0x12, 0x1e, 0x47, 0xb9, 0x21, 0x3b, 0xc2, + 0x5c, 0x17, 0x41, 0xef, 0x8b, 0xef, 0x1f, 0xe5, 0xc0, 0x75, 0xfd, 0x3b, 0xda, 0xf2, 0xb6, 0x69, + 0x6f, 0x21, 0x68, 0xc9, 0x40, 0xbd, 0x08, 0x26, 0x9a, 0x24, 0x3b, 0xc5, 0x99, 0xdf, 0xba, 0x89, + 0xe9, 0xcb, 0x69, 0x0d, 0xba, 0xff, 0x2b, 0x7c, 0x07, 0x2f, 0x10, 0x86, 0x28, 0x10, 0x4f, 0x8b, + 0x07, 0x6f, 0x1f, 0xdd, 0x11, 0xb2, 0xf1, 0xa9, 0x40, 0x36, 0xce, 0x0b, 0xb2, 0x51, 0x3e, 0x58, + 0xf1, 0xc9, 0xc4, 0xe4, 0xcf, 0x1e, 0x0e, 0x1d, 0x40, 0xa4, 0x34, 0x59, 0xd1, 0xa3, 0x42, 0xdf, + 0xee, 0xfe, 0x55, 0x0a, 0x28, 0x2c, 0xa2, 0x36, 0x92, 0x5d, 0x89, 0xfc, 0x56, 0x56, 0x76, 0x43, + 0x84, 0xc2, 0x40, 0xcb, 0x8e, 0x5e, 0x1d, 0xf1, 0xac, 0x1d, 0xd4, 0xf5, 0xcc, 0x9d, 0x0e, 0x61, + 0xb5, 0xa2, 0x87, 0x09, 0xf0, 0xe7, 0xb2, 0x32, 0xdb, 0x25, 0x31, 0xd5, 0xfc, 0xdb, 0x58, 0x53, + 0xfc, 0xea, 0x1c, 0x28, 0x9c, 0x37, 0xdb, 0x6d, 0xe4, 0xc1, 0xaf, 0x65, 0x41, 0xa1, 0x8c, 0xe7, + 0xa4, 0x08, 0x3e, 0x26, 0x04, 0x0b, 0x82, 0x49, 0xd7, 0x71, 0xbc, 0x75, 0xd3, 0xdb, 0x66, 0x68, + 0x05, 0xef, 0x6c, 0x9b, 0xf6, 0x77, 0x78, 0xd0, 0xee, 0x15, 0x41, 0xfb, 0x31, 0x81, 0x9b, 0xb4, + 0xa2, 0x79, 0x5a, 0x49, 0x04, 0x6a, 0x10, 0x4c, 0xee, 0xd8, 0x68, 0xc7, 0xb1, 0xad, 0xa6, 0x3f, + 0xd2, 0xfb, 0xef, 0xf0, 0x03, 0xc1, 0x2c, 0x79, 0x41, 0xc0, 0x6c, 0x5e, 0xba, 0x96, 0x64, 0xa0, + 0xd5, 0x87, 0xc0, 0xec, 0x7a, 0x70, 0x2d, 0x85, 0xa0, 0x61, 0xd4, 0x1a, 0x65, 0x5d, 0x2b, 0x19, + 0x5a, 0x63, 0xb5, 0x56, 0x2e, 0xad, 0x36, 0x74, 0x6d, 0xbd, 0x56, 0x44, 0xf0, 0xbf, 0x66, 0x31, + 0x73, 0x9b, 0xce, 0x1e, 0x72, 0xe1, 0xb2, 0x14, 0x9f, 0xe3, 0x78, 0xc2, 0x30, 0xf8, 0x65, 0xe9, + 0xad, 0x72, 0xc6, 0x1d, 0x46, 0x41, 0x44, 0x57, 0xf8, 0x41, 0xa9, 0x6d, 0xef, 0xd8, 0xa2, 0x1e, + 0x06, 0x9c, 0xfe, 0x9f, 0x59, 0x30, 0x51, 0x76, 0xec, 0x3d, 0xe4, 0x7a, 0xbc, 0x95, 0xc9, 0x73, + 0x33, 0x23, 0x72, 0x13, 0x77, 0x4d, 0xc8, 0xf6, 0x5c, 0xa7, 0xe3, 0x9b, 0x99, 0xfe, 0x2b, 0xfc, + 0xcd, 0xa4, 0x1c, 0x66, 0x35, 0x47, 0x2f, 0x37, 0xf5, 0xaf, 0x48, 0x20, 0x4f, 0xe9, 0x51, 0x80, + 0xd7, 0x24, 0xc1, 0xa5, 0x3f, 0x01, 0xe9, 0xef, 0xf2, 0x7e, 0x59, 0x01, 0xb3, 0x54, 0xf9, 0xea, + 0x88, 0x8c, 0x8b, 0xb0, 0xc6, 0x2f, 0xf4, 0xf4, 0x30, 0x7f, 0xe5, 0x88, 0xc0, 0xfe, 0x82, 0xd9, + 0xe9, 0x04, 0x8b, 0x7e, 0x2b, 0x47, 0x74, 0xf6, 0x4e, 0xc5, 0x7c, 0xa1, 0x00, 0x72, 0xe6, 0xae, + 0xb7, 0x0d, 0x7f, 0x20, 0x6d, 0xf2, 0x0b, 0x9d, 0x01, 0xa3, 0x27, 0x02, 0x92, 0xe3, 0x20, 0xef, + 0x39, 0x17, 0x91, 0xcf, 0x07, 0xfa, 0x82, 0xe1, 0x30, 0x3b, 0x1d, 0x83, 0x7c, 0x60, 0x70, 0xf8, + 0xef, 0x78, 0x84, 0x31, 0x9b, 0x4d, 0x67, 0xd7, 0xf6, 0x2a, 0xfe, 0xc2, 0x5f, 0x98, 0x00, 0x3f, + 0x9f, 0x91, 0x99, 0x42, 0x48, 0x10, 0x98, 0x0c, 0xb2, 0x0b, 0x43, 0xa8, 0xd2, 0x3c, 0xb8, 0xa5, + 0xb4, 0xbe, 0xde, 0x30, 0x6a, 0xf7, 0x6b, 0xd5, 0x70, 0xb8, 0x6f, 0x54, 0xaa, 0x0d, 0x63, 0x45, + 0x6b, 0x94, 0x37, 0x74, 0xb2, 0x3a, 0x53, 0x2a, 0x97, 0x6b, 0x1b, 0x55, 0xa3, 0x88, 0xe0, 0x9b, + 0xb3, 0x60, 0xa6, 0xdc, 0x76, 0xba, 0x01, 0xc2, 0xd7, 0x87, 0x08, 0x07, 0x6c, 0xcc, 0x70, 0x6c, + 0x84, 0xff, 0x9a, 0x91, 0xdd, 0xea, 0xf5, 0x19, 0xc2, 0x15, 0x1f, 0xd1, 0x4b, 0xfd, 0xa6, 0xd4, + 0x56, 0xef, 0xe0, 0xf2, 0xd2, 0x57, 0x89, 0xcf, 0xdc, 0x05, 0x26, 0x4a, 0x54, 0x30, 0xe0, 0xdf, + 0x65, 0x40, 0xa1, 0xec, 0xd8, 0x9b, 0xd6, 0x96, 0x7a, 0x13, 0x98, 0x43, 0xb6, 0x79, 0xa1, 0x8d, + 0x16, 0x4d, 0xcf, 0xdc, 0xb3, 0xd0, 0x25, 0xd2, 0x80, 0x49, 0xbd, 0x27, 0x15, 0x13, 0xc5, 0x52, + 0xd0, 0x85, 0xdd, 0x2d, 0x42, 0xd4, 0xa4, 0xce, 0x27, 0xa9, 0x4f, 0x01, 0x57, 0xd3, 0xd7, 0x75, + 0x17, 0xb9, 0xa8, 0x8d, 0xcc, 0x2e, 0xc2, 0xc6, 0xa8, 0x8d, 0xda, 0x44, 0x68, 0x27, 0xf5, 0xa8, + 0xcf, 0xea, 0x59, 0x30, 0x43, 0x3f, 0x11, 0x53, 0xa7, 0x4b, 0xc4, 0x78, 0x52, 0x17, 0xd2, 0xd4, + 0xc7, 0x82, 0x3c, 0xba, 0xec, 0xb9, 0xe6, 0xa9, 0x16, 0xc1, 0xeb, 0xea, 0x79, 0xea, 0xeb, 0x35, + 0xef, 0xfb, 0x7a, 0xcd, 0xd7, 0x89, 0x27, 0x98, 0x4e, 0x73, 0xc1, 0x5f, 0x9f, 0x0c, 0x0c, 0x89, + 0x1f, 0x66, 0x43, 0xc1, 0x50, 0x41, 0xce, 0x36, 0x77, 0x10, 0x93, 0x0b, 0xf2, 0xac, 0xde, 0x02, + 0x8e, 0x9a, 0x7b, 0xa6, 0x67, 0xba, 0xab, 0x4e, 0xd3, 0x6c, 0x93, 0xc1, 0xcf, 0xd7, 0xfc, 0xde, + 0x0f, 0x64, 0x1d, 0xde, 0x73, 0x5c, 0x44, 0x72, 0xf9, 0xeb, 0xf0, 0x7e, 0x02, 0x2e, 0xdd, 0x6a, + 0x3a, 0x36, 0xa1, 0x5f, 0xd1, 0xc9, 0x33, 0xe6, 0x4a, 0xcb, 0xea, 0xe2, 0x86, 0x90, 0x52, 0xaa, + 0x74, 0x41, 0xb9, 0x7e, 0xc5, 0x6e, 0x92, 0x35, 0xf8, 0x49, 0x3d, 0xea, 0xb3, 0xba, 0x00, 0xa6, + 0xd9, 0xf2, 0xf3, 0x1a, 0x96, 0xab, 0x02, 0x91, 0xab, 0x33, 0xa2, 0x27, 0x0d, 0xc5, 0x73, 0xbe, + 0x1a, 0xe6, 0xd3, 0xf9, 0x9f, 0xd4, 0xfb, 0xc0, 0xb5, 0xec, 0xb5, 0xbc, 0xdb, 0xf5, 0x9c, 0x1d, + 0x0a, 0xfa, 0x92, 0xd5, 0xa6, 0x2d, 0x98, 0x20, 0x2d, 0x88, 0xcb, 0xa2, 0xde, 0x0e, 0x8e, 0x77, + 0x5c, 0xb4, 0x89, 0xdc, 0x07, 0xcc, 0x9d, 0xdd, 0xcb, 0x86, 0x6b, 0xda, 0xdd, 0x8e, 0xe3, 0x7a, + 0xa7, 0x26, 0x09, 0xf1, 0x7d, 0xbf, 0xb1, 0x8e, 0x72, 0x12, 0x14, 0x28, 0xfb, 0xe0, 0x0b, 0xf3, + 0xd2, 0x4e, 0x74, 0xac, 0x41, 0xb1, 0xe6, 0xd9, 0xe3, 0xc0, 0x04, 0xeb, 0xe1, 0x08, 0x50, 0xd3, + 0xb7, 0x9f, 0xec, 0x99, 0xcd, 0xb1, 0x52, 0x74, 0x3f, 0x9b, 0x7a, 0x07, 0x28, 0x34, 0x49, 0xb3, + 0x08, 0x66, 0xd3, 0xb7, 0x5f, 0xdb, 0xbf, 0x52, 0x92, 0x45, 0x67, 0x59, 0xe1, 0x17, 0x14, 0x29, + 0xbf, 0xbb, 0x38, 0x8a, 0x93, 0x69, 0xf5, 0x37, 0xb2, 0x43, 0x74, 0x9b, 0xb7, 0x82, 0x9b, 0x59, + 0x9f, 0xc8, 0xec, 0x8f, 0xc5, 0xc6, 0xc2, 0x86, 0x6f, 0x82, 0x63, 0xab, 0xa4, 0x6e, 0x94, 0x74, + 0x3c, 0x7f, 0x5a, 0xc4, 0xa6, 0xfb, 0x2d, 0xe0, 0xa6, 0x01, 0xb9, 0x35, 0xa3, 0x51, 0x2d, 0xad, + 0x69, 0xc5, 0x4d, 0xd1, 0xb6, 0xa9, 0x1b, 0xb5, 0xf5, 0x86, 0xbe, 0x51, 0xad, 0x56, 0xaa, 0xcb, + 0xb4, 0x30, 0x6c, 0x12, 0x9e, 0x0c, 0x33, 0x9c, 0xd7, 0x2b, 0x86, 0xd6, 0x28, 0xd7, 0xaa, 0x4b, + 0x95, 0xe5, 0xa2, 0x35, 0xc8, 0x30, 0x7a, 0x50, 0x3d, 0x03, 0xae, 0x13, 0x28, 0xa9, 0xd4, 0xaa, + 0x78, 0x3e, 0x51, 0x2e, 0x55, 0xcb, 0x1a, 0x9e, 0x3c, 0x5c, 0x54, 0x21, 0x38, 0x41, 0x8b, 0x6b, + 0x2c, 0x55, 0x56, 0xf9, 0x2d, 0x80, 0x8f, 0x65, 0xd4, 0x53, 0xe0, 0x2a, 0xfe, 0x5b, 0xa5, 0x7a, + 0xae, 0xb4, 0x5a, 0x59, 0x2c, 0xfe, 0x69, 0x46, 0xbd, 0x11, 0x5c, 0x2f, 0xfc, 0x45, 0x57, 0xf3, + 0x1b, 0x95, 0xc5, 0xc6, 0x5a, 0xa5, 0xbe, 0x56, 0x32, 0xca, 0x2b, 0xc5, 0x8f, 0x93, 0xf9, 0x42, + 0x60, 0x00, 0x73, 0xce, 0x70, 0x2f, 0xe1, 0xc7, 0xf4, 0x92, 0x28, 0xa8, 0x8f, 0xe9, 0x0b, 0x7b, + 0xbc, 0x0d, 0xfb, 0xe1, 0x60, 0x74, 0x58, 0x14, 0x44, 0xe8, 0x71, 0x09, 0xca, 0x4a, 0x26, 0x43, + 0xc6, 0x10, 0x22, 0x74, 0x06, 0x5c, 0x57, 0xd5, 0x28, 0x52, 0xba, 0x56, 0xae, 0x9d, 0xd3, 0xf4, + 0xc6, 0xf9, 0xd2, 0xea, 0xaa, 0x66, 0x34, 0x96, 0x2a, 0x7a, 0xdd, 0x28, 0x6e, 0xc2, 0x6f, 0x67, + 0x83, 0x39, 0x34, 0xc7, 0xad, 0xbf, 0xcb, 0x26, 0x55, 0xeb, 0xd8, 0xb9, 0xf2, 0x13, 0x41, 0xa1, + 0xeb, 0x99, 0xde, 0x6e, 0x97, 0x69, 0xf5, 0x23, 0xfa, 0x6b, 0xf5, 0x7c, 0x9d, 0x64, 0xd2, 0x59, + 0x66, 0xf8, 0x85, 0x4c, 0x12, 0x35, 0x1d, 0xc1, 0x34, 0xda, 0x1a, 0x82, 0xc5, 0xa7, 0x01, 0xf4, + 0xa5, 0xbd, 0x52, 0x6f, 0x94, 0x56, 0x75, 0xad, 0xb4, 0xf8, 0x40, 0x30, 0x79, 0x46, 0xea, 0x09, + 0x70, 0x6c, 0xa3, 0x8a, 0xa7, 0xc3, 0x44, 0x5d, 0x6a, 0xd5, 0xaa, 0x56, 0xc6, 0x7c, 0xff, 0x39, + 0xb2, 0x54, 0x8d, 0x2d, 0x68, 0x42, 0x37, 0xb6, 0x72, 0x38, 0xfe, 0x7f, 0x5d, 0xda, 0xa3, 0x23, + 0x94, 0x30, 0xbe, 0xac, 0xd1, 0xe2, 0xf0, 0x79, 0x29, 0x27, 0x0e, 0x29, 0x4a, 0x92, 0xe1, 0xf1, + 0x1f, 0x86, 0xc0, 0xe3, 0x04, 0x38, 0xc6, 0xe3, 0x41, 0x9c, 0x39, 0xa2, 0x61, 0xf8, 0xca, 0x24, + 0x28, 0xd4, 0x51, 0x1b, 0x35, 0x3d, 0xf8, 0x56, 0xce, 0x98, 0x98, 0x03, 0xd9, 0xc0, 0x79, 0x20, + 0x6b, 0xb5, 0x84, 0xe9, 0x73, 0xb6, 0x67, 0xfa, 0x1c, 0x63, 0x06, 0x28, 0x89, 0xcc, 0x80, 0x5c, + 0x0a, 0x66, 0x40, 0x7e, 0x78, 0x33, 0xa0, 0x30, 0xc8, 0x0c, 0x80, 0xaf, 0x2b, 0x24, 0xed, 0x25, + 0x28, 0xab, 0x0f, 0x77, 0xf0, 0xff, 0x1f, 0xb9, 0x24, 0xbd, 0x4a, 0x5f, 0x8a, 0x93, 0x49, 0xf1, + 0x0f, 0x94, 0x14, 0x96, 0x1f, 0xd4, 0x1b, 0xc0, 0xf5, 0xe1, 0x7b, 0x43, 0x7b, 0x66, 0xa5, 0x6e, + 0xd4, 0xc9, 0x88, 0x5f, 0xae, 0xe9, 0xfa, 0xc6, 0x3a, 0x5d, 0xb9, 0x3b, 0x09, 0xd4, 0xb0, 0x14, + 0x7d, 0xa3, 0x4a, 0xc7, 0xf7, 0x2d, 0xb1, 0xf4, 0xa5, 0x4a, 0x75, 0xb1, 0x11, 0xe8, 0x4c, 0x75, + 0xa9, 0x56, 0xdc, 0xc6, 0x53, 0x36, 0xae, 0x74, 0x3c, 0x40, 0xb3, 0x1a, 0x4a, 0xd5, 0xc5, 0xc6, + 0x5a, 0x55, 0x5b, 0xab, 0x55, 0x2b, 0x65, 0x92, 0x5e, 0xd7, 0x8c, 0xa2, 0x85, 0x07, 0x9a, 0x1e, + 0x8b, 0xa2, 0xae, 0x95, 0xf4, 0xf2, 0x8a, 0xa6, 0xd3, 0x2a, 0x1f, 0x54, 0x6f, 0x02, 0x67, 0x4b, + 0xd5, 0x9a, 0x81, 0x53, 0x4a, 0xd5, 0x07, 0x8c, 0x07, 0xd6, 0xb5, 0xc6, 0xba, 0x5e, 0x2b, 0x6b, + 0xf5, 0x3a, 0xd6, 0x53, 0x66, 0x7f, 0x14, 0xdb, 0xea, 0xd3, 0xc0, 0x5d, 0x1c, 0x69, 0x9a, 0x41, + 0xb6, 0x89, 0xd6, 0x6a, 0xc4, 0x53, 0x60, 0x51, 0x6b, 0xac, 0x94, 0xea, 0x8d, 0x4a, 0xb5, 0x5c, + 0x5b, 0x5b, 0x2f, 0x19, 0x15, 0xac, 0xce, 0xeb, 0x7a, 0xcd, 0xa8, 0x35, 0xce, 0x69, 0x7a, 0xbd, + 0x52, 0xab, 0x16, 0x6d, 0xdc, 0x64, 0x4e, 0xff, 0xfd, 0x7e, 0xd8, 0x51, 0xaf, 0x03, 0xa7, 0xfc, + 0xf4, 0xd5, 0x1a, 0x66, 0x34, 0x67, 0x91, 0x74, 0x52, 0xb5, 0x48, 0xfe, 0x25, 0x0b, 0x72, 0x75, + 0xcf, 0xe9, 0xc0, 0x1f, 0x0b, 0x3b, 0x98, 0xd3, 0x00, 0xb8, 0x64, 0xd7, 0x07, 0xcf, 0xc2, 0xd8, + 0xbc, 0x8c, 0x4b, 0x81, 0x1f, 0x91, 0x5e, 0xaa, 0x0e, 0xfb, 0x6c, 0xa7, 0x13, 0x61, 0xab, 0x7c, + 0x4f, 0xce, 0x77, 0x3f, 0xba, 0xa0, 0x64, 0xf2, 0xfe, 0xf3, 0xc3, 0x2c, 0x46, 0x43, 0x70, 0x92, + 0x83, 0x0d, 0xf3, 0xdf, 0x17, 0x09, 0xa4, 0x5e, 0x0d, 0xae, 0xea, 0x11, 0x2e, 0x22, 0x53, 0x9b, + 0xea, 0x23, 0xc1, 0x23, 0x38, 0xf1, 0xd6, 0xd6, 0x6a, 0xe7, 0xb4, 0x40, 0x90, 0x17, 0x4b, 0x46, + 0xa9, 0xb8, 0x05, 0x3f, 0xa3, 0x80, 0xdc, 0x9a, 0xb3, 0xd7, 0xbb, 0x43, 0x60, 0xa3, 0x4b, 0xdc, + 0x5a, 0xa8, 0xff, 0x2a, 0xfa, 0x2a, 0x4b, 0xb1, 0x7d, 0x2d, 0x7a, 0x37, 0xf0, 0xf3, 0xd9, 0x24, + 0x6c, 0x5f, 0x3b, 0xe8, 0x16, 0xe0, 0x3f, 0x0e, 0xc3, 0xf6, 0x08, 0xd6, 0x22, 0xf5, 0x2c, 0x38, + 0x1d, 0x7e, 0xa8, 0x2c, 0x6a, 0x55, 0xa3, 0xb2, 0xf4, 0x40, 0xc8, 0xdc, 0x8a, 0x2e, 0xc5, 0xfe, + 0x41, 0xdd, 0x58, 0xfc, 0x4c, 0xe3, 0x14, 0x38, 0x1e, 0x7e, 0x5b, 0xd6, 0x0c, 0xff, 0xcb, 0x83, + 0xf0, 0x39, 0x79, 0x30, 0x43, 0xbb, 0xf5, 0x8d, 0x4e, 0xcb, 0xf4, 0x10, 0xbc, 0x23, 0x44, 0xf7, + 0x66, 0x70, 0xb4, 0xb2, 0xbe, 0x54, 0xaf, 0x7b, 0x8e, 0x6b, 0x6e, 0xa1, 0x52, 0xab, 0xe5, 0x32, + 0x6e, 0xf5, 0x26, 0xc3, 0x77, 0x49, 0xaf, 0xf3, 0x89, 0x43, 0x09, 0xad, 0x33, 0x02, 0xf5, 0x2f, + 0x4b, 0xad, 0xcb, 0x49, 0x14, 0x98, 0x0c, 0xfd, 0x07, 0x47, 0xac, 0x73, 0xd1, 0xb8, 0x6c, 0x9e, + 0x7d, 0x5e, 0x16, 0x4c, 0x19, 0xd6, 0x0e, 0x7a, 0x96, 0x63, 0xa3, 0xae, 0x3a, 0x01, 0x94, 0xe5, + 0x35, 0xa3, 0x78, 0x04, 0x3f, 0x60, 0xa3, 0x2a, 0x43, 0x1e, 0x34, 0x5c, 0x01, 0x7e, 0x28, 0x19, + 0x45, 0x05, 0x3f, 0xac, 0x69, 0x46, 0x31, 0x87, 0x1f, 0xaa, 0x9a, 0x51, 0xcc, 0xe3, 0x87, 0xf5, + 0x55, 0xa3, 0x58, 0xc0, 0x0f, 0x95, 0xba, 0x51, 0x9c, 0xc0, 0x0f, 0x0b, 0x75, 0xa3, 0x38, 0x89, + 0x1f, 0xce, 0xd5, 0x8d, 0xe2, 0x14, 0x7e, 0x28, 0x1b, 0x46, 0x11, 0xe0, 0x87, 0xa7, 0xd7, 0x8d, + 0xe2, 0x34, 0x7e, 0x28, 0x95, 0x8d, 0xe2, 0x0c, 0x79, 0xd0, 0x8c, 0xe2, 0x2c, 0x7e, 0xa8, 0xd7, + 0x8d, 0xe2, 0x1c, 0x29, 0xb9, 0x6e, 0x14, 0x8f, 0x92, 0xba, 0x2a, 0x46, 0xb1, 0x88, 0x1f, 0x56, + 0xea, 0x46, 0xf1, 0x18, 0xc9, 0x5c, 0x37, 0x8a, 0x2a, 0xa9, 0xb4, 0x6e, 0x14, 0xaf, 0x22, 0x79, + 0xea, 0x46, 0xf1, 0x38, 0xa9, 0xa2, 0x6e, 0x14, 0x4f, 0x10, 0x32, 0x34, 0xa3, 0x78, 0x92, 0xe4, + 0xd1, 0x8d, 0xe2, 0xd5, 0xe4, 0x53, 0xd5, 0x28, 0x9e, 0x22, 0x84, 0x69, 0x46, 0xf1, 0x1a, 0xf2, + 0xa0, 0x1b, 0x45, 0x48, 0x3e, 0x95, 0x8c, 0xe2, 0xb5, 0xf0, 0x11, 0x60, 0x6a, 0x19, 0x79, 0x14, + 0x44, 0x58, 0x04, 0xca, 0x32, 0xf2, 0x78, 0x33, 0xfe, 0xab, 0x0a, 0xb8, 0x9a, 0x4d, 0xfd, 0x96, + 0x5c, 0x67, 0x67, 0x15, 0x6d, 0x99, 0xcd, 0x2b, 0xda, 0x65, 0x6c, 0x42, 0xc1, 0xba, 0xb0, 0x74, + 0xd5, 0x09, 0x3b, 0x23, 0xf2, 0x1c, 0x6b, 0x71, 0xfa, 0x8b, 0x51, 0x4a, 0xb8, 0x18, 0xc5, 0x2c, + 0xb2, 0x7f, 0xe6, 0x25, 0x5a, 0x58, 0x3f, 0xce, 0xf4, 0xac, 0x1f, 0x63, 0x35, 0xe9, 0x20, 0xb7, + 0xeb, 0xd8, 0x66, 0xbb, 0xce, 0xb6, 0x4b, 0xe9, 0xaa, 0x57, 0x6f, 0xb2, 0xfa, 0x0c, 0x5f, 0x33, + 0xa8, 0x55, 0xf6, 0xd4, 0xb8, 0x19, 0x6e, 0x6f, 0x33, 0x23, 0x94, 0xe4, 0xe3, 0x81, 0x92, 0x18, + 0x82, 0x92, 0xdc, 0x77, 0x80, 0xb2, 0x93, 0xe9, 0x4b, 0x65, 0xb8, 0xa9, 0x45, 0xe8, 0x4c, 0xe8, + 0x2f, 0x57, 0x2b, 0xf0, 0x33, 0x59, 0x70, 0x52, 0xb3, 0xfb, 0x59, 0xf8, 0xbc, 0x2c, 0xbc, 0x99, + 0x87, 0x66, 0x5d, 0x64, 0xe9, 0x5d, 0x7d, 0x9b, 0xdd, 0xbf, 0xcc, 0x08, 0x8e, 0x7e, 0x32, 0xe0, + 0x68, 0x5d, 0xe0, 0xe8, 0xbd, 0xc3, 0x17, 0x9d, 0x8c, 0xa1, 0xd5, 0x91, 0x76, 0x40, 0x39, 0xf8, + 0x8d, 0x1c, 0x78, 0x04, 0xf5, 0x78, 0x60, 0x14, 0x52, 0x2d, 0x2b, 0xd9, 0x2d, 0x1d, 0x75, 0x3d, + 0xd3, 0xf5, 0x84, 0x53, 0xa8, 0x3d, 0x53, 0xa9, 0x4c, 0x0a, 0x53, 0xa9, 0xec, 0xc0, 0xa9, 0x14, + 0x7c, 0x27, 0x6f, 0x3e, 0x9c, 0x17, 0x31, 0x2e, 0xf5, 0xef, 0xff, 0xe3, 0x5a, 0x18, 0x05, 0x75, + 0x60, 0x57, 0xfc, 0xb8, 0x00, 0xf5, 0xd2, 0x81, 0x6b, 0x48, 0x86, 0xf8, 0x47, 0x46, 0x6b, 0xe7, + 0xe5, 0xf8, 0x6f, 0xa2, 0x51, 0x52, 0x6c, 0xa5, 0x6a, 0xa0, 0x7f, 0x6a, 0x02, 0x4c, 0x11, 0x5d, + 0x58, 0xb5, 0xec, 0x8b, 0xf0, 0x35, 0x0a, 0x98, 0xa9, 0xa2, 0x4b, 0xe5, 0x6d, 0xb3, 0xdd, 0x46, + 0xf6, 0x16, 0xe2, 0xcd, 0xf6, 0x53, 0x60, 0xc2, 0xec, 0x74, 0xaa, 0xe1, 0x3e, 0x83, 0xff, 0xca, + 0xfa, 0xdf, 0xaf, 0xf7, 0x55, 0xf2, 0x4c, 0x8c, 0x92, 0x07, 0xf5, 0xce, 0xf3, 0x75, 0x46, 0xcc, + 0x90, 0xcf, 0x80, 0xe9, 0xa6, 0x9f, 0x25, 0xf0, 0x56, 0xe7, 0x93, 0xe0, 0x3f, 0x24, 0xea, 0x06, + 0xa4, 0x2a, 0x4f, 0x26, 0x14, 0x68, 0xc4, 0x76, 0xc8, 0x09, 0x70, 0xcc, 0xa8, 0xd5, 0x1a, 0x6b, + 0xa5, 0xea, 0x03, 0xe1, 0x29, 0xd1, 0x4d, 0xf8, 0x8a, 0x1c, 0x98, 0xab, 0x3b, 0xed, 0x3d, 0x14, + 0xc2, 0x54, 0x09, 0x61, 0xea, 0xe1, 0x53, 0x66, 0x1f, 0x9f, 0xd4, 0x93, 0xa0, 0x60, 0xda, 0xdd, + 0x4b, 0xc8, 0xb7, 0x0d, 0xd9, 0x1b, 0x83, 0xf1, 0x8f, 0x78, 0x3d, 0xd6, 0x45, 0x18, 0xef, 0x1e, + 0xc0, 0x49, 0x91, 0xaa, 0x08, 0x20, 0xcf, 0x82, 0x99, 0x2e, 0xdd, 0x2c, 0x34, 0xb8, 0x3d, 0x61, + 0x21, 0x8d, 0x90, 0x48, 0x77, 0xab, 0x15, 0x46, 0x22, 0x79, 0x83, 0xaf, 0x09, 0xd4, 0x7f, 0x43, + 0x80, 0xb8, 0x74, 0x10, 0xc2, 0x92, 0x81, 0xfc, 0xaa, 0x51, 0xcf, 0xf0, 0x4e, 0x81, 0xe3, 0x4c, + 0x6b, 0x1b, 0xe5, 0x95, 0xd2, 0xea, 0xaa, 0x56, 0x5d, 0xd6, 0x1a, 0x95, 0x45, 0xba, 0x55, 0x11, + 0xa6, 0x94, 0x0c, 0x43, 0x5b, 0x5b, 0x37, 0xea, 0x0d, 0xed, 0x99, 0x65, 0x4d, 0x5b, 0x24, 0x8e, + 0x48, 0xe4, 0x24, 0x81, 0xef, 0x32, 0x56, 0xaa, 0xd6, 0xcf, 0x6b, 0x7a, 0x71, 0xfb, 0x6c, 0x09, + 0x4c, 0x73, 0xfd, 0x3c, 0xa6, 0x6e, 0x11, 0x6d, 0x9a, 0xbb, 0x6d, 0x66, 0xab, 0x15, 0x8f, 0x60, + 0xea, 0x08, 0x6f, 0x6a, 0x76, 0xfb, 0x4a, 0x31, 0xa3, 0x16, 0xc1, 0x0c, 0xdf, 0xa5, 0x17, 0xb3, + 0xf0, 0x7b, 0xd7, 0x82, 0xa9, 0xf3, 0x8e, 0x7b, 0x91, 0x78, 0x8f, 0xc1, 0xf7, 0xd2, 0x68, 0x12, + 0xfe, 0xb9, 0x3c, 0x6e, 0x60, 0x7f, 0x95, 0xbc, 0xb7, 0x80, 0x5f, 0xda, 0xfc, 0xc0, 0xb3, 0x77, + 0x67, 0xc0, 0xf4, 0x25, 0x3f, 0x77, 0xa8, 0xe9, 0x5c, 0x12, 0xfc, 0x2d, 0xb9, 0xfd, 0xff, 0xc1, + 0x55, 0xa6, 0xbf, 0x3f, 0xfd, 0xd6, 0x2c, 0x28, 0x2c, 0x23, 0xaf, 0xd4, 0x6e, 0xf3, 0x7c, 0x7b, + 0xa9, 0xf4, 0x79, 0x0a, 0xa1, 0x11, 0xa5, 0x76, 0x3b, 0x5a, 0xa9, 0x38, 0x06, 0xf9, 0x7e, 0xbf, + 0x42, 0x1a, 0x7c, 0x9d, 0xd4, 0x49, 0xa8, 0x01, 0x15, 0xa6, 0xcf, 0xb1, 0x37, 0x28, 0xc1, 0x1e, + 0xf7, 0xf3, 0x39, 0x2b, 0xe7, 0xf1, 0x61, 0x24, 0x91, 0x4c, 0xfc, 0x5e, 0xb9, 0x9f, 0x4f, 0xbd, + 0x1f, 0x4c, 0xec, 0x76, 0x51, 0xd9, 0xec, 0x22, 0x42, 0x5b, 0x6f, 0x4b, 0x6b, 0x17, 0x1e, 0x44, + 0x4d, 0x6f, 0xbe, 0xb2, 0x83, 0x0d, 0xea, 0x0d, 0x9a, 0x31, 0x08, 0xce, 0xc1, 0xde, 0x75, 0xbf, + 0x04, 0xf8, 0xc2, 0x21, 0x20, 0x8b, 0xdd, 0xef, 0x8d, 0x3c, 0x7a, 0x95, 0x18, 0xa8, 0x11, 0x6c, + 0xd2, 0x0e, 0x03, 0xd4, 0xa7, 0xb2, 0x20, 0x57, 0xeb, 0x20, 0x5b, 0xce, 0x01, 0xf5, 0x35, 0xf2, + 0x5e, 0x5e, 0x41, 0xc3, 0x70, 0xe9, 0x11, 0xdc, 0xbb, 0x0d, 0xe4, 0x2c, 0x7b, 0xd3, 0x61, 0x06, + 0xe6, 0xb5, 0x11, 0x9b, 0x39, 0x15, 0x7b, 0xd3, 0xd1, 0x49, 0x46, 0x59, 0x07, 0xaf, 0xb8, 0xba, + 0xd3, 0x67, 0xe9, 0x37, 0x27, 0x41, 0x81, 0x8a, 0x25, 0x7c, 0x89, 0x02, 0x94, 0x52, 0xab, 0x15, + 0x71, 0x88, 0x23, 0xbb, 0xef, 0x10, 0x87, 0x43, 0x7e, 0x0b, 0xf8, 0x1e, 0xbc, 0x8b, 0xa1, 0x20, + 0x24, 0xfb, 0x68, 0xa6, 0x1a, 0xa5, 0x56, 0x2b, 0xda, 0x97, 0x34, 0xa8, 0x30, 0x2b, 0x56, 0xc8, + 0x6b, 0xaa, 0x22, 0xa7, 0xa9, 0x89, 0x3b, 0xf4, 0x48, 0xfa, 0xd2, 0x87, 0xe8, 0x9f, 0xb3, 0x60, + 0x62, 0xd5, 0xea, 0x7a, 0x18, 0x9b, 0x92, 0x0c, 0x36, 0xd7, 0x81, 0x29, 0x9f, 0x35, 0xb8, 0xeb, + 0xc2, 0xfd, 0x72, 0x98, 0x00, 0x5f, 0xcb, 0xa3, 0xf3, 0x74, 0x11, 0x9d, 0x27, 0xc4, 0xb7, 0x9e, + 0x51, 0x11, 0xed, 0xa3, 0x1d, 0x56, 0x9b, 0xed, 0xad, 0xf6, 0x77, 0x02, 0x86, 0xaf, 0x09, 0x0c, + 0xbf, 0x73, 0x98, 0x2a, 0xd3, 0x67, 0xfa, 0x67, 0xb3, 0x00, 0xe0, 0xba, 0xd9, 0x41, 0x98, 0x47, + 0x0b, 0xc7, 0x5b, 0x63, 0xb8, 0xfb, 0x0a, 0x9e, 0xbb, 0x6b, 0x22, 0x77, 0x9f, 0x3c, 0xb8, 0xa9, + 0x71, 0x07, 0x5e, 0xd4, 0x22, 0x50, 0xac, 0x80, 0xb5, 0xf8, 0x11, 0xbe, 0x35, 0x60, 0xea, 0xba, + 0xc0, 0xd4, 0xbb, 0x87, 0xac, 0x29, 0x7d, 0xbe, 0xfe, 0x4d, 0x16, 0x4c, 0xd4, 0x91, 0x87, 0xbb, + 0x49, 0x78, 0x4e, 0xe6, 0xc8, 0x09, 0xa7, 0xdb, 0x59, 0x49, 0xdd, 0xfe, 0x6e, 0x46, 0x36, 0x4c, + 0x46, 0xc8, 0x19, 0x46, 0x53, 0xc4, 0x22, 0xc0, 0xeb, 0xa5, 0xc2, 0x64, 0x0c, 0x2a, 0x2d, 0x7d, + 0xee, 0xbe, 0x39, 0x1b, 0x6c, 0xb0, 0x3f, 0x46, 0x98, 0xa0, 0xf1, 0xe6, 0x6d, 0x66, 0xbf, 0x79, + 0xfb, 0xed, 0x4c, 0x72, 0x53, 0x23, 0x6e, 0x77, 0x39, 0xb1, 0x41, 0x31, 0x82, 0x8d, 0xdf, 0x61, + 0xf8, 0xf5, 0x6c, 0x05, 0x14, 0xd8, 0x0a, 0xf1, 0xbd, 0xf1, 0x2b, 0xc4, 0x83, 0xa7, 0x08, 0xef, + 0x19, 0xc2, 0x5c, 0x8b, 0x5b, 0xb6, 0x0d, 0xc8, 0xc8, 0x72, 0x64, 0xdc, 0x0a, 0xf2, 0x24, 0x8e, + 0x1f, 0x1b, 0xe7, 0xc2, 0x3d, 0x7b, 0xbf, 0x08, 0x0d, 0x7f, 0xd5, 0x69, 0xa6, 0xc4, 0x28, 0x8c, + 0x60, 0xa5, 0x77, 0x18, 0x14, 0x3e, 0xfd, 0x91, 0x4c, 0x60, 0x84, 0xbc, 0x27, 0xc7, 0x4c, 0xbc, + 0x8f, 0x8a, 0x11, 0x05, 0x9a, 0x8e, 0xed, 0xa1, 0xcb, 0xdc, 0xda, 0x7a, 0x90, 0x10, 0x6b, 0x19, + 0x9c, 0x02, 0x13, 0x9e, 0xcb, 0xaf, 0xb7, 0xfb, 0xaf, 0x7c, 0x8f, 0x93, 0x17, 0x7b, 0x9c, 0x2a, + 0x38, 0x6b, 0xd9, 0xcd, 0xf6, 0x6e, 0x0b, 0xe9, 0xa8, 0x6d, 0xe2, 0x56, 0x75, 0x4b, 0xdd, 0x45, + 0xd4, 0x41, 0x76, 0x0b, 0xd9, 0x1e, 0xa5, 0xd3, 0xf7, 0xad, 0x95, 0xc8, 0x09, 0xbf, 0xc6, 0x0b, + 0xc6, 0x3d, 0xa2, 0x60, 0x3c, 0xba, 0xdf, 0xfc, 0x20, 0xc6, 0x08, 0xbd, 0x13, 0x00, 0xda, 0xb6, + 0x73, 0x16, 0xba, 0xc4, 0x3a, 0xc4, 0x6b, 0x7a, 0x4c, 0xd1, 0x5a, 0x90, 0x41, 0xe7, 0x32, 0xc3, + 0x2f, 0x05, 0xc2, 0x70, 0x9f, 0x20, 0x0c, 0xb7, 0x4a, 0x92, 0x90, 0x4c, 0x0e, 0x3a, 0x43, 0xac, + 0x59, 0xcc, 0x82, 0xa9, 0x70, 0xa5, 0x51, 0x51, 0xaf, 0x01, 0x27, 0x7c, 0xdf, 0x85, 0xaa, 0xa6, + 0x2d, 0xd6, 0x1b, 0x1b, 0xeb, 0xcb, 0x7a, 0x69, 0x51, 0x2b, 0x02, 0x55, 0x05, 0x73, 0xb5, 0x85, + 0xa7, 0x6b, 0x65, 0x23, 0x70, 0x39, 0xc8, 0xc1, 0xbf, 0xce, 0x82, 0x3c, 0x71, 0x0c, 0x87, 0x3f, + 0x39, 0x22, 0xc9, 0xe9, 0x0a, 0x3b, 0x35, 0xc1, 0xbc, 0x42, 0x3e, 0xd2, 0x1f, 0x63, 0x26, 0xa1, + 0xea, 0x40, 0x91, 0xfe, 0x62, 0x0a, 0x4a, 0x5f, 0x3d, 0xb1, 0x4a, 0xd6, 0xb7, 0x9d, 0x4b, 0xff, + 0x9e, 0x55, 0x12, 0xb7, 0xff, 0x90, 0x55, 0xb2, 0x0f, 0x09, 0x63, 0x57, 0xc9, 0x3e, 0x7a, 0x17, + 0xa3, 0xa6, 0xf0, 0x1f, 0x72, 0xc1, 0xc2, 0xca, 0xff, 0x73, 0xb0, 0x85, 0x95, 0x12, 0x98, 0xb5, + 0x6c, 0x0f, 0xb9, 0xb6, 0xd9, 0x5e, 0x6a, 0x9b, 0x5b, 0xfe, 0xf1, 0xe3, 0xde, 0x59, 0x78, 0x85, + 0xcb, 0xa3, 0x8b, 0x7f, 0xa8, 0xa7, 0x01, 0xf0, 0xd0, 0x4e, 0xa7, 0x6d, 0x7a, 0xa1, 0xe8, 0x71, + 0x29, 0xbc, 0xf4, 0xe5, 0x44, 0xe9, 0x7b, 0x1c, 0xb8, 0x8a, 0x82, 0x66, 0x5c, 0xe9, 0xa0, 0x0d, + 0xdb, 0xfa, 0xa9, 0x5d, 0x12, 0x80, 0x86, 0xca, 0x68, 0xbf, 0x4f, 0xf0, 0xbf, 0x4b, 0x1f, 0xa3, + 0xf4, 0x35, 0x7b, 0xc0, 0x31, 0xca, 0x40, 0x9b, 0x94, 0x1e, 0x6d, 0x0a, 0x0c, 0x82, 0x9c, 0x84, + 0x41, 0xc0, 0x73, 0x3e, 0x2f, 0x69, 0x4c, 0xbf, 0x5a, 0xea, 0x9c, 0x66, 0x5c, 0x33, 0xd2, 0xef, + 0xa1, 0xde, 0xab, 0x80, 0x39, 0x5a, 0xf5, 0x82, 0xe3, 0x5c, 0xdc, 0x31, 0xdd, 0x8b, 0xfc, 0xdc, + 0x62, 0x08, 0x71, 0x8b, 0x5e, 0x29, 0xfb, 0x24, 0x8f, 0xec, 0xb2, 0x88, 0xec, 0xe3, 0xa3, 0x59, + 0xe2, 0xd3, 0x35, 0x9e, 0xc5, 0x8d, 0x37, 0x06, 0x98, 0x3d, 0x5d, 0xc0, 0xec, 0x49, 0x89, 0x09, + 0x4c, 0x1f, 0xbb, 0x3f, 0x0b, 0xb0, 0xf3, 0x3b, 0xec, 0xd4, 0xb0, 0xfb, 0xf2, 0x70, 0xd8, 0xf9, + 0x74, 0x0d, 0x81, 0x5d, 0x11, 0x28, 0x17, 0x83, 0x2d, 0x25, 0xfc, 0xc8, 0x37, 0x28, 0x97, 0x1e, + 0x9a, 0x11, 0x24, 0x8f, 0x05, 0xcd, 0xe3, 0x22, 0x09, 0xb5, 0x4e, 0xaa, 0x98, 0x7e, 0x51, 0x7a, + 0xbd, 0xa5, 0x2f, 0x83, 0x28, 0x75, 0xe3, 0xd1, 0x4a, 0xb9, 0xc5, 0x1a, 0x79, 0x32, 0xd3, 0x47, + 0xf3, 0x9f, 0x72, 0x60, 0xca, 0x3f, 0xcc, 0xea, 0xc1, 0xbf, 0xe4, 0x86, 0xf0, 0x93, 0xa0, 0xd0, + 0x75, 0x76, 0xdd, 0x26, 0x62, 0x2b, 0x60, 0xec, 0x6d, 0x88, 0xd5, 0x9a, 0x81, 0xe3, 0xf2, 0xbe, + 0xa1, 0x3f, 0x97, 0x78, 0xe8, 0x8f, 0x34, 0x2c, 0xe1, 0x0b, 0xa5, 0x43, 0x0f, 0x0a, 0xb8, 0xd4, + 0x91, 0xf7, 0x70, 0x1c, 0xab, 0xff, 0x44, 0x6a, 0xbe, 0x3f, 0xa0, 0x25, 0xc9, 0xc4, 0xaa, 0x36, + 0x84, 0x51, 0x79, 0x2d, 0xb8, 0xda, 0xcf, 0xc1, 0xac, 0x49, 0x62, 0x3d, 0x6e, 0xe8, 0xab, 0x45, + 0x05, 0x3e, 0x3b, 0x07, 0x8a, 0x94, 0xb4, 0x5a, 0x60, 0x58, 0xc1, 0x97, 0x1e, 0xba, 0xf5, 0x18, + 0x3d, 0x1d, 0xfc, 0x74, 0x56, 0x36, 0xbc, 0x91, 0xc0, 0xf8, 0xb0, 0x75, 0x11, 0x92, 0x34, 0x84, + 0x2a, 0xc5, 0x08, 0x1f, 0xfc, 0xed, 0x8c, 0x4c, 0xb4, 0x24, 0x39, 0x12, 0xd3, 0xef, 0x79, 0x5e, + 0x9b, 0xf3, 0xe3, 0x0e, 0x2c, 0xb9, 0xce, 0xce, 0x86, 0xdb, 0x86, 0x1f, 0x90, 0x0a, 0x46, 0x17, + 0x61, 0xaa, 0x67, 0x23, 0x4d, 0x75, 0x3c, 0x44, 0xef, 0xba, 0x6d, 0x7f, 0x88, 0xde, 0x75, 0xdb, + 0x43, 0x0c, 0xd1, 0xea, 0x4d, 0x60, 0xce, 0x6c, 0xb5, 0xd6, 0xcd, 0x2d, 0x54, 0xc6, 0x73, 0x60, + 0xdb, 0x63, 0x67, 0x92, 0x7b, 0x52, 0x13, 0xec, 0x8c, 0x09, 0x40, 0x30, 0x1e, 0x3c, 0x9c, 0x76, + 0xc6, 0x24, 0xe8, 0x4b, 0x5f, 0x4a, 0xfe, 0x20, 0x0b, 0x26, 0xca, 0xdb, 0x26, 0xd9, 0x19, 0x7b, + 0x94, 0x10, 0x14, 0x24, 0x72, 0x6f, 0xf2, 0xf9, 0xd2, 0x9b, 0xc2, 0x7e, 0x0b, 0x69, 0xf9, 0x11, + 0xbc, 0x3f, 0x09, 0x0a, 0xcd, 0x6d, 0x33, 0xe4, 0x3c, 0x7b, 0x93, 0xdc, 0xfb, 0x8d, 0xad, 0x22, + 0x7d, 0xf6, 0x7d, 0x3c, 0x0b, 0x66, 0x7d, 0xbb, 0x7f, 0x09, 0x79, 0xcd, 0x6d, 0x78, 0xa7, 0xec, + 0x02, 0x0f, 0xd3, 0x9a, 0x6c, 0xa0, 0x35, 0xf0, 0x07, 0x99, 0x84, 0xa2, 0x2d, 0xd4, 0x1c, 0xb1, + 0x3a, 0x96, 0x48, 0x16, 0xe3, 0x0a, 0x4c, 0x9f, 0x99, 0x5f, 0xca, 0x02, 0x60, 0x38, 0xc1, 0xfc, + 0xf3, 0x00, 0x9c, 0x7c, 0xb1, 0x74, 0x94, 0x77, 0xd6, 0xf0, 0xb0, 0xda, 0xe4, 0x3d, 0x84, 0xe4, + 0xd6, 0xd6, 0xa0, 0x9a, 0xc6, 0xa2, 0xeb, 0x53, 0x8b, 0xbb, 0x9d, 0xb6, 0xd5, 0x34, 0xbd, 0xde, + 0xfd, 0xd8, 0x68, 0xf6, 0x92, 0xeb, 0x5a, 0x12, 0x19, 0x78, 0x41, 0x1d, 0x11, 0xbc, 0xa4, 0x87, + 0x55, 0xb3, 0xfe, 0x61, 0x55, 0xc9, 0x3d, 0x96, 0x01, 0x85, 0x8f, 0x41, 0x3c, 0x15, 0x70, 0xb4, + 0xd6, 0x41, 0xf6, 0x82, 0x8b, 0xcc, 0x56, 0xd3, 0xdd, 0xdd, 0xb9, 0xd0, 0xe5, 0x9d, 0x09, 0xe2, + 0x65, 0x94, 0x5b, 0xb2, 0xcd, 0x0a, 0x4b, 0xb6, 0xf0, 0xb9, 0x8a, 0xec, 0xd1, 0x69, 0x6e, 0x63, + 0x81, 0xa3, 0x61, 0x88, 0x21, 0x2d, 0xd1, 0x16, 0x58, 0xcf, 0xea, 0x6c, 0x2e, 0xc9, 0xea, 0xec, + 0x9b, 0xa4, 0x0e, 0x62, 0x4b, 0xb5, 0x6b, 0x2c, 0x3b, 0x99, 0x73, 0x75, 0xe4, 0x45, 0xc0, 0x7b, + 0x23, 0x98, 0xbd, 0x10, 0x7e, 0x09, 0x20, 0x16, 0x13, 0xfb, 0xf8, 0x17, 0xbc, 0x39, 0xe9, 0x8a, + 0x89, 0x48, 0x42, 0x04, 0xba, 0x01, 0x82, 0x59, 0x99, 0x4d, 0xcc, 0x44, 0xcb, 0x1f, 0xb1, 0xf5, + 0xa7, 0x8f, 0xc2, 0x87, 0xb2, 0x60, 0x9a, 0x5c, 0x42, 0xb3, 0x70, 0x85, 0x78, 0xb7, 0x4b, 0x1a, + 0x25, 0x2f, 0xe0, 0xd9, 0xac, 0x82, 0x5c, 0xdb, 0xb2, 0x2f, 0xfa, 0xbb, 0xcf, 0xf8, 0x39, 0xbc, + 0xd2, 0x20, 0xdb, 0xe7, 0x4a, 0x83, 0x60, 0x7f, 0x20, 0xa8, 0xf7, 0x40, 0x77, 0x6c, 0x0d, 0x2c, + 0x2e, 0x7d, 0x36, 0xfe, 0x79, 0x0e, 0x14, 0xea, 0xc8, 0x74, 0x9b, 0xdb, 0xf0, 0x15, 0x5c, 0x9c, + 0x80, 0x25, 0x30, 0xb1, 0x69, 0xb5, 0x3d, 0xe4, 0x52, 0xbf, 0x1b, 0xbe, 0x03, 0xa7, 0x8a, 0xbc, + 0xd0, 0x76, 0x9a, 0x17, 0xe7, 0x99, 0xb1, 0x3d, 0xef, 0x87, 0x5c, 0x9a, 0x5f, 0x22, 0x3f, 0xe9, + 0xfe, 0xcf, 0xd8, 0xec, 0xeb, 0x3a, 0xae, 0x17, 0x15, 0xc3, 0x34, 0xa2, 0x94, 0xba, 0xe3, 0x7a, + 0x3a, 0xfd, 0x11, 0x83, 0xb9, 0xb9, 0xdb, 0x6e, 0x1b, 0xe8, 0xb2, 0xe7, 0x4f, 0xb4, 0xfc, 0x77, + 0x6c, 0x12, 0x3a, 0x9b, 0x9b, 0x5d, 0x44, 0xa7, 0xf9, 0x79, 0x9d, 0xbd, 0xa9, 0xc7, 0x41, 0xbe, + 0x6d, 0xed, 0x58, 0x74, 0x6a, 0x90, 0xd7, 0xe9, 0x8b, 0x7a, 0x0b, 0x28, 0x86, 0xb3, 0x12, 0x4a, + 0xe8, 0xa9, 0x02, 0x51, 0xc0, 0x7d, 0xe9, 0x58, 0x32, 0x2e, 0xa2, 0x2b, 0xdd, 0x53, 0x13, 0xe4, + 0x3b, 0x79, 0x16, 0x9d, 0x1c, 0x65, 0x76, 0x1a, 0x28, 0x5f, 0xa3, 0xe7, 0x9c, 0x2e, 0x6a, 0x3a, + 0x6e, 0xcb, 0xe7, 0x4d, 0xf4, 0x74, 0x81, 0xe5, 0x4b, 0xb6, 0x3f, 0xd0, 0xb7, 0xf2, 0xf4, 0xe5, + 0xe9, 0x65, 0x05, 0xdc, 0x39, 0xe2, 0xaa, 0xcf, 0x5b, 0xde, 0xf6, 0x1a, 0xf2, 0x4c, 0xf8, 0xe7, + 0xca, 0xff, 0x96, 0xab, 0x18, 0xb9, 0xa2, 0x47, 0xe6, 0xbd, 0x5d, 0xd7, 0xc6, 0xdc, 0x62, 0x41, + 0xaa, 0xb8, 0x14, 0xf5, 0x6e, 0x70, 0x4d, 0xf8, 0xe6, 0x2f, 0x53, 0x2e, 0xb2, 0xa9, 0xe6, 0x14, + 0xc9, 0x1e, 0x9d, 0x41, 0x5d, 0x07, 0x37, 0xd0, 0x8f, 0x2b, 0xc6, 0xda, 0xea, 0x8a, 0xb5, 0xb5, + 0xdd, 0xb6, 0xb6, 0xb6, 0xbd, 0x6e, 0xc5, 0xee, 0x7a, 0xc8, 0x6c, 0xd5, 0x36, 0x75, 0x1a, 0x63, + 0x18, 0x90, 0x72, 0x64, 0xb2, 0x8a, 0xde, 0x37, 0x72, 0x23, 0x15, 0x2f, 0x0f, 0x11, 0xfa, 0xf0, + 0x24, 0xac, 0x0f, 0xdd, 0xdd, 0x76, 0x80, 0xe9, 0x75, 0x3d, 0x98, 0x86, 0x02, 0xbd, 0xdb, 0x26, + 0x4a, 0x41, 0x32, 0x27, 0x1d, 0xb3, 0x62, 0x28, 0x49, 0x5f, 0x39, 0xfe, 0xbf, 0x02, 0xc8, 0x2f, + 0xbb, 0x66, 0x67, 0x1b, 0x3e, 0x3b, 0x85, 0xbe, 0x36, 0x90, 0xce, 0xec, 0x20, 0xe9, 0x54, 0x06, + 0x48, 0x67, 0x8e, 0x93, 0xce, 0x68, 0x4f, 0x81, 0xb3, 0x60, 0xa6, 0xe9, 0xb4, 0xdb, 0xa8, 0x89, + 0xf9, 0x51, 0x69, 0x91, 0xb8, 0x2a, 0x53, 0xba, 0x90, 0x46, 0x82, 0xcf, 0x21, 0xaf, 0x4e, 0xd7, + 0xaf, 0xa9, 0xd0, 0x87, 0x09, 0xf0, 0xa5, 0x59, 0x90, 0xd3, 0x5a, 0x5b, 0x48, 0x58, 0xe3, 0xce, + 0x70, 0x6b, 0xdc, 0x27, 0x41, 0xc1, 0x33, 0xdd, 0x2d, 0xe4, 0xf9, 0x73, 0x7e, 0xfa, 0x16, 0xc4, + 0xc4, 0x53, 0xb8, 0x98, 0x78, 0x4f, 0x06, 0x39, 0xcc, 0x33, 0x16, 0x6d, 0xe6, 0x86, 0x7e, 0xf0, + 0x13, 0xde, 0xcf, 0xe3, 0x1a, 0xe7, 0x71, 0xab, 0x75, 0xf2, 0x43, 0x2f, 0xd6, 0xf9, 0x7d, 0x58, + 0x93, 0xeb, 0x52, 0x9a, 0x8e, 0x5d, 0xd9, 0x31, 0xb7, 0x10, 0x6b, 0x66, 0x98, 0xe0, 0x7f, 0xd5, + 0x76, 0x9c, 0x07, 0x2d, 0x16, 0x9e, 0x2e, 0x4c, 0xc0, 0x4d, 0xd8, 0xb6, 0x5a, 0x2d, 0x64, 0x33, + 0xcd, 0x66, 0x6f, 0x67, 0x4f, 0x83, 0x1c, 0xa6, 0x01, 0xcb, 0x0f, 0x1e, 0xf8, 0x8b, 0x47, 0xd4, + 0x19, 0xac, 0x56, 0x54, 0x79, 0x8b, 0x19, 0x71, 0xad, 0x53, 0xc6, 0xf5, 0x85, 0x36, 0xae, 0xbf, + 0x72, 0x3d, 0x16, 0xe4, 0x6d, 0xa7, 0x85, 0x06, 0x0e, 0x35, 0x34, 0x97, 0xfa, 0x04, 0x90, 0x47, + 0x2d, 0xdc, 0x2b, 0x28, 0x24, 0xfb, 0xe9, 0x78, 0x5e, 0xea, 0x34, 0x73, 0x32, 0xff, 0x9a, 0x7e, + 0xd4, 0xa6, 0xaf, 0x80, 0xbf, 0x3e, 0x01, 0x8e, 0xd2, 0x3e, 0xa0, 0xbe, 0x7b, 0x01, 0x17, 0x75, + 0x01, 0xc1, 0x77, 0x29, 0x42, 0x10, 0xce, 0xee, 0xee, 0x85, 0xc0, 0x6c, 0xa4, 0x2f, 0xbc, 0x82, + 0x66, 0x47, 0x32, 0x68, 0x29, 0xc3, 0x0e, 0x5a, 0xc2, 0x00, 0xa4, 0xf8, 0x2a, 0x1e, 0x0e, 0x57, + 0x05, 0x92, 0xec, 0x0f, 0x57, 0xfd, 0x06, 0x9b, 0x53, 0x60, 0xc2, 0xdc, 0xf4, 0x90, 0x5b, 0x69, + 0x11, 0x79, 0x9c, 0xd2, 0xfd, 0x57, 0x3c, 0x20, 0x5e, 0x40, 0x9b, 0x8e, 0x8b, 0x35, 0x7d, 0x8a, + 0x0e, 0x88, 0xfe, 0x3b, 0xa7, 0x9f, 0x40, 0xd8, 0x83, 0xba, 0x19, 0x1c, 0xb5, 0xb6, 0x6c, 0xc7, + 0x45, 0x81, 0x63, 0xe3, 0xa9, 0x19, 0x7a, 0xd6, 0xbe, 0x27, 0x59, 0xbd, 0x15, 0x1c, 0xb3, 0x9d, + 0x45, 0xd4, 0x61, 0x7c, 0xa7, 0xa8, 0xce, 0x12, 0x8d, 0xd8, 0xff, 0x61, 0x5f, 0xd7, 0x32, 0xb7, + 0xbf, 0x6b, 0x81, 0x9f, 0x4a, 0x3a, 0x1f, 0xee, 0x01, 0x7e, 0x64, 0x76, 0x99, 0xfa, 0x54, 0x30, + 0xd3, 0x62, 0x6e, 0x4f, 0x4d, 0x2b, 0xd0, 0x9a, 0xc8, 0xff, 0x84, 0xcc, 0xa1, 0xc8, 0xe5, 0x78, + 0x91, 0x5b, 0x06, 0x93, 0xe4, 0x90, 0x0b, 0x96, 0xb9, 0x7c, 0x4f, 0x2c, 0x3f, 0x32, 0x65, 0x0b, + 0x1a, 0xc5, 0xb1, 0x6d, 0xbe, 0xcc, 0x7e, 0xd1, 0x83, 0x9f, 0x93, 0xcd, 0xac, 0xe3, 0x39, 0x34, + 0x06, 0xef, 0xd4, 0x1c, 0x38, 0xba, 0xec, 0x3a, 0xbb, 0x9d, 0x6e, 0xa8, 0x9e, 0x7f, 0xd7, 0x7f, + 0x33, 0xa2, 0x20, 0x8e, 0x45, 0xfd, 0x15, 0xf7, 0x0c, 0x98, 0x76, 0x59, 0x8f, 0x1a, 0x6e, 0x4d, + 0xf0, 0x49, 0xbc, 0x6a, 0x2b, 0x07, 0x51, 0xed, 0x50, 0x41, 0x72, 0x82, 0x82, 0xf4, 0x0a, 0x72, + 0xbe, 0x8f, 0x20, 0xff, 0x6d, 0x36, 0xa1, 0x20, 0xf7, 0xb0, 0x28, 0x42, 0x90, 0xcb, 0xa0, 0xb0, + 0x45, 0x32, 0x32, 0x39, 0x7e, 0x8c, 0x5c, 0xcb, 0x48, 0xe1, 0x3a, 0xfb, 0x35, 0xe4, 0xab, 0xc2, + 0xf1, 0x35, 0x99, 0x50, 0xc5, 0x53, 0x9b, 0xbe, 0x50, 0xbd, 0x3d, 0x07, 0x66, 0x82, 0xda, 0xc9, + 0xb9, 0x91, 0xcc, 0xa0, 0x0e, 0x7f, 0xdf, 0xea, 0x4c, 0xd0, 0x95, 0x2a, 0x5c, 0x57, 0xda, 0xa7, + 0xf3, 0x9b, 0x4e, 0xd0, 0xf9, 0xcd, 0x44, 0x74, 0x7e, 0xf0, 0x67, 0x14, 0xd9, 0x98, 0xcf, 0x62, + 0x1f, 0x40, 0x5a, 0xf7, 0x70, 0xee, 0xd5, 0x24, 0x23, 0x4f, 0x0f, 0x6e, 0x55, 0xfa, 0x42, 0xf3, + 0xfe, 0x2c, 0x38, 0x46, 0x7b, 0xc3, 0x0d, 0xbb, 0x1b, 0xf4, 0x45, 0x8f, 0x14, 0xbd, 0x32, 0x70, + 0x9b, 0xba, 0x81, 0x57, 0x06, 0x79, 0x13, 0x17, 0xc1, 0x63, 0x8f, 0x7c, 0x09, 0x7d, 0x2e, 0x57, + 0x4b, 0xc4, 0x8a, 0x92, 0xdc, 0xa1, 0x2e, 0xc9, 0x42, 0xd3, 0x67, 0xe0, 0xaf, 0x28, 0x60, 0xaa, + 0x8e, 0xbc, 0x55, 0xf3, 0x8a, 0xb3, 0xeb, 0x41, 0x53, 0x76, 0xf9, 0xfb, 0x29, 0xa0, 0xd0, 0x26, + 0xbf, 0xb0, 0x0b, 0xcc, 0xce, 0xf4, 0x5d, 0x3f, 0x26, 0xfb, 0xe4, 0xb4, 0x68, 0x9d, 0xe5, 0x17, + 0xcf, 0xda, 0xc9, 0xec, 0x3e, 0x04, 0xd4, 0x8d, 0x64, 0xe9, 0x34, 0xd1, 0xde, 0x44, 0x54, 0xd5, + 0xe9, 0xc3, 0xf2, 0x5c, 0x05, 0xcc, 0xd6, 0x91, 0x57, 0xe9, 0x2e, 0x99, 0x7b, 0x8e, 0x6b, 0x79, + 0x88, 0xbf, 0x4b, 0x23, 0x1e, 0x9a, 0xd3, 0x00, 0x58, 0xc1, 0x6f, 0x2c, 0x98, 0x3a, 0x97, 0x02, + 0x7f, 0x3b, 0xe9, 0x86, 0xbb, 0x40, 0xc7, 0x48, 0x40, 0x48, 0xb4, 0x87, 0x19, 0x57, 0x7d, 0xfa, + 0x40, 0x7c, 0x3e, 0xcb, 0x80, 0x28, 0xb9, 0xcd, 0x6d, 0x6b, 0x0f, 0xb5, 0x12, 0x02, 0xe1, 0xff, + 0x16, 0x02, 0x11, 0x14, 0x94, 0x78, 0x7b, 0x58, 0xa0, 0x63, 0x14, 0xdb, 0xc3, 0x71, 0x05, 0x8e, + 0xe5, 0x10, 0x2f, 0xee, 0x7a, 0xd8, 0x1a, 0xc3, 0xbd, 0xb2, 0x6c, 0x0d, 0x4d, 0xb8, 0x2c, 0x6f, + 0xc2, 0x0d, 0xd5, 0xb1, 0xd0, 0xba, 0x07, 0xc9, 0x74, 0x2e, 0x8d, 0x8e, 0xa5, 0x6f, 0xd5, 0xe9, + 0x33, 0xfd, 0xdd, 0x0a, 0x38, 0x11, 0x18, 0x3c, 0x75, 0xe4, 0x2d, 0x9a, 0xdd, 0xed, 0x0b, 0x8e, + 0xe9, 0xb6, 0xf8, 0x8b, 0xed, 0x86, 0x3e, 0xc9, 0x02, 0x3f, 0xc7, 0x83, 0x50, 0x15, 0x41, 0xe8, + 0xeb, 0x56, 0xd5, 0x97, 0x96, 0x51, 0x74, 0x32, 0xb1, 0x9e, 0x5f, 0xbf, 0x1b, 0x80, 0xf5, 0x0c, + 0x01, 0xac, 0x7b, 0x86, 0x25, 0x31, 0x7d, 0xe0, 0x7e, 0x8d, 0x8e, 0x08, 0x9c, 0x07, 0xe0, 0x03, + 0xb2, 0x80, 0x45, 0x78, 0x80, 0x29, 0xd1, 0x87, 0x35, 0x86, 0x19, 0x23, 0x06, 0x7a, 0xef, 0xa5, + 0x3b, 0x46, 0x1c, 0xa2, 0x67, 0xde, 0xdb, 0x15, 0x50, 0x24, 0xc7, 0x9b, 0x39, 0xef, 0x48, 0xf8, + 0xa0, 0x2c, 0x3a, 0xfb, 0x3c, 0x31, 0x27, 0x92, 0x7a, 0x62, 0xc2, 0xb7, 0x25, 0xf5, 0xb7, 0xec, + 0xa5, 0x76, 0x24, 0x88, 0x25, 0x72, 0xa7, 0x1c, 0x40, 0x41, 0xfa, 0xa0, 0xfd, 0x67, 0x05, 0x00, + 0xac, 0xd0, 0xcc, 0xc5, 0xef, 0x99, 0xb2, 0x70, 0xdd, 0xc6, 0xfb, 0xa0, 0x62, 0xa0, 0x4e, 0xf4, + 0x00, 0x45, 0x4b, 0x0c, 0x9d, 0x07, 0x5f, 0x9f, 0xd4, 0x77, 0x29, 0xa4, 0x6a, 0x24, 0xb0, 0x24, + 0xf2, 0x66, 0x8a, 0xac, 0x3b, 0x7d, 0x40, 0x7e, 0x2f, 0x0b, 0xf2, 0x86, 0x53, 0x47, 0xde, 0xc1, + 0x4d, 0x81, 0xc4, 0xc7, 0x51, 0x49, 0xbd, 0xa3, 0x38, 0x8e, 0xda, 0xaf, 0xa0, 0xf4, 0x59, 0xf7, + 0xae, 0x2c, 0x98, 0x31, 0x9c, 0x72, 0xb0, 0x58, 0x25, 0xef, 0x0b, 0x26, 0x7f, 0x6f, 0x55, 0xd0, + 0xc0, 0xb0, 0x9a, 0x03, 0xdd, 0x5b, 0x35, 0xb8, 0xbc, 0xf4, 0xf9, 0x76, 0x27, 0x38, 0xba, 0x61, + 0xb7, 0x1c, 0x1d, 0xb5, 0x1c, 0xb6, 0x24, 0xab, 0xaa, 0x20, 0xb7, 0x6b, 0xb7, 0x1c, 0x42, 0x72, + 0x5e, 0x27, 0xcf, 0x38, 0xcd, 0x45, 0x2d, 0x87, 0xed, 0xd7, 0x91, 0x67, 0xf8, 0x35, 0x05, 0xe4, + 0xf0, 0xbf, 0xf2, 0xac, 0x7e, 0xbb, 0x92, 0xf0, 0x80, 0x2d, 0x2e, 0x7e, 0x24, 0x96, 0xd0, 0xbd, + 0xdc, 0x22, 0x35, 0xf5, 0x10, 0xbb, 0x21, 0xaa, 0x3e, 0x8e, 0x15, 0xe1, 0xe2, 0xb4, 0x7a, 0x0a, + 0x4c, 0x5c, 0x68, 0x3b, 0xcd, 0x8b, 0xe1, 0x39, 0x50, 0xf6, 0xaa, 0xde, 0x02, 0xf2, 0xae, 0x69, + 0x6f, 0x21, 0xb6, 0xf8, 0x7d, 0xbc, 0xa7, 0x2f, 0x24, 0x3b, 0xd1, 0x3a, 0xcd, 0x02, 0xdf, 0x96, + 0xe4, 0x68, 0x6f, 0x9f, 0xc6, 0x27, 0x93, 0x87, 0xc5, 0x21, 0x4e, 0x61, 0x14, 0xc1, 0x4c, 0xb9, + 0x44, 0x6f, 0x88, 0x5b, 0xab, 0x9d, 0xd3, 0x8a, 0x0a, 0x81, 0x19, 0xf3, 0x24, 0x45, 0x98, 0x71, + 0xf1, 0xff, 0x6e, 0x61, 0xee, 0xd3, 0xf8, 0xc3, 0x80, 0xf9, 0xe3, 0x59, 0x30, 0xbb, 0x6a, 0x75, + 0xbd, 0x28, 0x6f, 0xda, 0x98, 0xe8, 0x46, 0x2f, 0x4c, 0x6a, 0x2a, 0x0b, 0xf5, 0x48, 0x87, 0x35, + 0x4a, 0x64, 0x0e, 0xc7, 0x55, 0x31, 0x1e, 0xb7, 0x6f, 0x42, 0x01, 0xbd, 0xd5, 0x49, 0x9a, 0x93, + 0x89, 0x0d, 0xa5, 0xb0, 0x92, 0xf1, 0x1b, 0x4a, 0x91, 0x75, 0xa7, 0xcf, 0xdf, 0xaf, 0x65, 0xc1, + 0x31, 0x5c, 0x7d, 0xdc, 0xb2, 0x54, 0x34, 0x9b, 0x07, 0x2e, 0x4b, 0x25, 0x5e, 0x19, 0xdf, 0x47, + 0xcb, 0x28, 0x56, 0xc6, 0x07, 0x15, 0x3a, 0x66, 0x36, 0x47, 0x2c, 0xc3, 0x0e, 0x62, 0x73, 0xcc, + 0x32, 0xec, 0xf0, 0x6c, 0x8e, 0x5f, 0x8a, 0x1d, 0x92, 0xcd, 0x87, 0xb6, 0xc0, 0xfa, 0x3a, 0x25, + 0x60, 0x73, 0xe4, 0xda, 0x46, 0x0c, 0x9b, 0x13, 0x9f, 0x6e, 0x83, 0xef, 0x18, 0x92, 0xf1, 0x23, + 0x5e, 0xdf, 0x18, 0x06, 0xa6, 0x43, 0x5c, 0xe3, 0x78, 0x99, 0x02, 0xe6, 0x18, 0x15, 0xfd, 0xa7, + 0xcc, 0x31, 0x18, 0x25, 0x9e, 0x32, 0x27, 0xf6, 0xb1, 0x17, 0x29, 0x1b, 0xbf, 0x8f, 0x7d, 0x6c, + 0xfd, 0xe9, 0x83, 0xf3, 0xf5, 0x1c, 0x38, 0x89, 0x49, 0x58, 0x73, 0x5a, 0xd6, 0xe6, 0x15, 0x4a, + 0xc5, 0x39, 0xb3, 0xbd, 0x8b, 0xba, 0xf0, 0xbd, 0x59, 0x59, 0x94, 0xfe, 0x0f, 0x00, 0x9c, 0x0e, + 0x72, 0x69, 0x80, 0x20, 0x06, 0xd4, 0xdd, 0x51, 0x8d, 0xdd, 0x5f, 0x53, 0x10, 0xb4, 0xb7, 0xe6, + 0x17, 0xa2, 0x73, 0xe5, 0x61, 0xab, 0x70, 0x2a, 0xf8, 0xd2, 0xeb, 0xf0, 0x91, 0xd9, 0xef, 0xf0, + 0x71, 0x33, 0x50, 0xcc, 0x56, 0x2b, 0x80, 0xaa, 0x77, 0x33, 0x9b, 0xd4, 0xa9, 0xe3, 0x2c, 0x38, + 0x67, 0x17, 0x85, 0x47, 0x5f, 0x22, 0x72, 0x76, 0x91, 0xa7, 0xce, 0x83, 0x02, 0xbd, 0xe1, 0x2a, + 0x58, 0xd1, 0xef, 0x9f, 0x99, 0xe5, 0x12, 0x4d, 0xbb, 0x9a, 0x28, 0x86, 0x77, 0x26, 0xe2, 0x4c, + 0xbf, 0x7e, 0x3a, 0xb4, 0x93, 0x75, 0x41, 0xc0, 0x9e, 0x36, 0x74, 0xc9, 0xe3, 0xd9, 0x0d, 0x2b, + 0x75, 0x3a, 0xed, 0x2b, 0x06, 0x0b, 0x46, 0x90, 0x68, 0x37, 0x8c, 0x8b, 0x69, 0x90, 0xed, 0x8d, + 0x69, 0x90, 0x7c, 0x37, 0x4c, 0xa0, 0x63, 0x14, 0xbb, 0x61, 0x71, 0x05, 0x8e, 0x61, 0x3d, 0x32, + 0x4f, 0xad, 0x66, 0x16, 0x7b, 0xf1, 0x8d, 0xd9, 0xbe, 0xee, 0x54, 0x40, 0x74, 0xa7, 0xea, 0x17, + 0x96, 0x31, 0x36, 0xe6, 0xac, 0xfa, 0x04, 0x50, 0xd8, 0x74, 0xdc, 0x1d, 0xd3, 0xdf, 0xb8, 0xef, + 0xf5, 0xde, 0x66, 0xf1, 0x0e, 0x97, 0x48, 0x1e, 0x9d, 0xe5, 0xc5, 0xf3, 0x91, 0x67, 0x59, 0x1d, + 0x16, 0x4d, 0x0c, 0x3f, 0xaa, 0x37, 0x82, 0x59, 0x16, 0x54, 0xac, 0x8a, 0xba, 0x1e, 0x6a, 0xb1, + 0xd3, 0xdd, 0x62, 0xa2, 0x7a, 0x16, 0xcc, 0xb0, 0x84, 0x25, 0xab, 0x8d, 0xba, 0xec, 0x4a, 0x47, + 0x21, 0x4d, 0x3d, 0x09, 0x0a, 0x56, 0xf7, 0xe9, 0x5d, 0xc7, 0x26, 0x3e, 0xb9, 0x93, 0x3a, 0x7b, + 0x23, 0x6e, 0x3b, 0x34, 0x5f, 0x60, 0xac, 0x52, 0x27, 0xfa, 0xde, 0x64, 0xf8, 0x99, 0x61, 0x26, + 0x0e, 0x89, 0xe3, 0x4c, 0x62, 0x14, 0x76, 0x9b, 0x4d, 0x84, 0x5a, 0xec, 0xb4, 0x81, 0xff, 0x9a, + 0x30, 0x02, 0x65, 0xe2, 0x69, 0xc6, 0x21, 0x85, 0xa0, 0xfc, 0xc0, 0x09, 0x50, 0xa0, 0x61, 0xd9, + 0xe1, 0x4b, 0xe6, 0xfa, 0x0a, 0xe3, 0x9c, 0x28, 0x8c, 0x1b, 0x60, 0xc6, 0x76, 0x70, 0x75, 0xeb, + 0xa6, 0x6b, 0xee, 0x74, 0xe3, 0x56, 0x11, 0x69, 0xb9, 0xc1, 0x90, 0x51, 0xe5, 0x7e, 0x5b, 0x39, + 0xa2, 0x0b, 0xc5, 0xa8, 0xff, 0x27, 0x38, 0x7a, 0x81, 0x9d, 0xb0, 0xed, 0xb2, 0x92, 0xb3, 0xd1, + 0x3e, 0x77, 0x3d, 0x25, 0x2f, 0x88, 0x7f, 0xae, 0x1c, 0xd1, 0x7b, 0x0b, 0x53, 0x7f, 0x02, 0xcc, + 0xe1, 0xd7, 0x96, 0x73, 0xc9, 0x27, 0x5c, 0x89, 0x36, 0x34, 0x7a, 0x8a, 0x5f, 0x13, 0x7e, 0x5c, + 0x39, 0xa2, 0xf7, 0x14, 0xa5, 0xd6, 0x00, 0xd8, 0xf6, 0x76, 0xda, 0xac, 0xe0, 0x5c, 0xb4, 0x48, + 0xf6, 0x14, 0xbc, 0x12, 0xfc, 0xb4, 0x72, 0x44, 0xe7, 0x8a, 0x50, 0x57, 0xc1, 0x94, 0x77, 0xd9, + 0x63, 0xe5, 0xe5, 0xa3, 0x37, 0xb7, 0x7b, 0xca, 0x33, 0xfc, 0x7f, 0x56, 0x8e, 0xe8, 0x61, 0x01, + 0x6a, 0x05, 0x4c, 0x76, 0x2e, 0xb0, 0xc2, 0x0a, 0x7d, 0xae, 0xa2, 0xee, 0x5f, 0xd8, 0xfa, 0x85, + 0xa0, 0xac, 0xe0, 0x77, 0x4c, 0x58, 0xb3, 0xbb, 0xc7, 0xca, 0x9a, 0x90, 0x26, 0xac, 0xec, 0xff, + 0x83, 0x09, 0x0b, 0x0a, 0x50, 0x2b, 0x60, 0xaa, 0x6b, 0x9b, 0x9d, 0xee, 0xb6, 0xe3, 0x75, 0x4f, + 0x4d, 0xf6, 0xf8, 0x45, 0x46, 0x97, 0x56, 0x67, 0xff, 0xe8, 0xe1, 0xdf, 0xea, 0x13, 0xc0, 0x89, + 0x5d, 0x72, 0xbd, 0x9d, 0x76, 0xd9, 0xea, 0x7a, 0x96, 0xbd, 0xe5, 0xc7, 0x46, 0xa4, 0xbd, 0x49, + 0xff, 0x8f, 0xea, 0x3c, 0x3b, 0xa5, 0x00, 0x88, 0x6e, 0xc2, 0xde, 0xcd, 0x38, 0x5a, 0x2d, 0x77, + 0x38, 0xe1, 0xa9, 0x20, 0x87, 0x3f, 0x11, 0xcf, 0xc2, 0xb9, 0xfe, 0x0b, 0x7d, 0xbd, 0xb2, 0x43, + 0x14, 0x18, 0xff, 0x84, 0xc7, 0x46, 0xdb, 0x59, 0x77, 0x9d, 0x2d, 0x17, 0x75, 0xbb, 0xcc, 0xe1, + 0x90, 0x4b, 0xc1, 0x0a, 0x6e, 0x75, 0xd7, 0xac, 0x2d, 0x6a, 0x3d, 0x31, 0x77, 0x6c, 0x3e, 0x89, + 0xce, 0x36, 0xab, 0xe8, 0x12, 0xb9, 0x32, 0xed, 0xd4, 0x51, 0x7f, 0xb6, 0xe9, 0xa7, 0xc0, 0x9b, + 0xc0, 0x0c, 0xaf, 0x64, 0xf4, 0x6e, 0x17, 0x2b, 0xb4, 0xbd, 0xd8, 0x1b, 0xbc, 0x11, 0xcc, 0x89, + 0x32, 0xcd, 0x0d, 0x31, 0x8a, 0xdf, 0x15, 0xc2, 0x1b, 0xc0, 0xd1, 0x1e, 0xc5, 0xf2, 0xcf, 0xec, + 0x67, 0xc2, 0x33, 0xfb, 0x67, 0x00, 0x08, 0xa5, 0xb8, 0x6f, 0x31, 0xd7, 0x83, 0xa9, 0x40, 0x2e, + 0xfb, 0x66, 0xf8, 0x4a, 0x06, 0x4c, 0xfa, 0xc2, 0xd6, 0x2f, 0x03, 0x1e, 0x5f, 0x6c, 0x6e, 0x03, + 0x81, 0x4d, 0xb3, 0x85, 0x34, 0x3c, 0x8e, 0x84, 0x6e, 0xbc, 0x86, 0xe5, 0xb5, 0xfd, 0xe3, 0x28, + 0xbd, 0xc9, 0xea, 0x3a, 0x00, 0x16, 0xc1, 0xc8, 0x08, 0xcf, 0xa7, 0x3c, 0x2e, 0x81, 0x3e, 0x50, + 0x79, 0xe0, 0xca, 0x38, 0xfb, 0x48, 0x76, 0x78, 0x64, 0x0a, 0xe4, 0xeb, 0xeb, 0xa5, 0xb2, 0x56, + 0x3c, 0xa2, 0xce, 0x01, 0xa0, 0x3d, 0x73, 0x5d, 0xd3, 0x2b, 0x5a, 0xb5, 0xac, 0x15, 0x33, 0xf0, + 0xe5, 0x59, 0x30, 0x15, 0x28, 0x41, 0xdf, 0x46, 0x6a, 0x4c, 0xb4, 0x06, 0x5e, 0x9f, 0xb1, 0x5f, + 0xa9, 0x78, 0x21, 0x7b, 0x0a, 0xb8, 0x7a, 0xb7, 0x8b, 0x96, 0x2c, 0xb7, 0xeb, 0xe9, 0xce, 0xa5, + 0x25, 0xc7, 0x0d, 0xa2, 0x81, 0xfa, 0xd7, 0x44, 0x47, 0x7c, 0xc6, 0x16, 0x45, 0x0b, 0x91, 0x23, + 0x0c, 0xc8, 0x65, 0x2b, 0xc3, 0x61, 0x02, 0x2e, 0xd7, 0xa3, 0xf7, 0x32, 0x77, 0x91, 0xee, 0x5c, + 0xea, 0x96, 0xec, 0x56, 0xd9, 0x69, 0xef, 0xee, 0xd8, 0x5d, 0x66, 0x13, 0x44, 0x7d, 0xc6, 0xdc, + 0x21, 0x97, 0xe3, 0xcc, 0x01, 0x50, 0xae, 0xad, 0xae, 0x6a, 0x65, 0xa3, 0x52, 0xab, 0x16, 0x8f, + 0x60, 0x6e, 0x19, 0xa5, 0x85, 0x55, 0xcc, 0x9d, 0x9f, 0x04, 0x93, 0xbe, 0x4e, 0xef, 0xbb, 0x13, + 0xbb, 0x04, 0x26, 0x7d, 0x2d, 0x67, 0x23, 0xc2, 0xa3, 0x7a, 0x8f, 0xa2, 0xed, 0x98, 0xae, 0x47, + 0xfc, 0xa7, 0xfd, 0x42, 0x16, 0xcc, 0x2e, 0xd2, 0x83, 0xdf, 0xce, 0x3e, 0x96, 0x51, 0xa0, 0x82, + 0xb9, 0xd2, 0xea, 0x6a, 0xa3, 0xa6, 0x37, 0xaa, 0x35, 0x63, 0xa5, 0x52, 0x5d, 0xa6, 0x23, 0x64, + 0x65, 0xb9, 0x5a, 0xd3, 0x35, 0x3a, 0x40, 0xd6, 0x8b, 0x19, 0x7a, 0x39, 0xd3, 0xc2, 0x24, 0x28, + 0x74, 0x08, 0x77, 0xe1, 0x17, 0x95, 0x84, 0x27, 0x4d, 0x03, 0x9c, 0x22, 0xae, 0x8f, 0x11, 0x7c, + 0xd0, 0xb3, 0x7d, 0xce, 0x69, 0x9d, 0x05, 0x33, 0xd4, 0x96, 0xeb, 0x92, 0xe5, 0x7b, 0x76, 0x03, + 0xa3, 0x90, 0x06, 0x3f, 0x94, 0x4d, 0x70, 0xfc, 0xb4, 0x2f, 0x45, 0xc9, 0x8c, 0x8b, 0xbf, 0x1a, + 0xe6, 0x32, 0x26, 0x15, 0xcc, 0x55, 0xaa, 0x86, 0xa6, 0x57, 0x4b, 0xab, 0x2c, 0x8b, 0xa2, 0x9e, + 0x02, 0xc7, 0xab, 0x35, 0x16, 0xff, 0xaa, 0x4e, 0xae, 0x7d, 0x5d, 0x5b, 0xaf, 0xe9, 0x46, 0x31, + 0xaf, 0x9e, 0x04, 0x2a, 0x7d, 0x16, 0x6e, 0x4d, 0x2e, 0xa8, 0x8f, 0x06, 0x37, 0xac, 0x56, 0xd6, + 0x2a, 0x46, 0xa3, 0xb6, 0xd4, 0xd0, 0x6b, 0xe7, 0xeb, 0x18, 0x41, 0x5d, 0x5b, 0x2d, 0x61, 0x41, + 0xe2, 0x2e, 0x69, 0x9a, 0x50, 0xaf, 0x02, 0x47, 0xc9, 0x05, 0x6c, 0xe4, 0xe6, 0x65, 0x5a, 0xdf, + 0xa4, 0x7a, 0x1d, 0x38, 0x55, 0xa9, 0xd6, 0x37, 0x96, 0x96, 0x2a, 0xe5, 0x8a, 0x56, 0x35, 0x1a, + 0xeb, 0x9a, 0xbe, 0x56, 0xa9, 0xd7, 0xf1, 0xbf, 0xc5, 0x29, 0xf8, 0x01, 0x05, 0x14, 0x68, 0x9f, + 0x09, 0xdf, 0xa3, 0x80, 0xd9, 0x73, 0x66, 0xdb, 0xc2, 0x03, 0x05, 0xb9, 0x1b, 0x0b, 0x5e, 0x2f, + 0xb8, 0xa6, 0x7b, 0xe4, 0x0e, 0x2d, 0xe6, 0x9a, 0x4e, 0x5e, 0xe0, 0xcf, 0xf1, 0xa2, 0x61, 0x88, + 0xa2, 0xf1, 0xb4, 0x18, 0x20, 0x68, 0x8d, 0xf3, 0x42, 0x6d, 0x11, 0x93, 0x9b, 0x57, 0x07, 0x38, + 0x9f, 0x17, 0x70, 0x2e, 0x1f, 0xac, 0xf8, 0x64, 0xe0, 0xff, 0xfa, 0xa8, 0xc0, 0x2f, 0x82, 0x99, + 0x8d, 0x6a, 0x69, 0xc3, 0x58, 0xa9, 0xe9, 0x95, 0x1f, 0x27, 0x51, 0x74, 0x67, 0xc1, 0xd4, 0x52, + 0x4d, 0x5f, 0xa8, 0x2c, 0x2e, 0x6a, 0xd5, 0x62, 0x5e, 0xbd, 0x1a, 0x5c, 0x55, 0xd7, 0xf4, 0x73, + 0x95, 0xb2, 0xd6, 0xd8, 0xa8, 0x96, 0xce, 0x95, 0x2a, 0xab, 0xa4, 0x8f, 0x28, 0xc4, 0xdc, 0xeb, + 0x35, 0x01, 0x7f, 0x3a, 0x07, 0x00, 0x6d, 0x3a, 0xb6, 0xa4, 0xf9, 0xdb, 0x9f, 0xfe, 0x3a, 0xe9, + 0xa4, 0x21, 0x2c, 0x26, 0x42, 0x7f, 0x2b, 0x60, 0xd2, 0x65, 0x1f, 0xd8, 0xf2, 0xc9, 0xa0, 0x72, + 0xe8, 0xa3, 0x5f, 0x9a, 0x1e, 0xfc, 0x0e, 0xdf, 0x9b, 0x64, 0x8e, 0x10, 0x49, 0x58, 0x32, 0x24, + 0x97, 0x46, 0x03, 0x24, 0x7c, 0x41, 0x06, 0xcc, 0x89, 0x0d, 0xc3, 0x8d, 0x20, 0xc6, 0x94, 0x5c, + 0x23, 0xc4, 0x9f, 0x39, 0x23, 0xeb, 0xec, 0x1d, 0x6c, 0x38, 0x05, 0xbe, 0x66, 0xd2, 0xd3, 0x98, + 0xbe, 0xc5, 0x52, 0xcc, 0x60, 0xe2, 0xb1, 0xd1, 0x41, 0xaf, 0xfe, 0x35, 0x2e, 0x7b, 0x45, 0x05, + 0xbe, 0x2b, 0x07, 0x66, 0x85, 0xeb, 0xa5, 0xe0, 0xb7, 0x33, 0x32, 0x57, 0xc6, 0x70, 0x17, 0x57, + 0x65, 0x0e, 0x7a, 0x71, 0xd5, 0xd9, 0x9f, 0xcd, 0x80, 0x09, 0x96, 0x48, 0x18, 0x5c, 0xab, 0x62, + 0x5b, 0xe0, 0x28, 0x98, 0x5e, 0xd6, 0x8c, 0x46, 0xdd, 0x28, 0xe9, 0x86, 0xb6, 0x58, 0xcc, 0xa8, + 0x27, 0xc0, 0xb1, 0x75, 0x4d, 0xaf, 0xd7, 0x30, 0x3f, 0xd7, 0xf5, 0x1a, 0xe9, 0x08, 0x29, 0x9b, + 0x31, 0x0c, 0xab, 0xda, 0xe2, 0xb2, 0xd6, 0x58, 0x28, 0xd5, 0xb5, 0xa2, 0x82, 0xff, 0xad, 0xd6, + 0x0c, 0xad, 0xde, 0x58, 0xac, 0x94, 0xf4, 0x07, 0x8a, 0x39, 0xfc, 0x6f, 0xdd, 0xd0, 0x4b, 0x86, + 0xb6, 0x5c, 0x29, 0x93, 0x0b, 0x93, 0xb1, 0x06, 0xe4, 0xf1, 0x60, 0xaa, 0xad, 0xad, 0x1b, 0x0f, + 0x14, 0x0b, 0xc9, 0xbd, 0xfa, 0x7a, 0x1b, 0x37, 0x66, 0xaf, 0xbe, 0xb8, 0xea, 0xc7, 0x70, 0xb3, + 0x96, 0x02, 0x8a, 0x94, 0x02, 0xed, 0x72, 0x07, 0xb9, 0x16, 0xb2, 0x9b, 0x08, 0x5e, 0x94, 0x89, + 0xb8, 0xb7, 0x2f, 0x7e, 0x15, 0x19, 0x23, 0x38, 0xcb, 0x93, 0xbe, 0xf4, 0x18, 0xed, 0xb9, 0x7d, + 0x46, 0xfb, 0x27, 0x93, 0xba, 0xf5, 0xf5, 0x92, 0x3b, 0x12, 0xc8, 0x3e, 0x96, 0xc4, 0xad, 0x6f, + 0x00, 0x05, 0x63, 0x09, 0xa4, 0x19, 0x31, 0xa6, 0x17, 0x15, 0xf8, 0xd6, 0x29, 0x50, 0xa4, 0x84, + 0x72, 0xbe, 0x52, 0xbf, 0xc2, 0xee, 0xf8, 0x6a, 0x24, 0x08, 0xfd, 0xe4, 0x1f, 0xcd, 0xcd, 0x8a, + 0x47, 0x73, 0x85, 0xa5, 0x37, 0xa5, 0x77, 0x7f, 0x3b, 0xa9, 0xfa, 0x71, 0x8e, 0x51, 0xd1, 0xd1, + 0xf6, 0xd2, 0x53, 0xbf, 0xd8, 0xea, 0xc7, 0x73, 0x0f, 0x0d, 0xbb, 0x69, 0x4a, 0x93, 0x45, 0x26, + 0xfe, 0xba, 0xad, 0xa4, 0x5e, 0xb2, 0x82, 0x63, 0x5a, 0xcc, 0x1d, 0x54, 0xe9, 0x79, 0xc9, 0x0e, + 0xa2, 0x20, 0x7d, 0x14, 0x7e, 0x90, 0x05, 0xb9, 0xba, 0xe3, 0x7a, 0xa3, 0xc2, 0x20, 0xe9, 0xce, + 0x1e, 0xc7, 0x81, 0x7a, 0xf4, 0xcc, 0x29, 0xbd, 0x9d, 0xbd, 0xf8, 0xfa, 0xc7, 0x10, 0x3d, 0xeb, + 0x28, 0x98, 0xa3, 0x94, 0x04, 0xa1, 0xe0, 0xbf, 0x9f, 0xa5, 0xfd, 0xd5, 0xfd, 0xb2, 0x88, 0x9c, + 0x05, 0x33, 0xdc, 0xce, 0x5a, 0x70, 0x2d, 0x29, 0x9f, 0x06, 0x7f, 0x93, 0xc7, 0x65, 0x51, 0xc4, + 0xa5, 0xdf, 0xbc, 0x31, 0x88, 0xa6, 0x3e, 0xaa, 0x9e, 0x29, 0x49, 0x20, 0xae, 0x98, 0xca, 0xd3, + 0x47, 0xe4, 0x39, 0x0a, 0x28, 0x30, 0xcf, 0xa6, 0x91, 0x22, 0x90, 0x54, 0x33, 0x02, 0x26, 0xc8, + 0x79, 0x40, 0x29, 0xa3, 0xd6, 0x8c, 0xf8, 0xfa, 0xd3, 0xc7, 0xe1, 0x87, 0xcc, 0x65, 0xaf, 0xb4, + 0x67, 0x5a, 0x6d, 0xf3, 0x42, 0x3b, 0x41, 0x00, 0xcc, 0x0f, 0x25, 0x3c, 0xa4, 0x14, 0x34, 0x55, + 0xa8, 0x2f, 0x82, 0xe3, 0x4f, 0x04, 0x53, 0x6e, 0xb0, 0xb0, 0xe6, 0x9f, 0xe1, 0xee, 0x71, 0x97, + 0x64, 0xdf, 0xf5, 0x30, 0x67, 0xa2, 0x13, 0x49, 0x52, 0xf4, 0x8c, 0xe5, 0x04, 0xc5, 0x74, 0xa9, + 0xd5, 0x5a, 0x42, 0xa6, 0xb7, 0xeb, 0xa2, 0x56, 0xa2, 0x21, 0x42, 0x64, 0xd1, 0x14, 0xcf, 0x09, + 0x21, 0x6c, 0xd5, 0xaa, 0x88, 0xce, 0x93, 0x06, 0xf4, 0x06, 0x3e, 0x2d, 0x23, 0xe9, 0x92, 0xde, + 0x12, 0x40, 0x52, 0x13, 0x20, 0x79, 0xea, 0x70, 0x44, 0xa4, 0x0f, 0xc8, 0xaf, 0x2a, 0x60, 0x8e, + 0xda, 0x09, 0xa3, 0xc6, 0xe4, 0x0f, 0x13, 0x7a, 0x42, 0x70, 0x97, 0x6d, 0xf0, 0xe4, 0x8c, 0x04, + 0x96, 0x24, 0x7e, 0x13, 0x72, 0x74, 0xa4, 0x8f, 0xcc, 0x67, 0x0a, 0x00, 0x70, 0xde, 0x6d, 0x1f, + 0x2a, 0x84, 0x21, 0xa4, 0xe0, 0xdb, 0xd8, 0xfc, 0xa3, 0x2e, 0xc4, 0x26, 0xe5, 0x3c, 0xd7, 0x82, + 0x6d, 0x15, 0x31, 0x51, 0x6a, 0x54, 0xf9, 0xab, 0x84, 0x36, 0x2f, 0xf3, 0x2d, 0x1b, 0x38, 0xb8, + 0x0f, 0xd9, 0xcb, 0x7d, 0x38, 0x81, 0xf1, 0x3b, 0x88, 0x94, 0x64, 0xa8, 0xad, 0x0e, 0x31, 0x97, + 0x3c, 0x05, 0x8e, 0xeb, 0x5a, 0x69, 0xb1, 0x56, 0x5d, 0x7d, 0x80, 0xbf, 0x95, 0xa1, 0xa8, 0xf0, + 0x93, 0x93, 0x54, 0x60, 0x7b, 0x6d, 0xc2, 0x3e, 0x50, 0xe4, 0x55, 0xdc, 0x6c, 0x85, 0x9b, 0xce, + 0x0f, 0xee, 0xd5, 0x24, 0x8a, 0x3d, 0x4c, 0x14, 0xde, 0x34, 0xc5, 0xa9, 0xd1, 0xf3, 0x15, 0x50, + 0x0c, 0x2f, 0xf1, 0x65, 0x57, 0xec, 0xd4, 0x44, 0xe7, 0xb7, 0x0e, 0xdd, 0x45, 0x09, 0x9d, 0xdf, + 0xfc, 0x04, 0xf5, 0x26, 0x30, 0xd7, 0xdc, 0x46, 0xcd, 0x8b, 0x15, 0xdb, 0xdf, 0x1d, 0xa6, 0x5b, + 0x89, 0x3d, 0xa9, 0x22, 0x30, 0xf7, 0x8b, 0xc0, 0x88, 0x93, 0x68, 0x61, 0x90, 0xe6, 0x89, 0x8a, + 0xc0, 0xe5, 0x4f, 0x03, 0x5c, 0xaa, 0x02, 0x2e, 0x77, 0x0d, 0x55, 0x6a, 0x32, 0x58, 0xaa, 0x43, + 0xc0, 0x02, 0xc1, 0xc9, 0xda, 0xba, 0x51, 0xa9, 0x55, 0x1b, 0x1b, 0x75, 0x6d, 0xb1, 0xb1, 0xe0, + 0x83, 0x53, 0x2f, 0x2a, 0xf0, 0x1b, 0x59, 0x30, 0x41, 0xc9, 0xea, 0xf6, 0x5c, 0xba, 0x1b, 0xef, + 0xf5, 0x07, 0xdf, 0x2a, 0x7d, 0x86, 0x3f, 0x60, 0x04, 0xab, 0x27, 0xa2, 0x9f, 0x7a, 0x0a, 0x98, + 0xa0, 0x20, 0xfb, 0x4e, 0x23, 0xa7, 0x23, 0x7a, 0x29, 0x56, 0x8c, 0xee, 0x67, 0x97, 0x3c, 0xcf, + 0x3f, 0x80, 0x8c, 0xf4, 0x47, 0x96, 0x37, 0x28, 0xd4, 0x0c, 0x3e, 0x6f, 0x79, 0xdb, 0xc4, 0x29, + 0x10, 0x3e, 0x43, 0x66, 0x89, 0xf2, 0x56, 0x90, 0xdf, 0xc3, 0xb9, 0x07, 0x38, 0x58, 0xd2, 0x4c, + 0xf0, 0x4f, 0xa4, 0x23, 0x5f, 0x09, 0xf2, 0x19, 0xd0, 0x14, 0xbd, 0xe1, 0x39, 0xa8, 0x27, 0x54, + 0xa1, 0x70, 0xa8, 0x49, 0xb9, 0x59, 0x49, 0x1c, 0x33, 0x4d, 0x8a, 0xa4, 0xb1, 0xcc, 0xe4, 0x27, + 0x56, 0xac, 0xae, 0xe7, 0xb8, 0x57, 0xe0, 0xeb, 0x33, 0x60, 0xe2, 0x1c, 0x72, 0xbb, 0x96, 0x63, + 0xef, 0xdb, 0xd5, 0x3e, 0x03, 0xa6, 0x3b, 0x2e, 0xda, 0xb3, 0x9c, 0xdd, 0x6e, 0xb8, 0x82, 0xc2, + 0x27, 0x61, 0x96, 0x98, 0xbb, 0xde, 0xb6, 0xe3, 0x86, 0x81, 0x0d, 0xfc, 0x77, 0xf5, 0x34, 0x00, + 0xf4, 0xb9, 0x6a, 0xee, 0x20, 0xb6, 0x57, 0xcf, 0xa5, 0xa8, 0x2a, 0xc8, 0x79, 0xd6, 0x0e, 0x62, + 0x71, 0x09, 0xc9, 0x33, 0x96, 0x12, 0x12, 0x45, 0x8c, 0x45, 0x6b, 0x53, 0x74, 0xff, 0x15, 0xfe, + 0x96, 0x02, 0xa6, 0x97, 0x91, 0xc7, 0x48, 0xed, 0xf2, 0xe1, 0x81, 0x62, 0x62, 0x77, 0xe3, 0x71, + 0xb0, 0x6d, 0x76, 0xfd, 0xdf, 0x82, 0x65, 0x52, 0x31, 0x31, 0x8c, 0x91, 0xa8, 0x70, 0x61, 0x50, + 0xe1, 0xbb, 0xb2, 0xb2, 0x07, 0x52, 0x19, 0x33, 0xe7, 0x39, 0x02, 0x23, 0x3b, 0x81, 0xc9, 0x3d, + 0x96, 0x63, 0x5f, 0xcc, 0x5a, 0xbe, 0x24, 0x56, 0x8c, 0x1e, 0xe4, 0x96, 0x3c, 0xca, 0x3a, 0x98, + 0x92, 0xf4, 0xc5, 0xeb, 0xbb, 0x0a, 0x98, 0xae, 0x6f, 0x3b, 0x97, 0x18, 0x01, 0xfc, 0x85, 0xbf, + 0x71, 0x50, 0x5d, 0x07, 0xa6, 0xf6, 0x7a, 0x60, 0x0a, 0x13, 0xa2, 0xef, 0xa5, 0x85, 0x0f, 0x29, + 0x49, 0x61, 0xe2, 0x88, 0x1b, 0xf9, 0xad, 0xb1, 0xea, 0x93, 0xc0, 0x04, 0xa3, 0x9a, 0x2d, 0x74, + 0xc4, 0x03, 0xec, 0x67, 0xe6, 0x1b, 0x98, 0x13, 0x1b, 0x98, 0x0c, 0xf9, 0xe8, 0xc6, 0x8d, 0x21, + 0x32, 0x7c, 0x96, 0x04, 0x32, 0xf0, 0x81, 0x2f, 0x8f, 0x00, 0x78, 0xf8, 0xbd, 0x8c, 0xec, 0x72, + 0x60, 0xc0, 0x81, 0x80, 0x82, 0x03, 0x45, 0xda, 0x1f, 0x58, 0x5c, 0xfa, 0xfc, 0x7c, 0x79, 0x0e, + 0xcc, 0x2c, 0x5a, 0x9b, 0x9b, 0x41, 0xaf, 0xf7, 0xa2, 0x8c, 0x1c, 0x4b, 0xa3, 0xb7, 0x92, 0xb1, + 0x75, 0xb9, 0xeb, 0xba, 0xc8, 0xf6, 0x1b, 0xc5, 0xd4, 0xa9, 0x27, 0x55, 0xbd, 0x19, 0x1c, 0xf5, + 0x3b, 0x7a, 0x3f, 0x23, 0x15, 0xcb, 0xde, 0x64, 0xf8, 0x1d, 0xe9, 0xbd, 0x24, 0x9f, 0xa3, 0x7c, + 0x93, 0x22, 0x14, 0xf0, 0x6e, 0x30, 0xbb, 0x4d, 0x73, 0x93, 0x09, 0xb7, 0xdf, 0x59, 0x9e, 0xec, + 0x89, 0x68, 0xba, 0x86, 0xba, 0x5d, 0x73, 0x0b, 0xe9, 0x62, 0xe6, 0x1e, 0xf5, 0x55, 0x92, 0x5c, + 0x2b, 0x22, 0xb7, 0x2d, 0x25, 0xd1, 0x92, 0xf4, 0xa5, 0xe3, 0xab, 0x8f, 0x04, 0xb9, 0x25, 0xab, + 0x8d, 0xe0, 0xcf, 0x67, 0xc1, 0x94, 0x8e, 0x9a, 0x8e, 0xdd, 0xc4, 0x6f, 0x9c, 0x63, 0xc9, 0x3f, + 0x65, 0x64, 0xaf, 0xd3, 0xc2, 0xe5, 0xcc, 0x07, 0x65, 0x44, 0xe8, 0x8d, 0xdc, 0xb5, 0x59, 0xb1, + 0x45, 0x8d, 0x21, 0x60, 0x3a, 0x36, 0xf8, 0x37, 0x37, 0xdb, 0x8e, 0x29, 0x2c, 0x39, 0xf5, 0xda, + 0x36, 0xb7, 0x80, 0xa2, 0x7f, 0x3e, 0xc0, 0xf1, 0xd6, 0x2d, 0xdb, 0x0e, 0x0e, 0xa0, 0xee, 0x4b, + 0x17, 0x77, 0x4b, 0x63, 0x63, 0x78, 0x90, 0xb6, 0xb3, 0xda, 0x23, 0x24, 0xfb, 0x26, 0x30, 0x77, + 0xe1, 0x8a, 0x87, 0xba, 0x2c, 0x17, 0xab, 0x36, 0xa7, 0xf7, 0xa4, 0xc2, 0x77, 0x4b, 0xc5, 0xfa, + 0x88, 0xa9, 0x30, 0x19, 0xab, 0x57, 0x86, 0x98, 0x77, 0x1d, 0x07, 0xc5, 0x6a, 0x6d, 0x51, 0x23, + 0x7e, 0x4e, 0xbe, 0xe3, 0xc8, 0x16, 0x7c, 0xb1, 0x02, 0x66, 0x88, 0xd3, 0x80, 0x8f, 0xc2, 0x0d, + 0x12, 0xb3, 0x00, 0xf8, 0x25, 0x69, 0x1f, 0x28, 0xd2, 0x64, 0xbe, 0x82, 0x68, 0x46, 0x6f, 0x5a, + 0xed, 0x5e, 0x46, 0xe7, 0xf5, 0x9e, 0xd4, 0x3e, 0x80, 0x28, 0x7d, 0x01, 0xf9, 0x7d, 0x29, 0x47, + 0xa8, 0x41, 0xd4, 0x1d, 0x16, 0x2a, 0x7f, 0xa0, 0x80, 0x69, 0x3c, 0xeb, 0xf0, 0x41, 0xa9, 0x09, + 0xa0, 0x38, 0x76, 0xfb, 0x4a, 0xb8, 0x18, 0xe1, 0xbf, 0x26, 0x52, 0x92, 0xbf, 0x91, 0x9e, 0x2f, + 0x13, 0x16, 0x71, 0xb4, 0x8c, 0x09, 0xbf, 0xf7, 0x49, 0xcd, 0xa2, 0x07, 0x10, 0x77, 0x58, 0xf0, + 0xfd, 0x4e, 0x1e, 0x14, 0x36, 0x3a, 0x04, 0xb9, 0xaf, 0x65, 0x65, 0xa2, 0x5b, 0xef, 0x73, 0x82, + 0xc7, 0x66, 0x56, 0xdb, 0x69, 0x9a, 0xed, 0xf5, 0xf0, 0x34, 0x51, 0x98, 0xa0, 0xde, 0xc5, 0xfc, + 0xe2, 0xe8, 0x51, 0xac, 0x9b, 0x62, 0x03, 0x3f, 0x13, 0x1e, 0x71, 0x07, 0x0e, 0x6e, 0x05, 0xc7, + 0x5a, 0x56, 0xd7, 0xbc, 0xd0, 0x46, 0x9a, 0xdd, 0x74, 0xaf, 0x50, 0x76, 0x50, 0x1f, 0xa2, 0xfd, + 0x1f, 0xd4, 0x7b, 0x40, 0xbe, 0xeb, 0x5d, 0x69, 0xd3, 0x89, 0x1f, 0x7f, 0x3e, 0x21, 0xb2, 0xaa, + 0x3a, 0xce, 0xae, 0xd3, 0xbf, 0xf8, 0x3b, 0x33, 0x27, 0x24, 0xef, 0xff, 0xbc, 0x03, 0x14, 0x1c, + 0xd7, 0xda, 0xb2, 0xe8, 0x7d, 0x0a, 0x73, 0xfb, 0xe2, 0x99, 0x51, 0x53, 0xa0, 0x46, 0xb2, 0xe8, + 0x2c, 0x2b, 0x7c, 0x5f, 0x56, 0x36, 0x78, 0x0a, 0xa1, 0x91, 0x82, 0x33, 0x9e, 0x3b, 0x40, 0x5f, + 0x25, 0x15, 0xd6, 0x24, 0x9a, 0xac, 0xf4, 0x07, 0xe1, 0xcf, 0x66, 0xc1, 0xe4, 0xa2, 0x73, 0xc9, + 0x26, 0x02, 0x7b, 0xa7, 0x9c, 0xcd, 0xda, 0xe7, 0xa0, 0x9b, 0x78, 0xf5, 0x56, 0xac, 0x57, 0x3b, + 0x69, 0xad, 0x5f, 0x65, 0x04, 0x0c, 0xb1, 0x1a, 0x20, 0x79, 0x55, 0x52, 0x5c, 0x3d, 0xe9, 0xf3, + 0xf5, 0x2f, 0x14, 0x90, 0x5b, 0x74, 0x9d, 0x0e, 0x7c, 0x4b, 0x26, 0xc1, 0x86, 0x7f, 0xcb, 0x75, + 0x3a, 0x06, 0xb9, 0x05, 0x25, 0x74, 0xe5, 0xe7, 0xd3, 0xd4, 0x3b, 0xc1, 0x64, 0xc7, 0xe9, 0x5a, + 0x9e, 0x3f, 0x1d, 0x98, 0xbb, 0xfd, 0x11, 0x7d, 0xb5, 0x72, 0x9d, 0x65, 0xd2, 0x83, 0xec, 0xb8, + 0xf7, 0x25, 0x2c, 0xc4, 0x7c, 0xc1, 0x6c, 0xf4, 0x6f, 0x82, 0xe9, 0x49, 0x85, 0x2f, 0xe1, 0x91, + 0x7c, 0xaa, 0x88, 0xe4, 0xa3, 0xfa, 0x70, 0xd8, 0x75, 0x3a, 0x23, 0xd9, 0xa2, 0x7b, 0x45, 0x80, + 0xea, 0xd3, 0x04, 0x54, 0x6f, 0x91, 0xaa, 0x33, 0x7d, 0x44, 0xdf, 0x97, 0x03, 0x80, 0x98, 0x0b, + 0x1b, 0x78, 0x22, 0x23, 0x67, 0x2b, 0x3d, 0x37, 0xc7, 0xf1, 0xb2, 0x24, 0xf2, 0xf2, 0x31, 0x11, + 0xd6, 0x08, 0x29, 0x3e, 0x82, 0xa3, 0x25, 0x90, 0xdf, 0xc5, 0x9f, 0x19, 0x47, 0x25, 0x8b, 0x20, + 0xaf, 0x3a, 0xfd, 0x13, 0xfe, 0x79, 0x06, 0xe4, 0x49, 0x82, 0x7a, 0x1a, 0x00, 0x32, 0x40, 0xd3, + 0x43, 0x21, 0x19, 0x32, 0x14, 0x73, 0x29, 0x44, 0x5a, 0xad, 0x16, 0xfb, 0x4c, 0x4d, 0xdf, 0x30, + 0x01, 0xff, 0x4d, 0x86, 0x6d, 0x52, 0x16, 0x1b, 0xc8, 0xb9, 0x14, 0xfc, 0x37, 0x79, 0x5b, 0x45, + 0x9b, 0x34, 0x18, 0x6e, 0x4e, 0x0f, 0x13, 0x82, 0xbf, 0x57, 0x83, 0x0b, 0x4f, 0xfc, 0xbf, 0x49, + 0x0a, 0x9e, 0xd4, 0x12, 0xb1, 0x5c, 0x08, 0xab, 0x28, 0x90, 0x4c, 0xbd, 0xc9, 0xf0, 0xb5, 0x81, + 0xd8, 0x2c, 0x0a, 0x62, 0xf3, 0xb8, 0x04, 0xec, 0x4d, 0x5f, 0x78, 0xbe, 0x92, 0x07, 0x53, 0x55, + 0xa7, 0xc5, 0x64, 0x87, 0x9b, 0xf8, 0x7d, 0x2c, 0x9f, 0x68, 0xe2, 0x17, 0x94, 0x11, 0x21, 0x20, + 0xf7, 0x89, 0x02, 0x22, 0x57, 0x02, 0x2f, 0x1f, 0xea, 0x02, 0x28, 0x10, 0xe9, 0xdd, 0x7f, 0x91, + 0x4d, 0x5c, 0x11, 0x84, 0xb5, 0x3a, 0xfb, 0xf3, 0xdf, 0x9c, 0x8c, 0xfd, 0x27, 0x90, 0x27, 0x0d, + 0x8c, 0xd9, 0x1b, 0x11, 0x1b, 0x9a, 0x8d, 0x6f, 0xa8, 0x12, 0xdf, 0xd0, 0x5c, 0x6f, 0x43, 0x93, + 0xcc, 0xe7, 0xa3, 0x24, 0x24, 0x7d, 0x19, 0xff, 0xef, 0x13, 0x00, 0x54, 0xcd, 0x3d, 0x6b, 0x8b, + 0xee, 0xad, 0x7e, 0xce, 0x9f, 0xc7, 0xb0, 0x5d, 0xd0, 0xff, 0xcc, 0x0d, 0x84, 0x77, 0x82, 0x09, + 0x36, 0xee, 0xb1, 0x86, 0x5c, 0x2f, 0x34, 0x24, 0x2c, 0x85, 0x9a, 0x97, 0x97, 0x3d, 0xdd, 0xcf, + 0x2f, 0x5c, 0xed, 0x97, 0xed, 0xb9, 0xda, 0xaf, 0xef, 0xee, 0x40, 0xd4, 0x85, 0x7f, 0xf0, 0xdd, + 0xd2, 0x1b, 0x54, 0x1c, 0x3d, 0x5c, 0x8b, 0x22, 0x54, 0xf0, 0x0e, 0x30, 0xe1, 0x04, 0xdb, 0xc1, + 0x4a, 0xe4, 0x7a, 0x56, 0xc5, 0xde, 0x74, 0x74, 0x3f, 0xa7, 0xe4, 0xae, 0x94, 0x14, 0x1d, 0x63, + 0x39, 0xe4, 0x70, 0x72, 0xd9, 0x0f, 0x2c, 0x84, 0xdb, 0x71, 0xde, 0xf2, 0xb6, 0x57, 0x2d, 0xfb, + 0x62, 0x17, 0xfe, 0x07, 0x39, 0x0b, 0x92, 0xc3, 0x3f, 0x9b, 0x0c, 0x7f, 0x31, 0x6e, 0x43, 0x5d, + 0x44, 0xed, 0x9e, 0xa8, 0x52, 0xfa, 0x53, 0x1b, 0x01, 0xe0, 0x5d, 0xa0, 0x40, 0x09, 0x65, 0x9d, + 0xe8, 0xd9, 0x48, 0xfc, 0x82, 0x92, 0x74, 0xf6, 0x07, 0x7c, 0x57, 0x80, 0xe3, 0x39, 0x01, 0xc7, + 0x85, 0x03, 0x51, 0x96, 0x3a, 0xa4, 0x67, 0x1f, 0x0f, 0x26, 0x18, 0xa7, 0xd5, 0x39, 0x5e, 0x8b, + 0x8b, 0x47, 0x54, 0x00, 0x0a, 0x6b, 0xce, 0x1e, 0x32, 0x9c, 0x62, 0x06, 0x3f, 0x63, 0xfa, 0x0c, + 0xa7, 0x98, 0x85, 0xaf, 0x9c, 0x04, 0x93, 0x41, 0x44, 0x97, 0xcf, 0x66, 0x41, 0xb1, 0xec, 0x22, + 0xd3, 0x43, 0x4b, 0xae, 0xb3, 0x43, 0x5b, 0x24, 0xef, 0x5b, 0xf9, 0xab, 0xd2, 0x0e, 0x12, 0x41, + 0xa4, 0x95, 0xde, 0xca, 0x24, 0x6f, 0x19, 0x7f, 0xb3, 0x94, 0xc3, 0x84, 0x6c, 0x2d, 0xe9, 0xab, + 0xda, 0x27, 0xb3, 0x20, 0x5f, 0x6e, 0x3b, 0x36, 0x4a, 0x74, 0xc9, 0x78, 0xff, 0x1d, 0x05, 0xf8, + 0x33, 0x59, 0x59, 0x5b, 0x23, 0x64, 0x00, 0xae, 0x5b, 0x92, 0xb7, 0x72, 0x83, 0x54, 0x6c, 0xd1, + 0xe9, 0x33, 0xf4, 0x1b, 0x59, 0x30, 0x45, 0x63, 0xa3, 0x94, 0xda, 0x6d, 0xf8, 0x88, 0x90, 0xa9, + 0x7d, 0xa2, 0xe2, 0xc0, 0xdf, 0x97, 0x76, 0x70, 0x0f, 0x5a, 0x15, 0x94, 0x9d, 0x20, 0x48, 0x4c, + 0x32, 0x7f, 0x6b, 0xb9, 0x3d, 0xb1, 0x81, 0x04, 0xa5, 0xcf, 0xea, 0xbf, 0xce, 0x62, 0x03, 0xc0, + 0xbe, 0xb8, 0xee, 0xa2, 0x3d, 0x0b, 0x5d, 0x82, 0xd7, 0x86, 0xcc, 0xde, 0x1f, 0xf8, 0xe1, 0x8d, + 0xd2, 0x8b, 0x38, 0x5c, 0x91, 0x91, 0x5b, 0x52, 0xd3, 0xed, 0x30, 0x13, 0xeb, 0xc5, 0x7b, 0xa3, + 0x71, 0x70, 0xc5, 0xe8, 0x7c, 0x76, 0xc9, 0x35, 0x9b, 0x68, 0x2a, 0xd2, 0x67, 0xec, 0x43, 0x13, + 0x60, 0x72, 0xc3, 0xee, 0x76, 0xda, 0x66, 0x77, 0x1b, 0x7e, 0x5f, 0x09, 0xee, 0xf8, 0x7e, 0xa2, + 0x70, 0xbe, 0xfc, 0xa7, 0x76, 0x91, 0xeb, 0xfb, 0x4b, 0xd1, 0x97, 0xfe, 0x97, 0xc8, 0xc2, 0xf7, + 0x29, 0xb2, 0x93, 0x54, 0xbf, 0xd2, 0xf8, 0xcb, 0xaf, 0x2b, 0x60, 0xb2, 0x63, 0x35, 0xbd, 0x5d, + 0x37, 0xb8, 0x92, 0xf4, 0xb1, 0x72, 0xa5, 0xac, 0xd3, 0xbf, 0xf4, 0xe0, 0x77, 0x68, 0x82, 0x09, + 0x96, 0xb8, 0x6f, 0x5b, 0x68, 0xff, 0x79, 0xc9, 0x93, 0xa0, 0x60, 0xba, 0x9e, 0xd5, 0xf5, 0xaf, + 0x7c, 0x66, 0x6f, 0xb8, 0xbb, 0xa4, 0x4f, 0x1b, 0x6e, 0xdb, 0x8f, 0x44, 0x11, 0x24, 0xc0, 0x3f, + 0x90, 0x9a, 0x3f, 0xc6, 0xb7, 0x3c, 0x19, 0xe4, 0xf7, 0x0f, 0xb1, 0xd6, 0x7c, 0x35, 0xb8, 0x4a, + 0x2f, 0x19, 0x5a, 0x83, 0x06, 0x2e, 0x08, 0x62, 0x14, 0xb4, 0xe0, 0xf7, 0xf9, 0xf5, 0x3b, 0x71, + 0x8c, 0x60, 0x5c, 0x0c, 0xc7, 0x88, 0x20, 0x21, 0x66, 0x8c, 0xf8, 0x1d, 0xe9, 0xdd, 0x9d, 0x80, + 0x25, 0x03, 0xd6, 0xf2, 0xe2, 0x6e, 0x7e, 0x79, 0xbf, 0xd4, 0x4e, 0xcd, 0xa0, 0x9a, 0x0e, 0x91, + 0xfd, 0xbf, 0x39, 0x01, 0x26, 0x96, 0xcd, 0x76, 0x1b, 0xb9, 0x57, 0xf0, 0xd0, 0x52, 0xf4, 0x29, + 0x5c, 0x33, 0x6d, 0x6b, 0x13, 0xcf, 0xef, 0x63, 0x3b, 0xbd, 0x77, 0x4b, 0x47, 0x15, 0x65, 0x75, + 0xcc, 0xf7, 0x96, 0x1f, 0xc1, 0xf3, 0xdb, 0x40, 0xce, 0xb2, 0x37, 0x1d, 0xd6, 0xf5, 0xf5, 0xae, + 0xa2, 0xfb, 0x3f, 0x93, 0x29, 0x08, 0xc9, 0x28, 0x19, 0x58, 0x54, 0x92, 0x8a, 0xf4, 0x7b, 0xc0, + 0xdf, 0xcd, 0x81, 0x59, 0x9f, 0x88, 0x8a, 0xdd, 0x42, 0x97, 0xf9, 0x25, 0x95, 0x17, 0xe7, 0x64, + 0x0f, 0x45, 0xf5, 0xb6, 0x87, 0x14, 0x15, 0xc1, 0x52, 0x03, 0x80, 0xa6, 0xe9, 0xa1, 0x2d, 0xc7, + 0xb5, 0x82, 0x7e, 0xed, 0x09, 0x49, 0x4a, 0x2b, 0xd3, 0xbf, 0xaf, 0xe8, 0x5c, 0x39, 0xea, 0x3d, + 0x60, 0x1a, 0x05, 0xe7, 0x9e, 0xfd, 0x25, 0x97, 0x58, 0xbc, 0xf8, 0xfc, 0xf0, 0xaf, 0xa5, 0xce, + 0x5e, 0xc9, 0x34, 0x33, 0x19, 0x66, 0x8d, 0xe1, 0x74, 0x68, 0xa3, 0xba, 0x56, 0xd2, 0xeb, 0x2b, + 0xa5, 0xd5, 0xd5, 0x4a, 0x75, 0x39, 0x08, 0xe2, 0xa1, 0x82, 0xb9, 0xc5, 0xda, 0xf9, 0x2a, 0x17, + 0x65, 0x25, 0x07, 0xd7, 0xc1, 0xa4, 0xcf, 0xaf, 0x7e, 0xce, 0x8e, 0x3c, 0xcf, 0x98, 0xb3, 0x23, + 0x97, 0x84, 0x8d, 0x2c, 0xab, 0x19, 0x38, 0xcc, 0x90, 0x67, 0xf8, 0x67, 0x26, 0xc8, 0x93, 0xb5, + 0x71, 0xf8, 0x76, 0x72, 0x27, 0x74, 0xa7, 0x6d, 0x36, 0x11, 0xdc, 0x49, 0x60, 0x55, 0xfb, 0x61, + 0xee, 0xb3, 0xfb, 0xc2, 0xdc, 0x93, 0x47, 0x66, 0xbd, 0x1d, 0xef, 0xb7, 0x1e, 0xaf, 0xd3, 0x2c, + 0xe2, 0x31, 0xa5, 0xd8, 0x5d, 0x12, 0xba, 0x8c, 0xcf, 0xc8, 0x8c, 0x10, 0xc9, 0x68, 0x9a, 0x92, + 0x59, 0x94, 0x72, 0xfb, 0x29, 0x71, 0x14, 0xa5, 0xaf, 0xf1, 0x5f, 0xcc, 0x81, 0x7c, 0xbd, 0xd3, + 0xb6, 0x3c, 0xf8, 0xb2, 0xec, 0x48, 0x30, 0xa3, 0x57, 0x13, 0x28, 0x03, 0xaf, 0x26, 0x08, 0x77, + 0x41, 0x73, 0x12, 0xbb, 0xa0, 0x06, 0xba, 0xec, 0x89, 0xbb, 0xa0, 0x77, 0xb2, 0x40, 0x5c, 0x74, + 0x0f, 0xf5, 0x51, 0x7d, 0x58, 0x4a, 0x9a, 0xd5, 0x27, 0xc2, 0xdb, 0xd9, 0xc7, 0xb3, 0x40, 0x53, + 0x00, 0x14, 0x16, 0x6a, 0x86, 0x51, 0x5b, 0x2b, 0x1e, 0x21, 0x11, 0x4a, 0x6a, 0xeb, 0xc5, 0x8c, + 0x3a, 0x05, 0xf2, 0x95, 0x6a, 0x55, 0xd3, 0x8b, 0x59, 0x12, 0xfa, 0xaa, 0x62, 0xac, 0x6a, 0x45, + 0x45, 0x8c, 0x53, 0x1d, 0x6b, 0x46, 0x8b, 0x75, 0xa7, 0x29, 0x5e, 0x72, 0x06, 0x75, 0x34, 0x3d, + 0xe9, 0x0b, 0xd7, 0x7f, 0x51, 0x40, 0x7e, 0x0d, 0xb9, 0x5b, 0x08, 0xfe, 0x54, 0x82, 0xcd, 0xba, + 0x4d, 0xcb, 0xed, 0xd2, 0x40, 0x61, 0xe1, 0x66, 0x1d, 0x9f, 0xa6, 0xde, 0x08, 0x66, 0xbb, 0xa8, + 0xe9, 0xd8, 0x2d, 0x3f, 0x13, 0xed, 0x8f, 0xc4, 0x44, 0xf8, 0xd2, 0x84, 0x90, 0x11, 0x42, 0x47, + 0xb2, 0xe3, 0x96, 0x04, 0x98, 0x7e, 0xb5, 0xa6, 0x0f, 0xcc, 0x77, 0x14, 0xfc, 0x53, 0xe7, 0x0a, + 0x7c, 0xa9, 0xf4, 0x2e, 0xea, 0xad, 0xa0, 0x40, 0xc4, 0xd4, 0x1f, 0xa3, 0xfb, 0xf7, 0xc7, 0x2c, + 0x8f, 0xba, 0x00, 0x8e, 0x75, 0x51, 0x1b, 0x35, 0x3d, 0xd4, 0xc2, 0xaa, 0xab, 0x0f, 0xec, 0x14, + 0xf6, 0x67, 0x87, 0x7f, 0xc9, 0x03, 0x78, 0xb7, 0x08, 0xe0, 0x4d, 0x7d, 0x58, 0x89, 0x1b, 0x14, + 0x6d, 0x2b, 0xe3, 0x66, 0xd4, 0xdb, 0x4e, 0xb0, 0xb8, 0xed, 0xbf, 0xe3, 0x6f, 0xdb, 0xde, 0x4e, + 0x9b, 0x7c, 0x63, 0x1e, 0xfc, 0xfe, 0xbb, 0x3a, 0x0f, 0x26, 0x4c, 0xfb, 0x0a, 0xf9, 0x94, 0x8b, + 0x69, 0xb5, 0x9f, 0x09, 0xbe, 0x32, 0x40, 0xfe, 0x5e, 0x01, 0xf9, 0xc7, 0xc8, 0x91, 0x9b, 0x3e, + 0xf0, 0x3f, 0x37, 0x01, 0xf2, 0xeb, 0x66, 0xd7, 0x43, 0xf0, 0xff, 0x55, 0x64, 0x91, 0xbf, 0x09, + 0xcc, 0x6d, 0x3a, 0xcd, 0xdd, 0x2e, 0x6a, 0x89, 0x4a, 0xd9, 0x93, 0x3a, 0x0a, 0xcc, 0xd5, 0x5b, + 0x40, 0xd1, 0x4f, 0x64, 0xc5, 0xfa, 0xdb, 0xe9, 0xfb, 0xd2, 0x49, 0xd4, 0xe3, 0xee, 0xba, 0xe9, + 0x7a, 0xb5, 0x4d, 0x92, 0x16, 0x44, 0x3d, 0xe6, 0x13, 0x05, 0xe8, 0x0b, 0x31, 0xd0, 0x4f, 0x44, + 0x43, 0x3f, 0x29, 0x01, 0xbd, 0x5a, 0x02, 0x93, 0x9b, 0x56, 0x1b, 0x91, 0x1f, 0xa6, 0xc8, 0x0f, + 0xfd, 0xc6, 0x24, 0xc2, 0xfb, 0x60, 0x4c, 0x5a, 0xb2, 0xda, 0x48, 0x0f, 0x7e, 0xf3, 0x27, 0x32, + 0x20, 0x9c, 0xc8, 0xac, 0x52, 0xff, 0x56, 0x6c, 0x78, 0xd9, 0xe6, 0x0e, 0xf2, 0x17, 0xd1, 0x6c, + 0x76, 0x7a, 0xa4, 0x65, 0x7a, 0x26, 0x01, 0x63, 0x46, 0x27, 0xcf, 0xa2, 0x7f, 0x87, 0xd2, 0xeb, + 0xdf, 0xf1, 0x3c, 0x25, 0x59, 0x8f, 0xe8, 0x13, 0x1b, 0xa1, 0x51, 0x17, 0x7c, 0x80, 0xa8, 0xa5, + 0x18, 0xbc, 0x63, 0x60, 0x9a, 0xa6, 0x8b, 0xbc, 0x75, 0xde, 0xa3, 0x22, 0xaf, 0x8b, 0x89, 0xc4, + 0xb5, 0xae, 0x5b, 0x37, 0x77, 0x10, 0xa9, 0xac, 0x8c, 0xbf, 0x31, 0x97, 0xa9, 0x7d, 0xe9, 0x61, + 0xff, 0x9b, 0x1f, 0x75, 0xff, 0xdb, 0xaf, 0x8d, 0xe9, 0xab, 0xe1, 0xab, 0x73, 0x40, 0x29, 0xef, + 0x7a, 0x0f, 0xeb, 0xee, 0xf7, 0x07, 0xd2, 0xfe, 0x2a, 0xac, 0x3f, 0x8b, 0xbc, 0x14, 0x7c, 0x4c, + 0xbd, 0x6f, 0x42, 0x29, 0x91, 0xf3, 0x8b, 0x89, 0x6a, 0x5b, 0xfa, 0x32, 0xf2, 0x16, 0x25, 0x70, + 0x78, 0x7c, 0x4e, 0xe6, 0xe0, 0xa6, 0x39, 0xa4, 0xfd, 0x13, 0xd7, 0x33, 0x04, 0xef, 0x7e, 0xc7, + 0x93, 0x13, 0x62, 0xa4, 0x91, 0x6d, 0x72, 0xc2, 0xca, 0x19, 0x9d, 0xbe, 0xc0, 0x97, 0x4b, 0xbb, + 0x81, 0x53, 0xb6, 0xc5, 0xba, 0x04, 0x26, 0xb3, 0xa9, 0xe4, 0x2e, 0x7e, 0x8c, 0xa9, 0x36, 0x7d, + 0xc0, 0xbe, 0x15, 0xbd, 0x64, 0x38, 0x0c, 0x62, 0xf0, 0x55, 0xd2, 0xdb, 0x4a, 0xb4, 0xd9, 0x03, + 0xd6, 0x0b, 0x93, 0xf1, 0x5b, 0x6e, 0xd3, 0x29, 0xb6, 0xe2, 0xf4, 0x39, 0xfe, 0x4d, 0x05, 0x14, + 0xe8, 0x56, 0x22, 0x7c, 0x53, 0x26, 0xc1, 0x8d, 0xd9, 0x9e, 0xe8, 0x0a, 0x18, 0xbc, 0x27, 0x59, + 0x73, 0x10, 0x5c, 0x06, 0x73, 0x89, 0x5c, 0x06, 0xc5, 0x73, 0x95, 0x12, 0x7a, 0x44, 0xdb, 0x98, + 0xf2, 0x74, 0x32, 0x89, 0x86, 0xf5, 0x25, 0x28, 0x7d, 0xbc, 0x9f, 0x9f, 0x07, 0x33, 0xb4, 0xea, + 0xf3, 0x56, 0x6b, 0x0b, 0x79, 0xf0, 0x9d, 0xd9, 0x1f, 0x1d, 0xd4, 0xd5, 0x2a, 0x98, 0xb9, 0x44, + 0xc8, 0x5e, 0x35, 0xaf, 0x38, 0xbb, 0x1e, 0x5b, 0xb9, 0xb8, 0x25, 0x76, 0xdd, 0x83, 0xb6, 0x73, + 0x9e, 0xfe, 0xa1, 0x0b, 0xff, 0x63, 0x1e, 0xd3, 0x05, 0x7f, 0xea, 0x88, 0x55, 0x20, 0x46, 0x16, + 0x9f, 0xa4, 0x9e, 0x04, 0x85, 0x3d, 0x0b, 0x5d, 0xaa, 0xb4, 0x98, 0x75, 0xcb, 0xde, 0xc4, 0x23, + 0xe4, 0xb1, 0xfb, 0xaf, 0x3c, 0xdc, 0x8c, 0x96, 0x74, 0xa5, 0x50, 0x6e, 0x17, 0x76, 0x20, 0x59, + 0x63, 0x38, 0xe3, 0x2b, 0x5e, 0xac, 0x98, 0xe4, 0xc2, 0xfe, 0x28, 0xc3, 0x59, 0x0c, 0x68, 0x11, + 0x7b, 0x82, 0x84, 0x32, 0x60, 0xc4, 0x77, 0x2e, 0xca, 0x45, 0x59, 0x18, 0x50, 0x75, 0xfa, 0x9c, + 0x7f, 0xad, 0x02, 0xa6, 0xea, 0xc8, 0x5b, 0xb2, 0x50, 0xbb, 0xd5, 0x85, 0xee, 0xc1, 0x4d, 0xa3, + 0xdb, 0x40, 0x61, 0x93, 0x14, 0x36, 0xe8, 0xfc, 0x01, 0xcb, 0x06, 0x5f, 0x9d, 0x95, 0xdd, 0xd9, + 0x65, 0xab, 0x6f, 0x3e, 0xb5, 0x23, 0x81, 0x49, 0xce, 0x33, 0x37, 0xbe, 0xe6, 0xf4, 0x51, 0x7a, + 0xab, 0x02, 0x66, 0xd8, 0x4d, 0x6c, 0xa5, 0xb6, 0xb5, 0x65, 0xc3, 0xdd, 0x11, 0x68, 0x88, 0xfa, + 0x38, 0x90, 0x37, 0x71, 0x69, 0xcc, 0x49, 0x1f, 0xf6, 0xed, 0x3c, 0x49, 0x7d, 0x3a, 0xcd, 0x98, + 0x20, 0x98, 0x62, 0x28, 0xd8, 0x3e, 0xcd, 0x63, 0x0c, 0xa6, 0x38, 0xb0, 0xf2, 0xf4, 0x11, 0xfb, + 0xb2, 0x02, 0x8e, 0x33, 0x02, 0xce, 0x21, 0xd7, 0xb3, 0x9a, 0x66, 0x9b, 0x22, 0xf7, 0x82, 0xcc, + 0x28, 0xa0, 0x5b, 0x01, 0xb3, 0x7b, 0x7c, 0xb1, 0x0c, 0xc2, 0xb3, 0x7d, 0x21, 0x14, 0x08, 0xd0, + 0xc5, 0x1f, 0x13, 0x04, 0xa5, 0x13, 0xb8, 0x2a, 0x94, 0x39, 0xc6, 0xa0, 0x74, 0xd2, 0x44, 0xa4, + 0x0f, 0xf1, 0x4b, 0x72, 0x34, 0x40, 0x4d, 0xd8, 0x7d, 0x7e, 0x4e, 0x1a, 0xdb, 0x0d, 0x30, 0x4d, + 0xb0, 0xa4, 0x3f, 0xb2, 0x65, 0x88, 0x18, 0x21, 0x0e, 0xfa, 0x1d, 0x76, 0xf9, 0x53, 0xf0, 0xaf, + 0xce, 0x97, 0x03, 0xcf, 0x03, 0x10, 0x7e, 0xe2, 0x3b, 0xe9, 0x4c, 0x54, 0x27, 0x9d, 0x95, 0xeb, + 0xa4, 0xdf, 0x28, 0x1d, 0xbc, 0xa4, 0x3f, 0xd9, 0x07, 0x17, 0x0f, 0xb9, 0xb0, 0x15, 0x83, 0x6b, + 0x4f, 0x5f, 0x2e, 0x5e, 0x99, 0xeb, 0xbd, 0x72, 0xfb, 0x43, 0x23, 0x99, 0x4f, 0xf1, 0xfd, 0x81, + 0xd2, 0xd3, 0x1f, 0x1c, 0xc0, 0x92, 0xbe, 0x19, 0x1c, 0xa5, 0x55, 0x94, 0x03, 0xb2, 0xf2, 0x34, + 0x34, 0x43, 0x4f, 0x32, 0xfc, 0xf0, 0x10, 0x42, 0x30, 0xe8, 0x3e, 0xf0, 0xb8, 0x4e, 0x2e, 0x99, + 0xb1, 0x9b, 0x54, 0x40, 0x0e, 0xef, 0x1a, 0xf1, 0x6f, 0xe4, 0xa8, 0xb5, 0xbb, 0x41, 0xee, 0xe7, + 0x82, 0x5f, 0xc8, 0x8d, 0x62, 0x44, 0xb8, 0x0f, 0xe4, 0x88, 0xab, 0xba, 0x12, 0xb9, 0xa4, 0x11, + 0x56, 0x19, 0x5e, 0x9e, 0x86, 0x2e, 0x7b, 0x2b, 0x47, 0x74, 0xf2, 0xa7, 0x7a, 0x0b, 0x38, 0x7a, + 0xc1, 0x6c, 0x5e, 0xdc, 0x72, 0x9d, 0x5d, 0x72, 0x93, 0x91, 0xc3, 0xae, 0x44, 0x22, 0x57, 0xcb, + 0x89, 0x1f, 0xd4, 0xdb, 0x7d, 0xd3, 0x21, 0x3f, 0xc8, 0x74, 0x58, 0x39, 0xc2, 0x8c, 0x07, 0xf5, + 0xf1, 0x41, 0xa7, 0x53, 0x88, 0xed, 0x74, 0x56, 0x8e, 0xf8, 0xdd, 0x8e, 0xba, 0x08, 0x26, 0x5b, + 0xd6, 0x1e, 0xd9, 0xaa, 0x26, 0xb3, 0xae, 0x41, 0x47, 0x89, 0x17, 0xad, 0x3d, 0xba, 0xb1, 0xbd, + 0x72, 0x44, 0x0f, 0xfe, 0x54, 0x97, 0xc1, 0x14, 0xd9, 0x16, 0x20, 0xc5, 0x4c, 0x26, 0x3a, 0x26, + 0xbc, 0x72, 0x44, 0x0f, 0xff, 0xc5, 0xd6, 0x47, 0x8e, 0x9c, 0xe1, 0xb8, 0xd7, 0xdf, 0x6e, 0xcf, + 0x24, 0xda, 0x6e, 0xc7, 0xbc, 0xa0, 0x1b, 0xee, 0x27, 0x41, 0xbe, 0x49, 0x38, 0x9c, 0x65, 0x1c, + 0xa6, 0xaf, 0xea, 0xdd, 0x20, 0xb7, 0x63, 0xba, 0xfe, 0xe4, 0xf9, 0xa6, 0xc1, 0xe5, 0xae, 0x99, + 0xee, 0x45, 0x8c, 0x20, 0xfe, 0x6b, 0x61, 0x02, 0xe4, 0x09, 0xe3, 0x82, 0x07, 0xf8, 0x96, 0x1c, + 0x35, 0x43, 0xca, 0x8e, 0x8d, 0x87, 0x7d, 0xc3, 0xf1, 0x0f, 0xba, 0xfc, 0x49, 0x66, 0x34, 0x16, + 0x64, 0xdf, 0x3b, 0xaa, 0x95, 0xc8, 0x3b, 0xaa, 0x7b, 0x2e, 0x4b, 0xcd, 0xf5, 0x5e, 0x96, 0x1a, + 0x2e, 0x1f, 0xe4, 0x07, 0x3b, 0xaa, 0xfc, 0xe5, 0x10, 0xa6, 0x4b, 0x2f, 0x23, 0xa2, 0x67, 0xe0, + 0x6d, 0xcb, 0xe6, 0xda, 0xec, 0xbf, 0x26, 0xec, 0x94, 0x92, 0x1a, 0x35, 0x03, 0xc8, 0x4b, 0xbf, + 0x6f, 0xfa, 0xed, 0x1c, 0x38, 0x45, 0xaf, 0xe4, 0xdd, 0x43, 0x86, 0x23, 0xde, 0x1d, 0x08, 0x3f, + 0x31, 0x12, 0xa1, 0xe9, 0x33, 0xe0, 0x28, 0x7d, 0x07, 0x9c, 0x7d, 0x87, 0x8d, 0x73, 0x03, 0x0e, + 0x1b, 0xe7, 0x93, 0xad, 0x1c, 0xfe, 0x11, 0x2f, 0x3f, 0xeb, 0xa2, 0xfc, 0xdc, 0x15, 0x01, 0x50, + 0x3f, 0xbe, 0x8c, 0xc4, 0xbe, 0x79, 0x7b, 0x20, 0x29, 0x75, 0x41, 0x52, 0xee, 0x1d, 0x9e, 0x90, + 0xf4, 0xa5, 0xe5, 0x0f, 0x73, 0xe0, 0xaa, 0x90, 0x98, 0x2a, 0xba, 0xc4, 0x04, 0xe5, 0xb3, 0x23, + 0x11, 0x94, 0xe4, 0xb1, 0x0c, 0xd2, 0x96, 0x98, 0x3f, 0x97, 0x3e, 0x03, 0xd4, 0x0b, 0x54, 0xc0, + 0x9b, 0x08, 0x61, 0x39, 0x09, 0x0a, 0xb4, 0x87, 0x61, 0xd0, 0xb0, 0xb7, 0x84, 0xdd, 0x8d, 0xdc, + 0xc9, 0x21, 0x59, 0xda, 0xc6, 0x20, 0x3f, 0x6c, 0x5d, 0xc3, 0xd8, 0x75, 0xed, 0x8a, 0xed, 0x39, + 0xf0, 0x67, 0x47, 0x22, 0x38, 0x81, 0x37, 0x9c, 0x32, 0x8c, 0x37, 0xdc, 0x50, 0xab, 0x1c, 0x7e, + 0x0b, 0x0e, 0x65, 0x95, 0x23, 0xa2, 0xf2, 0xf4, 0xf1, 0x7b, 0x9b, 0x42, 0xaf, 0xe7, 0xaf, 0x23, + 0x6f, 0x41, 0xb4, 0x10, 0xe1, 0x03, 0xa3, 0x00, 0xf2, 0xb8, 0x6f, 0x26, 0xb1, 0xdb, 0xa5, 0xc8, + 0x8b, 0x78, 0xe2, 0x29, 0xf6, 0x96, 0x03, 0x61, 0x3a, 0xd8, 0x43, 0xe1, 0x48, 0x90, 0x92, 0xbb, + 0xdc, 0x20, 0x01, 0x19, 0xe9, 0x63, 0xf6, 0x22, 0x05, 0x14, 0xd8, 0x55, 0xec, 0x1b, 0xa9, 0x38, + 0x4c, 0x88, 0xb1, 0x8e, 0x25, 0x76, 0xe4, 0x12, 0x5f, 0x58, 0x9e, 0xde, 0x5e, 0xdc, 0x21, 0xdd, + 0x48, 0xfe, 0x9d, 0x2c, 0x98, 0xae, 0x23, 0xaf, 0x6c, 0xba, 0xae, 0x65, 0x6e, 0x8d, 0xca, 0xe3, + 0x5b, 0xd6, 0x7b, 0x18, 0x7e, 0x37, 0x23, 0x7b, 0x9e, 0x26, 0x58, 0x08, 0xf7, 0x49, 0x8d, 0x88, + 0xed, 0x27, 0x77, 0x15, 0xfc, 0xa0, 0xd2, 0xc6, 0xe0, 0xb1, 0x9d, 0x05, 0x13, 0xfe, 0x99, 0xba, + 0xdb, 0x84, 0x73, 0x96, 0xdb, 0xde, 0x8e, 0x7f, 0x0c, 0x86, 0x3c, 0xef, 0x3f, 0xcb, 0x05, 0x5f, + 0x91, 0xd0, 0x51, 0x3e, 0xfe, 0x40, 0x60, 0x32, 0x1d, 0x4b, 0xe2, 0x0e, 0x7f, 0x58, 0x47, 0x00, + 0x7f, 0x7f, 0x82, 0x2d, 0x47, 0xae, 0x9a, 0x1e, 0xba, 0x0c, 0x3f, 0xa7, 0x80, 0x89, 0x3a, 0xf2, + 0xf0, 0x78, 0x8b, 0xc9, 0x3f, 0xb0, 0x84, 0xab, 0xdc, 0x8a, 0xc7, 0x14, 0x5b, 0xc3, 0x78, 0x3a, + 0x98, 0xea, 0xb8, 0x4e, 0x13, 0x75, 0xbb, 0x6c, 0xf5, 0x82, 0x77, 0x54, 0xeb, 0x37, 0xfa, 0x13, + 0xd2, 0xe6, 0xd7, 0xfd, 0x7f, 0xf4, 0xf0, 0xf7, 0xa4, 0x66, 0x00, 0x2d, 0x89, 0x35, 0x70, 0xdc, + 0x66, 0x40, 0x5c, 0xe5, 0xe9, 0x03, 0xfd, 0x69, 0x05, 0xcc, 0xd4, 0x91, 0x17, 0x70, 0x31, 0xc1, + 0x26, 0x47, 0x34, 0xbc, 0x02, 0x94, 0xca, 0xc1, 0xa0, 0x94, 0xbf, 0x20, 0x4f, 0xe4, 0x66, 0x50, + 0xd8, 0x18, 0x2f, 0xc8, 0x93, 0xa3, 0x60, 0x0c, 0xc7, 0xd7, 0x1e, 0x05, 0xa6, 0x08, 0x2d, 0x44, + 0x61, 0x7f, 0x31, 0x17, 0x2a, 0xef, 0xe7, 0x53, 0x52, 0xde, 0x7b, 0x40, 0x9e, 0x5c, 0xbc, 0x4f, + 0x14, 0x77, 0x5a, 0xc6, 0x6c, 0x5f, 0xc3, 0xd9, 0x75, 0xfa, 0x57, 0x7f, 0x3f, 0xcd, 0x7c, 0x32, + 0x3f, 0xcd, 0xd7, 0x67, 0x13, 0x8d, 0x84, 0x74, 0xee, 0x30, 0x42, 0x95, 0x4f, 0x30, 0x6e, 0xc6, + 0xd4, 0x9d, 0xbe, 0x70, 0xbc, 0x40, 0x01, 0x93, 0x78, 0xdc, 0x26, 0xf6, 0xf8, 0xf9, 0x83, 0x8b, + 0x43, 0x7f, 0x43, 0x3f, 0x61, 0x0f, 0xec, 0x73, 0x64, 0x74, 0xe6, 0x7d, 0x82, 0x1e, 0x38, 0xae, + 0xf2, 0xf4, 0xf1, 0x78, 0x07, 0xc5, 0x83, 0xe8, 0x03, 0x7c, 0x83, 0x02, 0x94, 0x65, 0xe4, 0x8d, + 0xdb, 0x8a, 0x7c, 0xab, 0x74, 0xa8, 0x22, 0x81, 0x61, 0x84, 0xe6, 0xf9, 0x65, 0x34, 0x1a, 0x05, + 0x92, 0x8b, 0x51, 0x24, 0x45, 0x40, 0xfa, 0xa8, 0xbd, 0x87, 0xa2, 0x46, 0x37, 0x17, 0x7e, 0x7a, + 0x04, 0xbd, 0xea, 0x78, 0x17, 0x3e, 0x7c, 0x06, 0x92, 0x32, 0x0e, 0x4b, 0xdf, 0xfa, 0x55, 0x3e, + 0x96, 0x0b, 0xe9, 0x00, 0x56, 0xf6, 0x6d, 0xd4, 0xbc, 0x88, 0x5a, 0xf0, 0x27, 0x0e, 0x0e, 0xdd, + 0x29, 0x30, 0xd1, 0xa4, 0xa5, 0x11, 0xf0, 0x26, 0x75, 0xff, 0x35, 0xc1, 0xed, 0xca, 0x62, 0x47, + 0x44, 0x7f, 0x1f, 0xe3, 0xed, 0xca, 0x12, 0xd5, 0x8f, 0xc1, 0x6c, 0xa1, 0xb3, 0x8c, 0x4a, 0xd3, + 0xb1, 0xe1, 0x7f, 0x3c, 0x38, 0x2c, 0xd7, 0x81, 0x29, 0xab, 0xe9, 0xd8, 0x95, 0x1d, 0x3f, 0xb8, + 0xdf, 0x94, 0x1e, 0x26, 0xf8, 0x5f, 0xb5, 0x1d, 0xe7, 0x41, 0x8b, 0xed, 0x9a, 0x87, 0x09, 0xc3, + 0x1a, 0x13, 0x98, 0xf4, 0xc3, 0x32, 0x26, 0xfa, 0xd4, 0x9d, 0x3e, 0x64, 0x1f, 0x0e, 0xbd, 0xdb, + 0x68, 0x57, 0xf8, 0xb0, 0x58, 0x05, 0x1e, 0x66, 0x38, 0xe3, 0x5b, 0x71, 0x28, 0xc3, 0x59, 0x0c, + 0x01, 0x63, 0xb8, 0x5f, 0x24, 0xc4, 0x31, 0xf5, 0x35, 0xe0, 0x03, 0xa0, 0x33, 0x3a, 0xf3, 0x70, + 0x48, 0x74, 0x0e, 0xc7, 0x44, 0x7c, 0x3f, 0x0b, 0x75, 0xc9, 0x2c, 0x1e, 0xf8, 0x9f, 0x46, 0x01, + 0xce, 0x5d, 0xc3, 0xf8, 0x2b, 0x50, 0x6f, 0x85, 0x04, 0xf7, 0x42, 0xef, 0xe3, 0x20, 0x2e, 0x65, + 0x8c, 0x37, 0xa6, 0xcb, 0xd4, 0x9f, 0x3e, 0x80, 0xbf, 0xa0, 0x80, 0x39, 0xe2, 0x23, 0xd0, 0x46, + 0xa6, 0x4b, 0x3b, 0xca, 0x91, 0x38, 0xca, 0xbf, 0x43, 0x3a, 0xc0, 0x8f, 0xc8, 0x87, 0x90, 0x8e, + 0x91, 0x40, 0x21, 0x17, 0xdd, 0x47, 0x92, 0x84, 0xb1, 0x6c, 0xa3, 0x14, 0x03, 0x12, 0x98, 0x88, + 0x8f, 0x06, 0x8f, 0x84, 0x1e, 0xb9, 0x22, 0x33, 0x7c, 0x65, 0x1b, 0xb3, 0x47, 0xae, 0x0c, 0x11, + 0x63, 0xb8, 0x32, 0xf2, 0x71, 0x6c, 0xc1, 0xd9, 0x20, 0xd7, 0xa6, 0xbf, 0x2a, 0x17, 0x9c, 0x68, + 0xfb, 0xf4, 0x48, 0x3c, 0x30, 0x0f, 0x10, 0xd8, 0x5e, 0x05, 0x39, 0xd7, 0xb9, 0x44, 0x97, 0xb6, + 0x66, 0x75, 0xf2, 0x4c, 0x4c, 0x7e, 0xa7, 0xbd, 0xbb, 0x63, 0xd3, 0x93, 0xa1, 0xb3, 0xba, 0xff, + 0xaa, 0xde, 0x08, 0x66, 0x2f, 0x59, 0xde, 0xf6, 0x0a, 0x32, 0x5b, 0xc8, 0xd5, 0x9d, 0x4b, 0xc4, + 0x63, 0x6e, 0x52, 0x17, 0x13, 0x45, 0xff, 0x15, 0x09, 0xfb, 0x92, 0xdc, 0xa5, 0x3e, 0x96, 0xe3, + 0x6f, 0x49, 0x2c, 0xcf, 0x68, 0xaa, 0xd2, 0x17, 0x98, 0xf7, 0x2a, 0x60, 0x4a, 0x77, 0x2e, 0x31, + 0x21, 0xf9, 0xbf, 0x0f, 0x57, 0x46, 0x12, 0x4f, 0xf4, 0xe8, 0xdd, 0xf8, 0x3e, 0xf9, 0x63, 0x9f, + 0xe8, 0xc5, 0x56, 0x3f, 0x96, 0x93, 0x4b, 0x33, 0xba, 0x73, 0xa9, 0x8e, 0x3c, 0xaa, 0x11, 0xb0, + 0x31, 0x22, 0x27, 0x6b, 0xab, 0x4b, 0x0b, 0x64, 0xf3, 0xf0, 0xe0, 0x3d, 0xe9, 0x2e, 0x42, 0xc0, + 0xa0, 0x80, 0xc4, 0x71, 0xef, 0x22, 0x0c, 0xa4, 0x60, 0x0c, 0x31, 0x52, 0x14, 0x30, 0xad, 0x3b, + 0x97, 0xf0, 0xd0, 0xb0, 0x64, 0xb5, 0xdb, 0xa3, 0x19, 0x21, 0x93, 0x1a, 0xff, 0x3e, 0x1b, 0x7c, + 0x2a, 0xc6, 0x6e, 0xfc, 0x0f, 0x20, 0x20, 0x7d, 0x18, 0x9e, 0x47, 0x95, 0xc5, 0x1f, 0xa1, 0xed, + 0xd1, 0xe0, 0x30, 0xac, 0x42, 0x04, 0x64, 0x1c, 0x9a, 0x42, 0x44, 0x51, 0x30, 0x96, 0x9d, 0x93, + 0xb9, 0x32, 0x19, 0xe6, 0x47, 0xab, 0x13, 0xef, 0x4a, 0xe6, 0x9a, 0xc8, 0x86, 0x5d, 0x81, 0x90, + 0x91, 0xa0, 0x91, 0xc0, 0x05, 0x51, 0x82, 0x86, 0xf4, 0xf1, 0xf8, 0x80, 0x02, 0x66, 0x28, 0x09, + 0x0f, 0x13, 0x2b, 0x60, 0x28, 0xa5, 0xe2, 0x5b, 0x70, 0x38, 0x4a, 0x15, 0x43, 0xc1, 0x58, 0x6e, + 0xe9, 0xc4, 0x76, 0xdc, 0x10, 0xc7, 0xc7, 0xa3, 0x10, 0x1c, 0xda, 0x18, 0x1b, 0xe1, 0x11, 0xf2, + 0x61, 0x8c, 0xb1, 0x43, 0x3a, 0x46, 0xfe, 0xbc, 0x40, 0x8b, 0x46, 0x89, 0xc1, 0x01, 0x54, 0x61, + 0x84, 0x30, 0x0c, 0xa9, 0x0a, 0x87, 0x84, 0xc4, 0x57, 0x14, 0x00, 0x28, 0x01, 0x6b, 0xce, 0x1e, + 0xb9, 0x94, 0x67, 0x04, 0xdd, 0x59, 0xaf, 0x5b, 0xbd, 0x32, 0xc0, 0xad, 0x3e, 0x61, 0x08, 0x97, + 0xa4, 0x2b, 0x81, 0x1c, 0x97, 0x71, 0x23, 0xc7, 0xbe, 0x12, 0x18, 0x5f, 0x7f, 0xfa, 0x18, 0x7f, + 0x89, 0x5a, 0x73, 0xe1, 0x01, 0xd3, 0x5f, 0x1b, 0x09, 0xca, 0xdc, 0xec, 0x5f, 0x11, 0x67, 0xff, + 0x07, 0xc0, 0x76, 0x58, 0x1b, 0x71, 0xd0, 0xc1, 0xd1, 0xf4, 0x6d, 0xc4, 0xc3, 0x3b, 0x20, 0xfa, + 0xd3, 0x39, 0x70, 0x94, 0x75, 0x22, 0x3f, 0x0a, 0x10, 0x27, 0x3c, 0x87, 0x27, 0x74, 0x92, 0x03, + 0x50, 0x1e, 0xd5, 0x82, 0x54, 0x92, 0xa5, 0x4c, 0x09, 0xf2, 0xc6, 0xb2, 0xba, 0x51, 0xd0, 0x2e, + 0x77, 0x4c, 0xbb, 0x25, 0x1f, 0xee, 0x77, 0x00, 0xf0, 0xfe, 0x5a, 0xa3, 0x22, 0xae, 0x35, 0xf6, + 0x59, 0x99, 0x4c, 0xbc, 0x73, 0x4d, 0x58, 0x46, 0xc9, 0x1d, 0xfb, 0xce, 0x75, 0x74, 0xdd, 0xe9, + 0xa3, 0xf4, 0x2e, 0x05, 0xe4, 0xea, 0x8e, 0xeb, 0xc1, 0x87, 0x92, 0x68, 0x27, 0xe5, 0x7c, 0x08, + 0x92, 0xff, 0xae, 0x96, 0x85, 0x5b, 0x93, 0x6f, 0x8b, 0x3f, 0xea, 0x6c, 0x7a, 0x26, 0xf1, 0xea, + 0xc6, 0xf5, 0x73, 0xd7, 0x27, 0x27, 0x8d, 0xa7, 0x43, 0xf9, 0x57, 0x8f, 0x3e, 0x80, 0x91, 0x5a, + 0x3c, 0x9d, 0xc8, 0x9a, 0xd3, 0xc7, 0xed, 0xbf, 0xcd, 0x31, 0xdf, 0xd6, 0x25, 0xab, 0x8d, 0xe0, + 0x43, 0xd4, 0x65, 0xa4, 0x6a, 0xee, 0x20, 0xf9, 0x23, 0x31, 0xb1, 0xae, 0xad, 0x24, 0xbe, 0xac, + 0x12, 0xc6, 0x97, 0x4d, 0xaa, 0x50, 0xf4, 0x00, 0x3a, 0x25, 0x69, 0xdc, 0x0a, 0x15, 0x53, 0xf7, + 0x58, 0xe2, 0x74, 0x1e, 0xab, 0x23, 0x8f, 0x1a, 0x95, 0x35, 0xff, 0x06, 0x96, 0x9f, 0x1c, 0x49, + 0xc4, 0xce, 0xe0, 0x82, 0x17, 0xa5, 0xe7, 0x82, 0x97, 0xf7, 0xf2, 0xe0, 0xac, 0x89, 0xe0, 0x3c, + 0x39, 0x9a, 0x41, 0x22, 0x91, 0x23, 0x81, 0xe9, 0xad, 0x01, 0x4c, 0xeb, 0x02, 0x4c, 0x77, 0x0f, + 0x49, 0x45, 0xfa, 0x80, 0x7d, 0x1e, 0x9b, 0x2a, 0x64, 0xd2, 0x5f, 0xb2, 0x5b, 0x2c, 0xc2, 0xea, + 0x3f, 0x1f, 0xf6, 0x66, 0xdb, 0xfe, 0x10, 0xac, 0x42, 0x2c, 0xe7, 0x7c, 0xef, 0x6d, 0xf5, 0x0b, + 0x34, 0x9c, 0x2b, 0xee, 0x44, 0xc9, 0x4e, 0x9b, 0xfc, 0x8d, 0xf5, 0xc1, 0x7f, 0xf0, 0x2f, 0x92, + 0xad, 0xbf, 0x91, 0x22, 0x7a, 0x18, 0x97, 0xb2, 0x0d, 0x94, 0x60, 0x65, 0x4e, 0x82, 0xba, 0x7f, + 0x1f, 0x6e, 0x61, 0x61, 0x24, 0x90, 0x21, 0xdd, 0xc2, 0x48, 0x01, 0x87, 0xe9, 0x16, 0x36, 0x88, + 0x80, 0x31, 0xdc, 0x32, 0x9f, 0x67, 0xbb, 0xf2, 0xc4, 0x67, 0x12, 0xfe, 0x6d, 0x36, 0xf5, 0xd1, + 0xf6, 0x7b, 0x99, 0x44, 0x7e, 0xcc, 0x84, 0xae, 0xf8, 0xe1, 0x36, 0x89, 0x67, 0x72, 0x5c, 0x71, + 0x63, 0x58, 0xff, 0xc9, 0x12, 0x9f, 0xf2, 0xf3, 0x56, 0xcb, 0xdb, 0x1e, 0xd1, 0xc9, 0x8c, 0x4b, + 0xb8, 0x2c, 0xff, 0xba, 0x62, 0xf2, 0x02, 0xff, 0x35, 0x93, 0x28, 0x14, 0x54, 0xc0, 0x12, 0x42, + 0x56, 0x04, 0x8b, 0x13, 0x04, 0x70, 0x8a, 0x2d, 0x6f, 0x8c, 0x12, 0x7d, 0xce, 0x6a, 0x21, 0xe7, + 0x61, 0x28, 0xd1, 0x84, 0xae, 0xd1, 0x49, 0x74, 0x5c, 0x71, 0xff, 0x4e, 0x25, 0x3a, 0x60, 0xc9, + 0x88, 0x24, 0x3a, 0xb6, 0xbc, 0xf4, 0x79, 0xfc, 0x8a, 0x19, 0x36, 0x21, 0x5a, 0xb5, 0xec, 0x8b, + 0xf0, 0xdb, 0x05, 0xff, 0xa2, 0xe4, 0xf3, 0x96, 0xb7, 0xcd, 0x62, 0xba, 0xfc, 0xa1, 0xf4, 0x1d, + 0x27, 0x43, 0xc4, 0x6d, 0x11, 0xc3, 0x42, 0xe5, 0xf7, 0x85, 0x85, 0x2a, 0x81, 0x59, 0xcb, 0xf6, + 0x90, 0x6b, 0x9b, 0xed, 0xa5, 0xb6, 0xb9, 0xd5, 0x3d, 0x35, 0xd1, 0xf7, 0x12, 0xba, 0x0a, 0x97, + 0x47, 0x17, 0xff, 0xe0, 0xaf, 0x93, 0x9c, 0x14, 0xaf, 0xc5, 0x8f, 0x88, 0x62, 0x35, 0x15, 0x1d, + 0xc5, 0x2a, 0x88, 0x52, 0x05, 0x06, 0x07, 0xb9, 0x96, 0xb5, 0x71, 0x13, 0x86, 0xed, 0xbb, 0x4d, + 0x32, 0x9a, 0x5a, 0x10, 0xc2, 0xf1, 0x37, 0x94, 0x44, 0xab, 0x74, 0x58, 0x10, 0xe6, 0x7b, 0x85, + 0x20, 0xb1, 0x85, 0xca, 0x37, 0x5e, 0xe9, 0x69, 0x7c, 0x60, 0xf2, 0xe4, 0x24, 0x4c, 0x1e, 0x5e, + 0xa8, 0xf2, 0x72, 0x42, 0x95, 0x64, 0xd1, 0x4f, 0xa6, 0xb5, 0x63, 0x38, 0x55, 0x94, 0x07, 0xc7, + 0xfc, 0xa8, 0xb5, 0x9d, 0x0e, 0x32, 0x5d, 0xd3, 0x6e, 0x22, 0xf8, 0xe1, 0xec, 0x28, 0xcc, 0xde, + 0x25, 0x30, 0x69, 0x35, 0x1d, 0xbb, 0x6e, 0x3d, 0xcb, 0xbf, 0x24, 0x2e, 0x3e, 0x58, 0x3a, 0xe1, + 0x48, 0x85, 0xfd, 0xa1, 0x07, 0xff, 0xaa, 0x15, 0x30, 0xd5, 0x34, 0xdd, 0x16, 0x0d, 0xa6, 0x97, + 0xef, 0xb9, 0x90, 0x29, 0xb2, 0xa0, 0xb2, 0xff, 0x8b, 0x1e, 0xfe, 0xad, 0xd6, 0x44, 0x26, 0x16, + 0x7a, 0xa2, 0x72, 0x44, 0x16, 0xb6, 0x18, 0xfe, 0x24, 0xf0, 0x1c, 0x73, 0xc7, 0x45, 0x6d, 0x72, + 0x27, 0x3c, 0xed, 0x21, 0xa6, 0xf4, 0x30, 0x21, 0xe9, 0x34, 0x9f, 0x54, 0xb5, 0x0f, 0x8d, 0x71, + 0x4f, 0xf3, 0xa5, 0xa8, 0x48, 0x5f, 0x32, 0xdf, 0x5e, 0x00, 0xb3, 0xb4, 0x57, 0x63, 0xec, 0x84, + 0xbf, 0x40, 0xae, 0x74, 0xf6, 0xee, 0x47, 0x57, 0x60, 0xfd, 0xe0, 0x63, 0x72, 0x11, 0x28, 0x17, + 0x83, 0xc0, 0x81, 0xf8, 0x31, 0xe9, 0xfe, 0xbb, 0x4f, 0xd7, 0x3c, 0xa5, 0x69, 0xdc, 0xfb, 0xef, + 0xf1, 0xd5, 0xa7, 0x8f, 0xcf, 0x2f, 0x2b, 0x40, 0x29, 0xb5, 0x5a, 0xb0, 0x79, 0x70, 0x28, 0xce, + 0x80, 0x69, 0x5f, 0x67, 0xc2, 0x58, 0x8e, 0x7c, 0x52, 0xd2, 0xc5, 0xcc, 0x80, 0x37, 0xa5, 0xd6, + 0xd8, 0x77, 0x07, 0x62, 0xea, 0x4e, 0x1f, 0x94, 0x5f, 0x9b, 0x60, 0x4a, 0xb3, 0xe0, 0x38, 0x17, + 0xc9, 0x91, 0x97, 0x87, 0x14, 0x90, 0x5f, 0x42, 0x5e, 0x73, 0x7b, 0x44, 0x3a, 0xb3, 0xeb, 0xb6, + 0x7d, 0x9d, 0xd9, 0x77, 0x3f, 0xfd, 0x60, 0x1b, 0xd6, 0x27, 0x6b, 0x9e, 0x90, 0x34, 0xee, 0x28, + 0xcd, 0xb1, 0xb5, 0xa7, 0x0f, 0xce, 0xbf, 0x2a, 0x60, 0x2e, 0x58, 0xe1, 0xa2, 0x98, 0xfc, 0xd2, + 0xc3, 0x6e, 0xdd, 0x12, 0x7e, 0x36, 0x59, 0xa8, 0xb3, 0x80, 0xa7, 0x62, 0xcb, 0x52, 0x5e, 0x58, + 0x4c, 0x10, 0x04, 0x4d, 0x8e, 0xc0, 0x31, 0xcc, 0xe0, 0x15, 0x30, 0x49, 0x08, 0x5a, 0xb4, 0xf6, + 0x88, 0x0b, 0xa0, 0xb0, 0xd0, 0xf8, 0x33, 0x23, 0x59, 0x68, 0xbc, 0x5b, 0x5c, 0x68, 0x94, 0x8c, + 0x5c, 0xec, 0xaf, 0x33, 0x26, 0xf4, 0x89, 0xc1, 0xff, 0x8f, 0x7c, 0x99, 0x31, 0x81, 0x4f, 0xcc, + 0x80, 0xfa, 0xd3, 0x47, 0xf4, 0x13, 0x0d, 0xd6, 0xd9, 0xfa, 0x1b, 0xa3, 0xf0, 0xbf, 0x1d, 0x03, + 0xb9, 0x73, 0xf8, 0xe1, 0x7f, 0x86, 0x37, 0x5b, 0xbd, 0x74, 0x04, 0x41, 0x16, 0x9e, 0x06, 0x72, + 0xb8, 0x7c, 0x36, 0x6d, 0xb9, 0x45, 0x6e, 0x97, 0x16, 0x13, 0xa2, 0x93, 0xff, 0xd4, 0x93, 0xa0, + 0xd0, 0x75, 0x76, 0xdd, 0x26, 0x36, 0x9f, 0xb1, 0xc4, 0xb0, 0xb7, 0xa4, 0xc1, 0x45, 0x85, 0xa2, + 0xe7, 0x47, 0xe7, 0xfa, 0xc9, 0x5d, 0x74, 0xa4, 0x08, 0x17, 0x1d, 0x25, 0xd8, 0x3f, 0x90, 0xa0, + 0x2d, 0x7d, 0x89, 0xf8, 0x5b, 0x72, 0xe7, 0x5f, 0x6b, 0x54, 0xb0, 0x47, 0xb0, 0xe5, 0xa0, 0xe2, + 0x90, 0xd4, 0x71, 0x5b, 0x64, 0x6d, 0x10, 0xcf, 0x7d, 0xac, 0x8e, 0xdb, 0x12, 0x34, 0x8c, 0xe5, + 0xb4, 0x79, 0x81, 0x39, 0x9b, 0x3e, 0x30, 0x4a, 0x74, 0x73, 0x82, 0xd0, 0x1f, 0x08, 0x9d, 0x11, + 0x3a, 0xa1, 0x0e, 0x8d, 0xce, 0x21, 0xb9, 0xa1, 0x7e, 0x44, 0x21, 0x11, 0x2d, 0x7d, 0x23, 0x47, + 0xfe, 0xc2, 0xa2, 0xc4, 0x10, 0xe1, 0x31, 0x58, 0x88, 0xe7, 0x3c, 0x3b, 0x7c, 0x88, 0x6f, 0x91, + 0x75, 0x1c, 0xfd, 0xe3, 0x0e, 0xf1, 0x2d, 0x4b, 0x48, 0xfa, 0x40, 0xbe, 0x8e, 0x5e, 0x10, 0x56, + 0x6a, 0x7a, 0xd6, 0xde, 0x88, 0x35, 0x4d, 0x1c, 0x5e, 0x12, 0x46, 0xf5, 0xdd, 0xc7, 0x21, 0x4a, + 0xe1, 0xb8, 0xa3, 0xfa, 0xca, 0x91, 0x31, 0x86, 0xe3, 0xe8, 0x00, 0x73, 0x8f, 0xad, 0xcd, 0xbc, + 0x81, 0xad, 0x06, 0xa0, 0x83, 0xa3, 0x75, 0x16, 0xcc, 0x70, 0x53, 0x7f, 0xff, 0xe2, 0x19, 0x21, + 0x2d, 0xe9, 0x81, 0xf5, 0x80, 0x65, 0x23, 0x5f, 0x18, 0x48, 0xb0, 0xe0, 0x2b, 0x43, 0xc4, 0x58, + 0xee, 0x75, 0xf3, 0xc7, 0xb0, 0x31, 0x61, 0xf5, 0x87, 0x3c, 0x56, 0x35, 0x11, 0xab, 0x3b, 0x65, + 0xd8, 0x24, 0x37, 0xa6, 0x49, 0xcd, 0x1b, 0xdf, 0x16, 0xc0, 0xa5, 0x0b, 0x70, 0x3d, 0x6d, 0x68, + 0x3a, 0xd2, 0x47, 0xec, 0x8d, 0x0a, 0xbd, 0xdc, 0xa9, 0xb4, 0x67, 0x5a, 0x6d, 0x12, 0x65, 0x60, + 0x04, 0x97, 0x13, 0xff, 0x15, 0x0f, 0xca, 0x39, 0x11, 0x94, 0xfb, 0x64, 0x98, 0x21, 0x50, 0x14, + 0x81, 0xcd, 0x13, 0xf9, 0xc5, 0x71, 0x1a, 0x62, 0xf8, 0xea, 0xde, 0x70, 0x7e, 0xec, 0x3b, 0xbf, + 0x6a, 0xfe, 0x7b, 0x01, 0x48, 0x0f, 0x08, 0x20, 0x69, 0x07, 0xa5, 0x2b, 0x7d, 0xac, 0x5e, 0x46, + 0x87, 0xae, 0x3a, 0x9d, 0x5e, 0x8d, 0x66, 0xe8, 0x62, 0x33, 0x37, 0x45, 0x98, 0xb9, 0x25, 0x3c, + 0xe3, 0x10, 0xba, 0xee, 0xfa, 0xc4, 0x0d, 0x52, 0xa7, 0xdc, 0x88, 0xcf, 0x38, 0x0c, 0xa4, 0x20, + 0x7d, 0x70, 0xfe, 0x49, 0x01, 0x60, 0xd9, 0x75, 0x76, 0x3b, 0x35, 0xb7, 0x85, 0x5c, 0xf8, 0xf7, + 0xe1, 0x64, 0xed, 0xc5, 0x23, 0x98, 0xac, 0xad, 0x03, 0xb0, 0x15, 0x14, 0xce, 0x7a, 0xa3, 0xc7, + 0xc9, 0x4d, 0xcd, 0x42, 0xa2, 0x74, 0xae, 0x0c, 0xf1, 0x9a, 0xdf, 0x67, 0x88, 0x18, 0xc7, 0x8d, + 0x2f, 0x61, 0x71, 0xa3, 0x9c, 0xac, 0xbd, 0x23, 0xc0, 0xda, 0x10, 0xb0, 0xbe, 0xef, 0x00, 0x94, + 0xa4, 0x8f, 0xf9, 0x3f, 0x4f, 0x80, 0x69, 0xba, 0xb5, 0x4a, 0x79, 0xfa, 0x8f, 0x21, 0xe8, 0xbf, + 0x36, 0x02, 0xd0, 0x37, 0xc0, 0x8c, 0x13, 0x96, 0x4e, 0xc7, 0x3f, 0x7e, 0xb1, 0x2c, 0x16, 0x76, + 0x8e, 0x2e, 0x5d, 0x28, 0x06, 0x7e, 0x90, 0x47, 0x5e, 0x17, 0x91, 0xbf, 0x3b, 0x86, 0xdf, 0x5c, + 0x89, 0xa3, 0x84, 0xfe, 0x9d, 0x01, 0xf4, 0x1b, 0x02, 0xf4, 0xa5, 0x83, 0x90, 0x32, 0x86, 0x2b, + 0x0e, 0x14, 0x90, 0x23, 0x27, 0x12, 0x7f, 0x3b, 0xc5, 0xb5, 0x98, 0x53, 0x60, 0x82, 0xa8, 0x6c, + 0x30, 0x47, 0xf4, 0x5f, 0xf1, 0x17, 0x73, 0xd3, 0x43, 0x6e, 0xe0, 0x5d, 0xe2, 0xbf, 0x62, 0x1a, + 0x7c, 0x4f, 0xf0, 0xee, 0xa9, 0x02, 0xdd, 0x34, 0x0e, 0x12, 0x86, 0x9e, 0x40, 0xf2, 0x1c, 0x1f, + 0xd9, 0x19, 0xc5, 0x61, 0x26, 0x90, 0x03, 0x08, 0x49, 0x1f, 0xf8, 0x2f, 0xe4, 0xc0, 0x29, 0xba, + 0x02, 0xb8, 0xe4, 0x3a, 0x3b, 0x3d, 0x37, 0x8a, 0x59, 0x07, 0x97, 0x85, 0x9b, 0xc0, 0x9c, 0x27, + 0xf8, 0xc0, 0x33, 0x99, 0xe8, 0x49, 0x85, 0x7f, 0xc9, 0xfb, 0xbf, 0x3c, 0x53, 0x44, 0x72, 0x21, + 0x86, 0x81, 0x51, 0xb4, 0x27, 0xde, 0x54, 0x91, 0x24, 0x94, 0x5b, 0x50, 0x54, 0x86, 0x5a, 0x5f, + 0x0e, 0x64, 0x2a, 0x2f, 0x23, 0x53, 0xef, 0x0b, 0x64, 0xea, 0x27, 0x04, 0x99, 0x5a, 0x3e, 0x38, + 0x4b, 0xd2, 0x97, 0xad, 0x57, 0x05, 0x9b, 0x78, 0xc1, 0x16, 0xeb, 0x4e, 0x0a, 0x1b, 0xab, 0xbc, + 0xef, 0x58, 0x4e, 0xf0, 0x1d, 0x13, 0xef, 0x00, 0x49, 0xb0, 0x6a, 0x21, 0x52, 0x1d, 0x21, 0x4b, + 0x73, 0x20, 0x6b, 0xf9, 0xd4, 0x65, 0xad, 0xd6, 0x50, 0xeb, 0x12, 0xb1, 0x15, 0x8d, 0x61, 0x1d, + 0x70, 0x0e, 0x14, 0x96, 0xac, 0xb6, 0x87, 0x5c, 0xf8, 0x25, 0xb6, 0x2a, 0xf1, 0xaa, 0x14, 0x07, + 0x80, 0x45, 0x50, 0xd8, 0x24, 0xb5, 0x31, 0x93, 0xf9, 0x56, 0x39, 0xed, 0xa1, 0x14, 0xea, 0xec, + 0xdf, 0xa4, 0x11, 0x11, 0x7b, 0x8a, 0x19, 0xd9, 0x72, 0x46, 0x82, 0x88, 0x88, 0x83, 0x49, 0x18, + 0xcb, 0x65, 0x60, 0x05, 0x1d, 0xed, 0xe0, 0x31, 0xfe, 0x62, 0x7a, 0x08, 0x17, 0x81, 0x62, 0xb5, + 0xba, 0xa4, 0x73, 0x9c, 0xd2, 0xf1, 0x63, 0x52, 0xbf, 0xae, 0x5e, 0x56, 0x51, 0x92, 0xc7, 0xed, + 0xd7, 0x25, 0x45, 0x45, 0xfa, 0x98, 0x7d, 0x8f, 0x38, 0xf5, 0x76, 0xda, 0x66, 0x13, 0x61, 0xea, + 0x53, 0x43, 0x8d, 0xf6, 0x64, 0x39, 0xbf, 0x27, 0xe3, 0xf4, 0x34, 0x7f, 0x00, 0x3d, 0x1d, 0x76, + 0xc9, 0x38, 0xe0, 0x39, 0x69, 0xf8, 0xa1, 0x2d, 0x19, 0xc7, 0x92, 0x31, 0x86, 0xab, 0x5e, 0xfd, + 0xc3, 0xcb, 0x63, 0xd5, 0xd6, 0x61, 0x37, 0xd4, 0x18, 0xb3, 0x46, 0x76, 0x50, 0x79, 0x98, 0x0d, + 0xb5, 0x68, 0x1a, 0xc6, 0x80, 0xd6, 0x1c, 0x43, 0xeb, 0x33, 0x6c, 0x18, 0x4d, 0x79, 0x4f, 0xbb, + 0xeb, 0xb8, 0x5e, 0xb2, 0x3d, 0x6d, 0x4c, 0x9d, 0x4e, 0xfe, 0x4b, 0x7a, 0x48, 0x4e, 0x3c, 0xcb, + 0x3e, 0xaa, 0xe1, 0x33, 0xc1, 0x21, 0xb9, 0x41, 0x04, 0xa4, 0x0f, 0xef, 0x9b, 0x0f, 0x69, 0xf0, + 0x1c, 0x56, 0x1d, 0x99, 0x0e, 0x8c, 0x6c, 0xe8, 0x1c, 0x46, 0x1d, 0xa3, 0x69, 0x48, 0x1f, 0xaf, + 0x6f, 0x71, 0x03, 0xe7, 0x1b, 0xc7, 0x38, 0x70, 0xfa, 0x9a, 0x99, 0x1f, 0x52, 0x33, 0x87, 0xdd, + 0xab, 0x63, 0xbc, 0x1e, 0xdd, 0x80, 0x39, 0xcc, 0x5e, 0x5d, 0x0c, 0x11, 0xe9, 0x23, 0xfe, 0x26, + 0x05, 0xe4, 0xeb, 0xe3, 0x1f, 0x2f, 0x87, 0x9d, 0x8b, 0x10, 0x5e, 0xd5, 0x47, 0x36, 0x5c, 0x0e, + 0x33, 0x17, 0x89, 0x24, 0x61, 0x0c, 0x97, 0x1d, 0x1c, 0x05, 0x33, 0x64, 0x49, 0xc4, 0xdf, 0x12, + 0xff, 0x16, 0x1b, 0x35, 0x5f, 0x9f, 0xa2, 0xae, 0x3e, 0x1d, 0x4c, 0xfa, 0xfb, 0x66, 0x6c, 0xe4, + 0x9c, 0x97, 0xd3, 0xcf, 0x60, 0xdf, 0x2d, 0xf8, 0xff, 0x40, 0x8e, 0x2b, 0x23, 0xdf, 0x57, 0x1f, + 0xd6, 0x71, 0xe5, 0x50, 0xf7, 0xd6, 0xff, 0x22, 0x1c, 0x51, 0xff, 0x63, 0x7a, 0x98, 0xf7, 0xee, + 0xb9, 0xe7, 0xfa, 0xec, 0xb9, 0x7f, 0x98, 0xc7, 0xb2, 0x2e, 0x62, 0x79, 0x8f, 0x2c, 0x0b, 0x47, + 0x38, 0xd6, 0xbe, 0x2b, 0x80, 0xf3, 0x9c, 0x00, 0xe7, 0xc2, 0x81, 0x68, 0x19, 0xc3, 0x21, 0xd5, + 0x5c, 0x38, 0xe6, 0x7e, 0x34, 0x45, 0x3d, 0xee, 0x39, 0x01, 0x93, 0xdb, 0x77, 0x02, 0x46, 0xd0, + 0xf4, 0xfc, 0x01, 0x35, 0xfd, 0xa3, 0xbc, 0x74, 0x18, 0xa2, 0x74, 0x3c, 0x4d, 0x1e, 0x91, 0xd1, + 0x8d, 0xcc, 0xef, 0x0e, 0xc4, 0xe3, 0xbc, 0x20, 0x1e, 0xe5, 0x83, 0x11, 0x93, 0xbe, 0x7c, 0xfc, + 0xa9, 0x3f, 0xa1, 0x3d, 0x64, 0x7d, 0x1f, 0x76, 0xab, 0x58, 0x60, 0xe2, 0xc8, 0x46, 0xee, 0x61, + 0xb6, 0x8a, 0x07, 0x51, 0x32, 0x86, 0xf8, 0x77, 0xb3, 0x60, 0x9a, 0xd0, 0x74, 0xde, 0x6a, 0x6d, + 0x21, 0x0f, 0xfe, 0x06, 0xf5, 0x27, 0xf5, 0xa3, 0x8d, 0x8e, 0x28, 0x24, 0x54, 0xd4, 0xd9, 0xe4, + 0xa4, 0x1e, 0x1d, 0x94, 0xc8, 0x79, 0x8e, 0xc0, 0x71, 0x47, 0xad, 0x1c, 0x48, 0x41, 0xfa, 0x90, + 0x7d, 0x90, 0xba, 0xdb, 0xac, 0x9a, 0x57, 0x9c, 0x5d, 0x0f, 0x3e, 0x67, 0x04, 0x1d, 0xf4, 0x02, + 0x28, 0xb4, 0x49, 0x69, 0xec, 0x08, 0x4d, 0xfc, 0x74, 0x87, 0xb1, 0x80, 0xd6, 0xaf, 0xb3, 0x3f, + 0x93, 0x9e, 0xa3, 0x09, 0xf9, 0x48, 0xcb, 0x19, 0xf7, 0x39, 0x9a, 0x01, 0xf5, 0x8f, 0xe5, 0x5e, + 0xa3, 0x49, 0x5c, 0xbb, 0xb5, 0x63, 0x79, 0x23, 0x8a, 0xb6, 0xd1, 0xc6, 0x65, 0xf9, 0xd1, 0x36, + 0xc8, 0x4b, 0xd2, 0xd3, 0xbd, 0x1c, 0x57, 0xf0, 0xef, 0xe3, 0x3e, 0xdd, 0x1b, 0x5f, 0x7d, 0xfa, + 0x98, 0xfc, 0x17, 0xaa, 0x59, 0xe7, 0xa8, 0xa3, 0x74, 0x8a, 0x3e, 0xd8, 0x43, 0x2b, 0x0b, 0x25, + 0xed, 0xf0, 0x94, 0xa5, 0x6f, 0xfd, 0xe9, 0x03, 0xf3, 0xc9, 0xd3, 0x20, 0xbf, 0x88, 0x2e, 0xec, + 0x6e, 0xc1, 0xbb, 0xc1, 0xa4, 0xe1, 0x22, 0x54, 0xb1, 0x37, 0x1d, 0xcc, 0x5d, 0x0f, 0x3f, 0xfb, + 0x90, 0xb0, 0x37, 0x8c, 0xc7, 0x36, 0x32, 0x5b, 0xe1, 0x59, 0x41, 0xff, 0x15, 0xbe, 0x34, 0x0b, + 0x72, 0x75, 0xcf, 0xf4, 0xe0, 0x54, 0x80, 0x2d, 0x7c, 0x0e, 0x8f, 0xc5, 0xdd, 0x22, 0x16, 0x37, + 0x09, 0xbc, 0x20, 0x14, 0xcc, 0xe3, 0xff, 0x23, 0x00, 0x80, 0x60, 0xf2, 0xc1, 0xae, 0x63, 0xe3, + 0x1c, 0xfe, 0x71, 0x55, 0xff, 0x1d, 0xbe, 0x32, 0x60, 0xf7, 0xbd, 0x02, 0xbb, 0x1f, 0x23, 0x57, + 0xc5, 0x18, 0x56, 0xda, 0xb2, 0x60, 0x0a, 0xb3, 0x76, 0x05, 0x99, 0xad, 0x2e, 0x7c, 0x64, 0x28, + 0xfc, 0x11, 0x6c, 0x86, 0xef, 0x97, 0x0e, 0x80, 0x4a, 0x5b, 0x15, 0x14, 0x1e, 0xed, 0xd1, 0xe1, + 0x6f, 0xfe, 0x67, 0xc5, 0xc0, 0x31, 0xb7, 0x81, 0x9c, 0x65, 0x6f, 0x3a, 0xcc, 0xbf, 0xf0, 0xda, + 0x88, 0xb2, 0xb1, 0x4c, 0xe8, 0x24, 0xa3, 0x64, 0x74, 0xd4, 0x78, 0xb2, 0xc6, 0x72, 0xd1, 0x60, + 0x0e, 0xd7, 0x0e, 0xff, 0xaf, 0x81, 0xcc, 0x56, 0x55, 0x90, 0xeb, 0x98, 0xde, 0x36, 0xab, 0x9a, + 0x3c, 0x63, 0x1b, 0x79, 0xd7, 0x36, 0x6d, 0xc7, 0xbe, 0xb2, 0x63, 0x3d, 0x2b, 0xb8, 0xcf, 0x58, + 0x48, 0xc3, 0x94, 0x6f, 0x21, 0x1b, 0xb9, 0xa6, 0x87, 0xea, 0x7b, 0x5b, 0x64, 0x8e, 0x35, 0xa9, + 0xf3, 0x49, 0x89, 0xe5, 0x1f, 0x53, 0x1c, 0x2d, 0xff, 0x9b, 0x56, 0x1b, 0x91, 0xa8, 0x5a, 0x4c, + 0xfe, 0xfd, 0xf7, 0x44, 0xf2, 0xdf, 0xa7, 0x8a, 0xf4, 0xd1, 0xf8, 0x7e, 0x16, 0xcc, 0xd4, 0xb1, + 0xc0, 0xd5, 0x77, 0x77, 0x76, 0x4c, 0xf7, 0x0a, 0xbc, 0x21, 0x44, 0x85, 0x13, 0xcd, 0x8c, 0xe8, + 0x97, 0xf2, 0x11, 0xe9, 0xab, 0xbc, 0x99, 0x6a, 0x73, 0x35, 0x24, 0xd6, 0x83, 0xc7, 0x83, 0x3c, + 0x16, 0x6f, 0xdf, 0xe3, 0x32, 0x56, 0x11, 0x68, 0x4e, 0xc9, 0xe8, 0x63, 0x03, 0x69, 0x1b, 0x43, + 0xe4, 0x93, 0x2c, 0x38, 0x5a, 0xf7, 0xcc, 0xe6, 0xc5, 0x65, 0xc7, 0x75, 0x76, 0x3d, 0xcb, 0x46, + 0x5d, 0xf8, 0x88, 0x10, 0x01, 0x5f, 0xfe, 0x33, 0xa1, 0xfc, 0xc3, 0x1f, 0x66, 0x64, 0x47, 0xd1, + 0xa0, 0x5b, 0xe5, 0x8b, 0x8f, 0x08, 0x26, 0x26, 0x37, 0x2e, 0xca, 0x94, 0x38, 0x96, 0x53, 0x12, + 0x45, 0xed, 0x72, 0xc7, 0x71, 0xbd, 0x55, 0xa7, 0x69, 0xb6, 0xbb, 0x9e, 0xe3, 0x22, 0x58, 0x8b, + 0xe5, 0x1a, 0xee, 0x61, 0x5a, 0x4e, 0x33, 0x1c, 0x1c, 0xd9, 0x1b, 0x2f, 0x76, 0x8a, 0x28, 0xe3, + 0x1f, 0x94, 0xde, 0x65, 0xa4, 0x5c, 0xe9, 0xa5, 0x28, 0x42, 0xce, 0xfb, 0x75, 0x69, 0xc9, 0x0e, + 0xb6, 0xc8, 0xed, 0x3c, 0x4a, 0x11, 0x35, 0x86, 0xa5, 0xf2, 0x2c, 0x98, 0xad, 0xef, 0x5e, 0x08, + 0x0a, 0xe9, 0xf2, 0x46, 0xc8, 0xab, 0xa5, 0x23, 0x8a, 0x30, 0xc1, 0xe3, 0x0b, 0x8a, 0xe0, 0xef, + 0x8d, 0x60, 0xb6, 0xcb, 0x67, 0x63, 0x78, 0x8b, 0x89, 0x92, 0x91, 0x44, 0x06, 0xd7, 0x9a, 0x3e, + 0x03, 0xdf, 0x9d, 0x05, 0xb3, 0xb5, 0x0e, 0xb2, 0x51, 0x8b, 0x7a, 0x41, 0x0a, 0x0c, 0x7c, 0x69, + 0x42, 0x06, 0x0a, 0x05, 0x45, 0x30, 0x30, 0xf4, 0x58, 0x5e, 0xf4, 0x99, 0x17, 0x26, 0x24, 0x62, + 0x5c, 0x5c, 0x6d, 0xe9, 0x33, 0xee, 0x8b, 0x59, 0x30, 0xad, 0xef, 0xda, 0xeb, 0xae, 0x83, 0x47, + 0x63, 0x17, 0xde, 0x13, 0x76, 0x10, 0xb7, 0x82, 0x63, 0xad, 0x5d, 0x97, 0xac, 0x3f, 0x55, 0xec, + 0x3a, 0x6a, 0x3a, 0x76, 0xab, 0x4b, 0xda, 0x91, 0xd7, 0xf7, 0x7f, 0xb8, 0x2b, 0xf7, 0xd0, 0xd7, + 0x95, 0x0c, 0xfc, 0x05, 0xe9, 0xb0, 0x44, 0xb4, 0xf1, 0x5c, 0xd5, 0xf2, 0x3d, 0x81, 0x64, 0xf0, + 0xa1, 0x41, 0x35, 0xa4, 0xcf, 0xdc, 0xcf, 0x64, 0x81, 0x5a, 0x6a, 0x36, 0x9d, 0x5d, 0xdb, 0xab, + 0xa3, 0x36, 0x6a, 0x7a, 0x86, 0x6b, 0x36, 0x11, 0x6f, 0x3f, 0x17, 0x81, 0xd2, 0xb2, 0x5c, 0xd6, + 0x07, 0xe3, 0x47, 0xc6, 0xc7, 0x97, 0x4a, 0xef, 0x38, 0xd2, 0x56, 0xee, 0xaf, 0x25, 0x01, 0x3b, + 0xe5, 0xf6, 0x15, 0x25, 0x2b, 0x1a, 0xc3, 0xcd, 0x3b, 0x59, 0x90, 0x5b, 0xb7, 0xec, 0x2d, 0x3e, + 0x7e, 0xd3, 0x71, 0x6c, 0xfd, 0xb4, 0xd0, 0x65, 0x26, 0x9f, 0xf4, 0x45, 0xbd, 0x1d, 0x1c, 0xb7, + 0x77, 0x77, 0x2e, 0x20, 0xb7, 0xb6, 0x49, 0xc6, 0x86, 0xae, 0xe1, 0xd4, 0x91, 0x4d, 0x4d, 0xa7, + 0xbc, 0xde, 0xf7, 0x9b, 0x68, 0x38, 0x48, 0x98, 0xbc, 0x98, 0x92, 0x08, 0x5e, 0x07, 0x44, 0x65, + 0x39, 0xa2, 0x12, 0x19, 0xbb, 0x7d, 0x0a, 0x4f, 0x9f, 0xbf, 0x5f, 0xcb, 0x82, 0x89, 0x35, 0xe4, + 0xb9, 0x56, 0xb3, 0x0b, 0x3f, 0x8f, 0x07, 0x26, 0xe4, 0xad, 0x9b, 0xae, 0xb9, 0x83, 0x3c, 0xe4, + 0x76, 0xa1, 0x16, 0x32, 0x1d, 0x82, 0xc9, 0x4e, 0xdb, 0xf4, 0x36, 0x1d, 0x77, 0x87, 0x49, 0x70, + 0xf0, 0x8e, 0x2d, 0x86, 0x3d, 0xe4, 0x76, 0x43, 0xb2, 0xfc, 0x57, 0x26, 0xe0, 0xf2, 0xf6, 0x19, + 0x23, 0x65, 0x5e, 0x20, 0xe3, 0x40, 0xf6, 0x99, 0x4c, 0x89, 0x63, 0xb9, 0x5d, 0x46, 0x59, 0x75, + 0xb6, 0xe0, 0xcb, 0x15, 0x90, 0x23, 0x92, 0xf7, 0xa6, 0x8c, 0x30, 0xa9, 0xd8, 0x41, 0xdd, 0xae, + 0xb9, 0x85, 0xfc, 0x49, 0x05, 0x7b, 0x55, 0xef, 0x04, 0xf9, 0x36, 0xda, 0x43, 0x6d, 0x42, 0xc6, + 0xdc, 0xed, 0x37, 0x08, 0x2d, 0x5b, 0x75, 0xb6, 0xe6, 0x71, 0x59, 0xf3, 0xac, 0x9c, 0xf9, 0x55, + 0x9c, 0x55, 0xa7, 0x7f, 0x9c, 0x7d, 0x3a, 0xc8, 0x93, 0x77, 0x75, 0x0a, 0xe4, 0x17, 0xb5, 0x85, + 0x8d, 0xe5, 0xe2, 0x11, 0xfc, 0xe8, 0xd3, 0x37, 0x05, 0xf2, 0x4b, 0x25, 0xa3, 0xb4, 0x5a, 0xcc, + 0xe2, 0x76, 0x54, 0xaa, 0x4b, 0xb5, 0xa2, 0x82, 0x13, 0xd7, 0x4b, 0xd5, 0x4a, 0xb9, 0x98, 0x53, + 0xa7, 0xc1, 0xc4, 0xf9, 0x92, 0x5e, 0xad, 0x54, 0x97, 0x8b, 0x79, 0xf8, 0x0f, 0x3c, 0x7e, 0x77, + 0x89, 0xf8, 0xdd, 0x18, 0x45, 0x53, 0x3f, 0xc8, 0x7e, 0x3d, 0x80, 0xec, 0x1e, 0x01, 0xb2, 0x1f, + 0x93, 0x29, 0x64, 0x0c, 0x28, 0x65, 0xc1, 0xc4, 0xba, 0xeb, 0x34, 0x51, 0xb7, 0x0b, 0x7f, 0x35, + 0x0b, 0x0a, 0x65, 0xd3, 0x6e, 0xa2, 0x36, 0xbc, 0x26, 0x84, 0x8a, 0x7a, 0x07, 0x65, 0x82, 0x03, + 0x02, 0xff, 0xc4, 0x73, 0xe6, 0x3e, 0x91, 0x33, 0xb7, 0x08, 0x8d, 0x62, 0xe5, 0xce, 0xd3, 0x32, + 0x23, 0xf8, 0xf3, 0x9a, 0x80, 0x3f, 0x65, 0x81, 0x3f, 0xb7, 0xc9, 0x17, 0x95, 0x3e, 0x97, 0xbe, + 0x9b, 0x01, 0xc7, 0x97, 0x91, 0x8d, 0x5c, 0xab, 0x49, 0x89, 0xf7, 0xdb, 0x7f, 0x8f, 0xd8, 0xfe, + 0x47, 0x0b, 0x44, 0xf7, 0xfb, 0x43, 0x6c, 0xfc, 0xab, 0x82, 0xc6, 0xdf, 0x27, 0x34, 0xfe, 0x56, + 0xc9, 0x72, 0xc6, 0x70, 0x95, 0xec, 0x14, 0x98, 0xa9, 0x3a, 0x9e, 0xb5, 0x69, 0x35, 0xe9, 0x56, + 0xf2, 0xcb, 0x14, 0x90, 0x5b, 0xb5, 0xba, 0x1e, 0x7f, 0x26, 0xfd, 0x0c, 0x98, 0xb6, 0xec, 0x66, + 0x7b, 0xb7, 0x85, 0x74, 0x64, 0x52, 0x59, 0x99, 0xd4, 0xf9, 0xa4, 0x70, 0x85, 0x1e, 0x93, 0xa5, + 0xf8, 0x2b, 0xf4, 0x9f, 0x94, 0xb6, 0xa6, 0x78, 0x12, 0xc8, 0x89, 0xef, 0x88, 0x21, 0xa9, 0x04, + 0x66, 0x6d, 0x2e, 0xab, 0x7f, 0x08, 0xbd, 0x37, 0x86, 0x33, 0x5f, 0x9c, 0x2e, 0xfe, 0x01, 0xdf, + 0x2b, 0x65, 0x7c, 0x0d, 0x22, 0x28, 0x19, 0x32, 0x4b, 0xc9, 0x91, 0x51, 0x55, 0x30, 0x57, 0xa9, + 0x1a, 0x9a, 0x5e, 0x2d, 0xad, 0xb2, 0x2c, 0x0a, 0xfc, 0x7e, 0x16, 0xe4, 0x75, 0xd4, 0x69, 0x5f, + 0xe1, 0x83, 0x74, 0x32, 0x7f, 0xaf, 0x4c, 0xe0, 0xef, 0xa5, 0x2e, 0x01, 0x60, 0x36, 0x71, 0xc5, + 0xe4, 0x36, 0x92, 0x6c, 0xdf, 0xd0, 0x71, 0x42, 0x03, 0x4b, 0x41, 0x6e, 0x9d, 0xfb, 0x13, 0xbe, + 0x40, 0x7a, 0x01, 0x48, 0x28, 0x8d, 0x50, 0x18, 0xd1, 0x1d, 0xbc, 0x4f, 0x6a, 0xcd, 0x66, 0x60, + 0x71, 0x87, 0xc3, 0xfe, 0x2f, 0x67, 0x41, 0xce, 0xc0, 0x33, 0x32, 0x6e, 0x72, 0xf6, 0x89, 0xe1, + 0x64, 0x1c, 0x17, 0x13, 0x21, 0xe3, 0xf7, 0x82, 0x19, 0x5e, 0x62, 0xd9, 0x8e, 0x47, 0xac, 0x88, + 0x0b, 0x3f, 0x0c, 0x23, 0xe1, 0x7d, 0xc8, 0x39, 0x1c, 0x16, 0x7f, 0xe5, 0x16, 0x00, 0xd6, 0x10, + 0xb6, 0x6b, 0xbb, 0xdb, 0x56, 0x07, 0xfe, 0x57, 0x05, 0x4c, 0x2d, 0x23, 0xaf, 0xee, 0x99, 0xde, + 0x6e, 0xb7, 0x67, 0xd5, 0xd2, 0x76, 0xca, 0x66, 0x73, 0x1b, 0xb1, 0xee, 0xc8, 0x7f, 0x85, 0xef, + 0x54, 0x64, 0xb7, 0x05, 0xc3, 0x7a, 0xe6, 0x83, 0x3a, 0x22, 0x30, 0x79, 0x2c, 0xc8, 0xb5, 0x4c, + 0xcf, 0x64, 0x58, 0x5c, 0xd3, 0x83, 0x45, 0x58, 0x90, 0x4e, 0xb2, 0xc1, 0xdf, 0xcd, 0xca, 0xec, + 0x0b, 0x4a, 0xd4, 0x9f, 0x0c, 0x84, 0xf7, 0x66, 0x86, 0x40, 0xe1, 0x18, 0x98, 0xad, 0xd6, 0x8c, + 0xc6, 0x6a, 0x6d, 0x79, 0x59, 0xc3, 0xa9, 0x45, 0x45, 0x3d, 0x09, 0xd4, 0xf5, 0xd2, 0x03, 0x6b, + 0x5a, 0xd5, 0x68, 0x54, 0x6b, 0x8b, 0x1a, 0xfb, 0x33, 0xa7, 0x1e, 0x05, 0xd3, 0xe5, 0x52, 0x79, + 0xc5, 0x4f, 0xc8, 0xab, 0xa7, 0xc0, 0xf1, 0x35, 0x6d, 0x6d, 0x41, 0xd3, 0xeb, 0x2b, 0x95, 0xf5, + 0x06, 0x2e, 0x66, 0xa9, 0xb6, 0x51, 0x5d, 0x2c, 0x16, 0x54, 0x08, 0x4e, 0x72, 0x5f, 0xce, 0xeb, + 0xb5, 0xea, 0x72, 0xa3, 0x6e, 0x94, 0x0c, 0xad, 0x38, 0xa1, 0x5e, 0x05, 0x8e, 0x96, 0x4b, 0x55, + 0x92, 0xbd, 0x5c, 0xab, 0x56, 0xb5, 0xb2, 0x51, 0x9c, 0x84, 0x3f, 0xcc, 0x81, 0xe9, 0x4a, 0xb7, + 0x6a, 0xee, 0xa0, 0x73, 0x66, 0xdb, 0x6a, 0xc1, 0x5f, 0xe0, 0xac, 0xc9, 0x1b, 0xc1, 0xac, 0x4b, + 0x1f, 0x51, 0xcb, 0xb0, 0x10, 0x45, 0x73, 0x56, 0x17, 0x13, 0xd5, 0x93, 0xa0, 0x60, 0x93, 0x02, + 0x18, 0x6b, 0xd8, 0x9b, 0xba, 0x00, 0x00, 0x7d, 0x32, 0xc2, 0x7b, 0xf1, 0xce, 0xf6, 0x6a, 0x93, + 0xb9, 0x83, 0xba, 0xc8, 0xdd, 0xb3, 0x9a, 0xc8, 0xcf, 0xa9, 0x73, 0x7f, 0xc1, 0xaf, 0x28, 0xb2, + 0xcb, 0x84, 0x1c, 0xa8, 0x5c, 0x73, 0x22, 0x7a, 0xc3, 0x9f, 0x57, 0x64, 0x16, 0xf9, 0xa4, 0x8a, + 0x4c, 0x26, 0x29, 0x2f, 0xca, 0x0e, 0x21, 0x29, 0xb3, 0x60, 0xca, 0xa8, 0xd5, 0x1a, 0xf5, 0x95, + 0x9a, 0x6e, 0x14, 0x15, 0x75, 0x06, 0x4c, 0xe2, 0xd7, 0xd5, 0x5a, 0x75, 0xb9, 0x98, 0x53, 0x4f, + 0x80, 0x63, 0x2b, 0xa5, 0x7a, 0xa3, 0x52, 0x3d, 0x57, 0x5a, 0xad, 0x2c, 0x36, 0xca, 0x2b, 0x25, + 0xbd, 0x5e, 0xcc, 0xab, 0xd7, 0x80, 0x13, 0x46, 0x45, 0xd3, 0x1b, 0x4b, 0x5a, 0xc9, 0xd8, 0xd0, + 0xb5, 0x7a, 0xa3, 0x5a, 0x6b, 0x54, 0x4b, 0x6b, 0x5a, 0xb1, 0x80, 0xd5, 0x9f, 0x7c, 0x0a, 0xc5, + 0x66, 0x62, 0xbf, 0x30, 0x4e, 0x46, 0x08, 0xe3, 0x54, 0xaf, 0x30, 0x02, 0x5e, 0xac, 0x74, 0xad, + 0xae, 0xe9, 0xe7, 0xb4, 0xe2, 0x74, 0x3f, 0x59, 0x9b, 0x51, 0x8f, 0x83, 0x22, 0xa6, 0xa1, 0x51, + 0xa9, 0xfb, 0x39, 0x17, 0x8b, 0xb3, 0xf0, 0xa3, 0x05, 0x70, 0x52, 0x47, 0x5b, 0x56, 0xd7, 0x43, + 0xee, 0xba, 0x79, 0x65, 0x07, 0xd9, 0x9e, 0xdf, 0xc9, 0xff, 0xaf, 0xc4, 0xc2, 0xb8, 0x06, 0x66, + 0x3b, 0xb4, 0x8c, 0x35, 0xe4, 0x6d, 0x3b, 0x2d, 0x36, 0x0a, 0x3f, 0x3a, 0xb2, 0xe7, 0x98, 0x5f, + 0xe7, 0xb3, 0xeb, 0xe2, 0xdf, 0x9c, 0x6c, 0x2b, 0x31, 0xb2, 0x9d, 0x1b, 0x46, 0xb6, 0xd5, 0xeb, + 0xc0, 0xd4, 0x6e, 0x17, 0xb9, 0xda, 0x8e, 0x69, 0xb5, 0xfd, 0x7b, 0xcd, 0x82, 0x04, 0xf8, 0xb6, + 0x9c, 0xac, 0xe3, 0x29, 0xd7, 0x96, 0xfe, 0x6c, 0x8c, 0xe8, 0x5b, 0x4f, 0x03, 0xc0, 0x1a, 0xbb, + 0xe1, 0xb6, 0x99, 0xb0, 0x72, 0x29, 0x98, 0xbe, 0x0b, 0x56, 0xbb, 0x6d, 0xd9, 0x5b, 0xc1, 0xf2, + 0x7d, 0x98, 0x00, 0x5f, 0xa4, 0xc8, 0x38, 0xa2, 0x26, 0xa5, 0x2d, 0x99, 0x36, 0xbd, 0x20, 0x3b, + 0xe6, 0x7e, 0x77, 0xbf, 0xea, 0x14, 0xd4, 0x22, 0x98, 0x21, 0x69, 0x4c, 0x03, 0x8b, 0x13, 0xb8, + 0x0f, 0xf6, 0x8b, 0x5b, 0xd3, 0x8c, 0x95, 0xda, 0x62, 0xf0, 0x6d, 0x12, 0x17, 0x89, 0x89, 0x29, + 0x55, 0x1f, 0x20, 0xda, 0x38, 0xa5, 0x3e, 0x02, 0x5c, 0xc3, 0x75, 0xd8, 0xa5, 0x55, 0x5d, 0x2b, + 0x2d, 0x3e, 0xd0, 0xd0, 0x9e, 0x59, 0xa9, 0x1b, 0x75, 0x51, 0xb9, 0x7c, 0x3d, 0x9a, 0xc6, 0xf4, + 0x6a, 0x6b, 0xa5, 0xca, 0x2a, 0xeb, 0xdf, 0x97, 0x6a, 0xfa, 0x5a, 0xc9, 0x28, 0xce, 0xc0, 0x97, + 0x2b, 0xa0, 0xb8, 0x8c, 0xbc, 0x75, 0xc7, 0xf5, 0xcc, 0xf6, 0xaa, 0x65, 0x5f, 0xdc, 0x70, 0xdb, + 0xbc, 0xcd, 0xf4, 0xaf, 0xd2, 0xa7, 0x6d, 0xc5, 0x21, 0x52, 0x28, 0x30, 0x7a, 0x61, 0xbb, 0x43, + 0xb2, 0x85, 0xc2, 0x14, 0x26, 0xc0, 0x9f, 0xc9, 0xca, 0x9c, 0xae, 0x95, 0xaf, 0x35, 0x99, 0x9c, + 0x3c, 0x7b, 0xdc, 0xe3, 0x73, 0x1f, 0xd4, 0x0a, 0xf0, 0xa1, 0x1c, 0x98, 0x5c, 0xb2, 0x6c, 0xb3, + 0x6d, 0x3d, 0x4b, 0x08, 0x19, 0x17, 0xf6, 0x31, 0x99, 0x98, 0x3e, 0x26, 0x3b, 0xd4, 0xf8, 0xf9, + 0x2b, 0x8a, 0xec, 0x16, 0x06, 0xc7, 0x7b, 0x9f, 0xc8, 0x88, 0xc1, 0xf3, 0x8f, 0xb3, 0x32, 0x9b, + 0x14, 0x83, 0xcb, 0x4b, 0x86, 0xe1, 0xc7, 0x7f, 0x34, 0x6c, 0xac, 0x1e, 0xfd, 0x9e, 0xec, 0x27, + 0x0a, 0x53, 0xf0, 0xaf, 0x14, 0x00, 0x97, 0x91, 0x77, 0x0e, 0xb9, 0xc1, 0x54, 0x80, 0xf4, 0xfa, + 0xcc, 0xde, 0xe6, 0x54, 0xf6, 0x4d, 0x3c, 0x80, 0xe7, 0x45, 0x00, 0x4b, 0x31, 0xca, 0x13, 0x51, + 0x74, 0x84, 0xf2, 0x56, 0x40, 0xa1, 0x4b, 0xbe, 0x33, 0x31, 0x7b, 0x7c, 0xf4, 0x70, 0x49, 0x0a, + 0xe3, 0x4b, 0xa7, 0x05, 0xeb, 0xac, 0x00, 0xf8, 0xbd, 0x60, 0x12, 0xf4, 0xe3, 0x82, 0x74, 0x2c, + 0x1d, 0x98, 0xd8, 0x64, 0xf2, 0xe2, 0xa6, 0x2b, 0x2e, 0xfd, 0xec, 0x1b, 0xf8, 0x85, 0x1c, 0x38, + 0xde, 0xaf, 0x39, 0xfc, 0xcd, 0x72, 0xc7, 0x41, 0x1e, 0x91, 0x11, 0x9f, 0x2a, 0x3b, 0x7d, 0x51, + 0x9f, 0x00, 0x4e, 0xb0, 0x2d, 0xd4, 0x0b, 0xc8, 0x70, 0xaa, 0xe8, 0x52, 0xb7, 0x8d, 0x3c, 0x0f, + 0xb9, 0xa4, 0x65, 0x93, 0x7a, 0xff, 0x8f, 0xf0, 0x1f, 0x15, 0x59, 0x67, 0xf5, 0x01, 0xfc, 0x8e, + 0xd0, 0xf4, 0xe7, 0x2b, 0x32, 0xee, 0xe7, 0xc9, 0xca, 0x4e, 0x86, 0xe2, 0xf3, 0xc6, 0x3d, 0xc2, + 0xf7, 0x1f, 0x5a, 0x89, 0xce, 0xd3, 0x74, 0x7f, 0x84, 0x3e, 0xa7, 0xe9, 0x95, 0xa5, 0x8a, 0x86, + 0xc7, 0xfb, 0x13, 0xe0, 0x58, 0xf8, 0x6d, 0xf1, 0x81, 0x46, 0x5d, 0xab, 0x1a, 0xc5, 0x49, 0xdc, + 0x81, 0xd0, 0xe4, 0xa5, 0x52, 0x65, 0x55, 0x5b, 0x6c, 0x18, 0x35, 0xfc, 0x65, 0x71, 0xb8, 0x31, + 0x1f, 0x3e, 0x27, 0x07, 0x8e, 0x12, 0xde, 0x5e, 0x21, 0x5c, 0xc5, 0x4c, 0xe9, 0xf1, 0x65, 0x09, + 0x00, 0x9a, 0xa2, 0xec, 0x85, 0x9f, 0x96, 0xbe, 0x35, 0x8c, 0x83, 0xb0, 0xa7, 0x8e, 0x08, 0xc9, + 0xf8, 0x6e, 0x56, 0xe6, 0x04, 0xa8, 0x74, 0xb1, 0xc9, 0x84, 0xe2, 0x5f, 0xc6, 0x3d, 0x14, 0x44, + 0x83, 0x4f, 0xcc, 0xbf, 0x32, 0xf9, 0xf9, 0x99, 0xeb, 0x15, 0x9d, 0x88, 0xc3, 0x1c, 0x00, 0x24, + 0x85, 0x48, 0x10, 0x95, 0x83, 0xbe, 0x03, 0x49, 0x94, 0x1c, 0x94, 0xca, 0x46, 0xe5, 0x9c, 0x16, + 0x25, 0x07, 0x9f, 0x52, 0xc0, 0xe4, 0x32, 0xf2, 0xf0, 0x64, 0xa7, 0x0b, 0x9f, 0x2a, 0xb1, 0x30, + 0x83, 0xed, 0x0b, 0x72, 0x5d, 0x72, 0x30, 0x3f, 0xa7, 0x6f, 0xf0, 0xb9, 0xc3, 0xd8, 0x06, 0x7e, + 0xd5, 0x11, 0x03, 0xc9, 0x93, 0x41, 0xde, 0xc3, 0x9f, 0xd9, 0xfa, 0xf0, 0x23, 0x23, 0xc7, 0x11, + 0x5c, 0xc8, 0xa2, 0xe9, 0x99, 0x3a, 0xcd, 0xcf, 0x0d, 0x1b, 0x92, 0x46, 0x45, 0x04, 0x21, 0x3f, + 0x8a, 0x86, 0xe1, 0x3f, 0x28, 0xe0, 0x04, 0xd5, 0x8f, 0x52, 0xa7, 0x53, 0xf7, 0x1c, 0x17, 0xe9, + 0xa8, 0x89, 0xac, 0x8e, 0xd7, 0xb3, 0xf0, 0xe6, 0xd2, 0x54, 0x7f, 0x67, 0x8f, 0xbd, 0xc2, 0x37, + 0x28, 0xb2, 0x31, 0x0e, 0xf7, 0xe9, 0x63, 0x4f, 0x7d, 0x11, 0xca, 0xfe, 0xe1, 0xac, 0x4c, 0xd4, + 0xc2, 0x84, 0x85, 0x27, 0x03, 0xea, 0x03, 0x87, 0x00, 0x94, 0xbf, 0xa4, 0xa2, 0x6b, 0x65, 0xad, + 0xb2, 0x8e, 0x07, 0x81, 0xeb, 0xc1, 0xb5, 0xeb, 0x1b, 0x7a, 0x79, 0xa5, 0x54, 0xd7, 0x1a, 0xba, + 0xb6, 0x5c, 0xa9, 0x1b, 0x7a, 0xc9, 0xa8, 0xd4, 0x7c, 0x02, 0x26, 0xd4, 0xeb, 0xc0, 0xa9, 0xfa, + 0xc6, 0x42, 0xbd, 0xac, 0x57, 0xd6, 0x49, 0xba, 0xae, 0x55, 0xb5, 0xf3, 0xec, 0xeb, 0x24, 0x7c, + 0x7f, 0x11, 0x4c, 0x63, 0xcb, 0xbc, 0x4e, 0x0d, 0x76, 0xf8, 0xcd, 0x1c, 0x98, 0xd6, 0x51, 0xd7, + 0x69, 0xef, 0x11, 0xe3, 0x7d, 0x5c, 0x73, 0x82, 0xef, 0x28, 0xb2, 0xe7, 0xa3, 0x38, 0x62, 0xe7, + 0x39, 0x42, 0xa3, 0x67, 0x80, 0xa6, 0x1f, 0x2f, 0x98, 0xd9, 0x2d, 0x61, 0x82, 0x3a, 0x0f, 0x54, + 0xe7, 0x92, 0x8d, 0xdc, 0x7a, 0xf3, 0x92, 0xe6, 0x6d, 0x97, 0x5a, 0x2d, 0x17, 0x75, 0xbb, 0x6c, + 0x59, 0xa1, 0xcf, 0x17, 0xf5, 0x66, 0x70, 0x94, 0xa4, 0x72, 0x99, 0xe9, 0x61, 0xce, 0xde, 0xe4, + 0x20, 0x67, 0xc9, 0xbe, 0xe2, 0xe7, 0xcc, 0x73, 0x39, 0xc3, 0x64, 0xde, 0x1d, 0xb1, 0x20, 0x7a, + 0xc1, 0x9e, 0x01, 0xd3, 0xb6, 0xb9, 0x83, 0xb4, 0xcb, 0x1d, 0xcb, 0x45, 0xdd, 0x53, 0x13, 0x64, + 0x37, 0x8d, 0x4f, 0x82, 0x7f, 0x2c, 0x75, 0x9e, 0x4b, 0x8e, 0x63, 0xc9, 0x64, 0x7f, 0x79, 0x08, + 0xd1, 0xef, 0xd3, 0xcf, 0x28, 0xf0, 0xfd, 0x0a, 0x98, 0x61, 0x44, 0x95, 0xec, 0x2b, 0x95, 0x16, + 0xbc, 0x5e, 0x30, 0x4b, 0x4d, 0x9c, 0xe6, 0x9b, 0xa5, 0xe4, 0x05, 0xfe, 0xa2, 0x22, 0xeb, 0x4e, + 0xd4, 0xa7, 0xe1, 0xa4, 0x8e, 0x68, 0x17, 0x97, 0x4d, 0x67, 0x97, 0xb9, 0xd4, 0x4c, 0xea, 0xf4, + 0x25, 0xcd, 0xd5, 0x36, 0xf8, 0x27, 0x52, 0xce, 0x4a, 0x92, 0xcd, 0x38, 0x24, 0x00, 0x3f, 0xa6, + 0x80, 0x39, 0x46, 0x55, 0x9d, 0xf9, 0xd1, 0x4a, 0x39, 0x94, 0xff, 0x92, 0xb4, 0x21, 0xd8, 0xa7, + 0xfd, 0xac, 0xa6, 0x87, 0x0d, 0x90, 0x1f, 0x94, 0x0a, 0x3e, 0x22, 0xdd, 0x90, 0x43, 0x82, 0xf2, + 0xed, 0x39, 0x30, 0xbd, 0xd1, 0x45, 0x2e, 0xf3, 0x8b, 0x83, 0xaf, 0xc9, 0x01, 0x65, 0x19, 0x09, + 0x3b, 0x9c, 0x2f, 0xcc, 0xc9, 0xae, 0xd6, 0xf1, 0x8d, 0xe5, 0x0a, 0xc5, 0x36, 0x52, 0x04, 0x6c, + 0x37, 0x81, 0x39, 0xca, 0xd2, 0x92, 0xe7, 0x61, 0x23, 0xd1, 0x3f, 0x16, 0xd0, 0x93, 0x3a, 0x8a, + 0x3d, 0x1c, 0x52, 0x17, 0xce, 0x52, 0xc6, 0x34, 0xad, 0xa2, 0x4d, 0x1a, 0x9a, 0x2a, 0xa7, 0xf7, + 0xa4, 0x92, 0xab, 0x9c, 0x3b, 0x88, 0xfa, 0x87, 0x72, 0x99, 0xf3, 0x24, 0x73, 0xbf, 0x4f, 0xf0, + 0x9b, 0x52, 0x31, 0xfb, 0xe4, 0xb9, 0x93, 0x4c, 0x16, 0x3a, 0xa3, 0x31, 0x49, 0x8e, 0x83, 0x22, + 0xce, 0x41, 0x36, 0x46, 0x74, 0xad, 0x5e, 0x5b, 0x3d, 0xa7, 0xf5, 0x5f, 0x5f, 0xc8, 0xc3, 0xe7, + 0x29, 0x60, 0x6a, 0xc1, 0x75, 0xcc, 0x56, 0xd3, 0xec, 0x7a, 0xf0, 0x7b, 0x59, 0x30, 0xb3, 0x6e, + 0x5e, 0x69, 0x3b, 0x66, 0x8b, 0x78, 0x22, 0xf6, 0xf4, 0x05, 0x1d, 0xfa, 0xc9, 0xef, 0x0b, 0xd8, + 0xab, 0xe8, 0x78, 0x1f, 0xb8, 0xc6, 0x67, 0x64, 0x2e, 0x17, 0x0b, 0xf6, 0xdf, 0xb2, 0xfd, 0x82, + 0x81, 0xf9, 0x74, 0xcd, 0xf3, 0x34, 0x45, 0x58, 0x94, 0xef, 0x97, 0x0b, 0xef, 0x25, 0x53, 0xe4, + 0xe1, 0x6c, 0x97, 0x3f, 0x34, 0x09, 0x0a, 0x8b, 0x88, 0x58, 0x71, 0xbf, 0x97, 0x05, 0x13, 0xec, + 0x7a, 0x7d, 0x78, 0xa7, 0xe0, 0xe4, 0xd8, 0x22, 0x19, 0x82, 0xee, 0x38, 0x78, 0xc7, 0x93, 0x75, + 0xee, 0x3c, 0x13, 0x79, 0x4e, 0xe0, 0xfe, 0x45, 0xeb, 0x8d, 0xb8, 0xd2, 0x3f, 0x99, 0xfb, 0x57, + 0x6c, 0x51, 0xe9, 0x3b, 0x41, 0xbd, 0x33, 0xcb, 0x7c, 0x9e, 0xb8, 0x5e, 0xef, 0x37, 0x78, 0xf9, + 0x8c, 0x75, 0x03, 0x63, 0xc4, 0xc7, 0x78, 0x2d, 0xdd, 0x01, 0x26, 0x28, 0xcf, 0xfd, 0xf9, 0x68, + 0xaf, 0x03, 0x01, 0x2d, 0x82, 0x9c, 0x6d, 0xf2, 0x73, 0x4a, 0xfa, 0x8e, 0x45, 0x57, 0x3e, 0x96, + 0x33, 0x7e, 0x33, 0x55, 0xe4, 0x5d, 0x72, 0xdc, 0x8b, 0x75, 0xcf, 0xf4, 0x10, 0xfc, 0x97, 0x2c, + 0x50, 0xea, 0xc8, 0xe3, 0x4f, 0x17, 0x57, 0xc1, 0x31, 0xda, 0x20, 0x96, 0x91, 0xf4, 0xdf, 0xb4, + 0x21, 0x67, 0xfa, 0x32, 0x81, 0xcb, 0xa7, 0xef, 0xff, 0x15, 0xfe, 0x6a, 0xdf, 0xa0, 0x0a, 0xd9, + 0x3e, 0x93, 0x06, 0xc6, 0x19, 0x9e, 0x40, 0x2c, 0x60, 0x11, 0x72, 0xfa, 0x47, 0x52, 0x66, 0xb5, + 0x5c, 0x99, 0x87, 0xd3, 0x15, 0xbc, 0xf2, 0x1a, 0x90, 0x2b, 0x6f, 0x9b, 0x1e, 0x7c, 0x87, 0x02, + 0x40, 0xa9, 0xd5, 0x5a, 0xa3, 0x0e, 0xb7, 0xbc, 0xa7, 0xd8, 0x59, 0x30, 0xd3, 0xdc, 0x36, 0xc3, + 0xd8, 0xe1, 0xb4, 0x3f, 0x10, 0xd2, 0xd4, 0x27, 0x84, 0x9e, 0xbb, 0x94, 0xab, 0xb0, 0x07, 0x26, + 0x5c, 0x07, 0x2b, 0x3b, 0xf0, 0xea, 0x15, 0x43, 0x4d, 0xc5, 0x9e, 0x97, 0xc5, 0xbf, 0xcf, 0x87, + 0xe4, 0x45, 0xcf, 0xe1, 0x58, 0xd1, 0xc1, 0x49, 0xc1, 0x30, 0x21, 0xe1, 0x49, 0x2a, 0xb9, 0x03, + 0xb3, 0xf1, 0x74, 0x8d, 0x25, 0x34, 0x9c, 0xaa, 0xb5, 0x2c, 0x9f, 0xb5, 0x2c, 0x20, 0x05, 0x7c, + 0x41, 0x26, 0x19, 0x7c, 0xf1, 0x8c, 0xbb, 0x0f, 0xcc, 0xa2, 0x96, 0xe5, 0x21, 0xbf, 0x95, 0x8c, + 0x81, 0x71, 0x10, 0x8b, 0x3f, 0xc0, 0x67, 0x4b, 0x07, 0x35, 0x21, 0x0c, 0xdd, 0xdf, 0xa2, 0x08, + 0xfd, 0x93, 0x0b, 0x53, 0x22, 0x57, 0x66, 0xfa, 0x60, 0x3d, 0x57, 0x01, 0x27, 0x0c, 0x67, 0x6b, + 0xab, 0x8d, 0x7c, 0x36, 0x21, 0xea, 0x36, 0x09, 0xcd, 0x51, 0xc2, 0x45, 0xf6, 0x68, 0x9c, 0x07, + 0x2d, 0x36, 0x7b, 0xa1, 0x2f, 0xf0, 0xf9, 0xd2, 0xe1, 0x17, 0x09, 0xbb, 0xfa, 0xd2, 0x19, 0x81, + 0x82, 0x5c, 0x40, 0x45, 0xe9, 0x62, 0xd3, 0x07, 0xe2, 0xf3, 0x59, 0x30, 0x4b, 0x6f, 0xf1, 0xf2, + 0x05, 0xf4, 0xfe, 0x11, 0x02, 0x00, 0xbf, 0x97, 0x91, 0x75, 0x80, 0x25, 0x3c, 0x11, 0x28, 0x89, + 0x60, 0xb1, 0xdc, 0xa1, 0xe5, 0x81, 0xc5, 0xa5, 0xcf, 0xda, 0xdf, 0x52, 0xc0, 0xf4, 0x32, 0xf2, + 0x35, 0xad, 0xcb, 0x5f, 0xb3, 0x21, 0xc3, 0xd8, 0x1b, 0xc1, 0xec, 0x05, 0xb4, 0xe9, 0xb8, 0x88, + 0x5c, 0x1b, 0x12, 0x30, 0x57, 0x4c, 0x8c, 0x88, 0xec, 0x22, 0x84, 0x10, 0x59, 0x10, 0xd9, 0x7e, + 0xeb, 0x7e, 0x3e, 0x71, 0x54, 0x46, 0x0c, 0x27, 0x4f, 0x02, 0x93, 0x0c, 0x54, 0xdf, 0x02, 0x8b, + 0xeb, 0xf2, 0x82, 0xbc, 0xf0, 0x75, 0x01, 0x58, 0x9a, 0x00, 0xd6, 0xe3, 0x93, 0x10, 0x31, 0x96, + 0x6b, 0x6c, 0x8b, 0x5c, 0xfd, 0x0b, 0x57, 0x2a, 0xad, 0x2e, 0x5c, 0x4b, 0x86, 0xd7, 0x69, 0x00, + 0x02, 0xb9, 0xf7, 0x4f, 0x84, 0x72, 0x29, 0x62, 0xd0, 0xd7, 0xd8, 0x03, 0x4f, 0xbd, 0xec, 0x20, + 0xe4, 0x8c, 0x18, 0x18, 0xb9, 0x83, 0x52, 0x32, 0x94, 0x8c, 0x21, 0xc0, 0x8b, 0x02, 0x4e, 0xd4, + 0xfd, 0x7d, 0xf3, 0x55, 0xb3, 0x1b, 0xaa, 0x54, 0x39, 0x19, 0x44, 0xc2, 0x21, 0x8b, 0x40, 0x59, + 0xbe, 0x95, 0x6c, 0x38, 0xe8, 0x4b, 0xc9, 0x68, 0xd1, 0x51, 0x6f, 0x05, 0xc7, 0xec, 0xdd, 0x9d, + 0x80, 0xeb, 0x44, 0xe3, 0x99, 0x86, 0xef, 0xff, 0x90, 0x64, 0xd0, 0x91, 0x21, 0x7e, 0x2c, 0xd3, + 0xc5, 0xe9, 0x0d, 0x3b, 0x70, 0x85, 0x80, 0x8f, 0x4d, 0x04, 0x23, 0xfc, 0x76, 0x26, 0x51, 0xef, + 0xc6, 0xd5, 0x14, 0x31, 0xa4, 0x24, 0xe8, 0xa5, 0xa2, 0x0b, 0x4b, 0x9d, 0x6d, 0x67, 0x27, 0x40, + 0x5e, 0xdb, 0xe9, 0x78, 0x57, 0xce, 0x3e, 0x0a, 0xcc, 0xd6, 0x3d, 0x17, 0x99, 0x3b, 0xdc, 0xa2, + 0xbf, 0xe7, 0x5c, 0x44, 0xb6, 0xbf, 0xe8, 0x4f, 0x5e, 0xee, 0xba, 0x13, 0x4c, 0xd8, 0x4e, 0xc3, + 0xdc, 0xf5, 0xb6, 0xd5, 0xeb, 0xe7, 0xb7, 0x1c, 0x67, 0xab, 0x8d, 0xe6, 0x3b, 0xae, 0xe3, 0x39, + 0x17, 0x76, 0x37, 0xe7, 0x19, 0xf8, 0x35, 0x76, 0xfc, 0xff, 0x2b, 0x77, 0x93, 0x65, 0xdf, 0x82, + 0xed, 0x94, 0x76, 0xbd, 0xed, 0x85, 0xeb, 0x3e, 0xf6, 0xf7, 0xa7, 0x33, 0x9f, 0xfa, 0xfb, 0xd3, + 0x99, 0x2f, 0xff, 0xfd, 0xe9, 0xcc, 0x2f, 0x7d, 0xf5, 0xf4, 0x91, 0x4f, 0x7d, 0xf5, 0xf4, 0x91, + 0xcf, 0x7f, 0xf5, 0xf4, 0x91, 0x1f, 0xcf, 0x76, 0x2e, 0x5c, 0x28, 0x90, 0x52, 0xee, 0xf8, 0xff, + 0x03, 0x00, 0x00, 0xff, 0xff, 0xb8, 0x4c, 0xfa, 0x11, 0x5f, 0xed, 0x01, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -75634,6 +77734,136 @@ func (m *RpcObjectCreateFromUrlResponseError) MarshalToSizedBuffer(dAtA []byte) return len(dAtA) - i, nil } +func (m *RpcObjectChatAdd) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcObjectChatAdd) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcObjectChatAdd) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcObjectChatAddRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcObjectChatAddRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcObjectChatAddRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ObjectId) > 0 { + i -= len(m.ObjectId) + copy(dAtA[i:], m.ObjectId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.ObjectId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcObjectChatAddResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcObjectChatAddResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcObjectChatAddResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ChatId) > 0 { + i -= len(m.ChatId) + copy(dAtA[i:], m.ChatId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.ChatId))) + i-- + dAtA[i] = 0x12 + } + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcObjectChatAddResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcObjectChatAddResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcObjectChatAddResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *RpcObjectBookmarkFetch) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -84271,21 +86501,21 @@ func (m *RpcRelationListWithValueResponse) MarshalToSizedBuffer(dAtA []byte) (in var l int _ = l if len(m.Counters) > 0 { - dAtA181 := make([]byte, len(m.Counters)*10) - var j180 int + dAtA182 := make([]byte, len(m.Counters)*10) + var j181 int for _, num1 := range m.Counters { num := uint64(num1) for num >= 1<<7 { - dAtA181[j180] = uint8(uint64(num)&0x7f | 0x80) + dAtA182[j181] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j180++ + j181++ } - dAtA181[j180] = uint8(num) - j180++ + dAtA182[j181] = uint8(num) + j181++ } - i -= j180 - copy(dAtA[i:], dAtA181[:j180]) - i = encodeVarintCommands(dAtA, i, uint64(j180)) + i -= j181 + copy(dAtA[i:], dAtA182[:j181]) + i = encodeVarintCommands(dAtA, i, uint64(j181)) i-- dAtA[i] = 0x1a } @@ -105297,6 +107527,13 @@ func (m *RpcDebugAccountSelectTraceRequest) MarshalToSizedBuffer(dAtA []byte) (i _ = i var l int _ = l + if len(m.Dir) > 0 { + i -= len(m.Dir) + copy(dAtA[i:], m.Dir) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Dir))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } @@ -109035,6 +111272,1157 @@ func (m *RpcDeviceNetworkStateSetResponseError) MarshalToSizedBuffer(dAtA []byte return len(dAtA) - i, nil } +func (m *RpcChat) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChat) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChat) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcChatAddMessage) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatAddMessage) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatAddMessage) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcChatAddMessageRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatAddMessageRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatAddMessageRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Message != nil { + { + size, err := m.Message.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.ChatObjectId) > 0 { + i -= len(m.ChatObjectId) + copy(dAtA[i:], m.ChatObjectId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.ChatObjectId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatAddMessageResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatAddMessageResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatAddMessageResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Event != nil { + { + size, err := m.Event.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if len(m.MessageId) > 0 { + i -= len(m.MessageId) + copy(dAtA[i:], m.MessageId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.MessageId))) + i-- + dAtA[i] = 0x12 + } + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatAddMessageResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatAddMessageResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatAddMessageResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *RpcChatEditMessageContent) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatEditMessageContent) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatEditMessageContent) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcChatEditMessageContentRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatEditMessageContentRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatEditMessageContentRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.EditedMessage != nil { + { + size, err := m.EditedMessage.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if len(m.MessageId) > 0 { + i -= len(m.MessageId) + copy(dAtA[i:], m.MessageId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.MessageId))) + i-- + dAtA[i] = 0x12 + } + if len(m.ChatObjectId) > 0 { + i -= len(m.ChatObjectId) + copy(dAtA[i:], m.ChatObjectId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.ChatObjectId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatEditMessageContentResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatEditMessageContentResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatEditMessageContentResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatEditMessageContentResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatEditMessageContentResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatEditMessageContentResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *RpcChatToggleMessageReaction) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatToggleMessageReaction) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatToggleMessageReaction) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcChatToggleMessageReactionRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatToggleMessageReactionRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatToggleMessageReactionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Emoji) > 0 { + i -= len(m.Emoji) + copy(dAtA[i:], m.Emoji) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Emoji))) + i-- + dAtA[i] = 0x1a + } + if len(m.MessageId) > 0 { + i -= len(m.MessageId) + copy(dAtA[i:], m.MessageId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.MessageId))) + i-- + dAtA[i] = 0x12 + } + if len(m.ChatObjectId) > 0 { + i -= len(m.ChatObjectId) + copy(dAtA[i:], m.ChatObjectId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.ChatObjectId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatToggleMessageReactionResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatToggleMessageReactionResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatToggleMessageReactionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatToggleMessageReactionResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatToggleMessageReactionResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatToggleMessageReactionResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *RpcChatDeleteMessage) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatDeleteMessage) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatDeleteMessage) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcChatDeleteMessageRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatDeleteMessageRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatDeleteMessageRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.MessageId) > 0 { + i -= len(m.MessageId) + copy(dAtA[i:], m.MessageId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.MessageId))) + i-- + dAtA[i] = 0x12 + } + if len(m.ChatObjectId) > 0 { + i -= len(m.ChatObjectId) + copy(dAtA[i:], m.ChatObjectId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.ChatObjectId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatDeleteMessageResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatDeleteMessageResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatDeleteMessageResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatDeleteMessageResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatDeleteMessageResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatDeleteMessageResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *RpcChatGetMessages) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatGetMessages) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatGetMessages) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcChatGetMessagesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatGetMessagesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatGetMessagesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Limit != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Limit)) + i-- + dAtA[i] = 0x18 + } + if len(m.BeforeOrderId) > 0 { + i -= len(m.BeforeOrderId) + copy(dAtA[i:], m.BeforeOrderId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.BeforeOrderId))) + i-- + dAtA[i] = 0x12 + } + if len(m.ChatObjectId) > 0 { + i -= len(m.ChatObjectId) + copy(dAtA[i:], m.ChatObjectId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.ChatObjectId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatGetMessagesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatGetMessagesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatGetMessagesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Messages) > 0 { + for iNdEx := len(m.Messages) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Messages[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatGetMessagesResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatGetMessagesResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatGetMessagesResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *RpcChatGetMessagesByIds) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatGetMessagesByIds) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatGetMessagesByIds) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcChatGetMessagesByIdsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatGetMessagesByIdsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatGetMessagesByIdsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.MessageIds) > 0 { + for iNdEx := len(m.MessageIds) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.MessageIds[iNdEx]) + copy(dAtA[i:], m.MessageIds[iNdEx]) + i = encodeVarintCommands(dAtA, i, uint64(len(m.MessageIds[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(m.ChatObjectId) > 0 { + i -= len(m.ChatObjectId) + copy(dAtA[i:], m.ChatObjectId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.ChatObjectId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatGetMessagesByIdsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatGetMessagesByIdsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatGetMessagesByIdsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Messages) > 0 { + for iNdEx := len(m.Messages) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Messages[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatGetMessagesByIdsResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatGetMessagesByIdsResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatGetMessagesByIdsResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *RpcChatSubscribeLastMessages) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatSubscribeLastMessages) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatSubscribeLastMessages) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcChatSubscribeLastMessagesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatSubscribeLastMessagesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatSubscribeLastMessagesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Limit != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Limit)) + i-- + dAtA[i] = 0x10 + } + if len(m.ChatObjectId) > 0 { + i -= len(m.ChatObjectId) + copy(dAtA[i:], m.ChatObjectId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.ChatObjectId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatSubscribeLastMessagesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatSubscribeLastMessagesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatSubscribeLastMessagesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.NumMessagesBefore != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.NumMessagesBefore)) + i-- + dAtA[i] = 0x18 + } + if len(m.Messages) > 0 { + for iNdEx := len(m.Messages) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Messages[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatSubscribeLastMessagesResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatSubscribeLastMessagesResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatSubscribeLastMessagesResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *RpcChatUnsubscribe) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatUnsubscribe) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatUnsubscribe) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcChatUnsubscribeRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatUnsubscribeRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatUnsubscribeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ChatObjectId) > 0 { + i -= len(m.ChatObjectId) + copy(dAtA[i:], m.ChatObjectId) + i = encodeVarintCommands(dAtA, i, uint64(len(m.ChatObjectId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatUnsubscribeResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatUnsubscribeResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatUnsubscribeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcChatUnsubscribeResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcChatUnsubscribeResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcChatUnsubscribeResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *Empty) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -112508,6 +115896,61 @@ func (m *RpcObjectCreateFromUrlResponseError) Size() (n int) { return n } +func (m *RpcObjectChatAdd) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcObjectChatAddRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ObjectId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcObjectChatAddResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + l = len(m.ChatId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcObjectChatAddResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + func (m *RpcObjectBookmarkFetch) Size() (n int) { if m == nil { return 0 @@ -125168,6 +128611,10 @@ func (m *RpcDebugAccountSelectTraceRequest) Size() (n int) { } var l int _ = l + l = len(m.Dir) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } return n } @@ -126730,6 +130177,492 @@ func (m *RpcDeviceNetworkStateSetResponseError) Size() (n int) { return n } +func (m *RpcChat) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcChatAddMessage) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcChatAddMessageRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChatObjectId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + if m.Message != nil { + l = m.Message.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatAddMessageResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + l = len(m.MessageId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + if m.Event != nil { + l = m.Event.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatAddMessageResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatEditMessageContent) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcChatEditMessageContentRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChatObjectId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + l = len(m.MessageId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + if m.EditedMessage != nil { + l = m.EditedMessage.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatEditMessageContentResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatEditMessageContentResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatToggleMessageReaction) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcChatToggleMessageReactionRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChatObjectId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + l = len(m.MessageId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + l = len(m.Emoji) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatToggleMessageReactionResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatToggleMessageReactionResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatDeleteMessage) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcChatDeleteMessageRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChatObjectId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + l = len(m.MessageId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatDeleteMessageResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatDeleteMessageResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatGetMessages) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcChatGetMessagesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChatObjectId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + l = len(m.BeforeOrderId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + if m.Limit != 0 { + n += 1 + sovCommands(uint64(m.Limit)) + } + return n +} + +func (m *RpcChatGetMessagesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + if len(m.Messages) > 0 { + for _, e := range m.Messages { + l = e.Size() + n += 1 + l + sovCommands(uint64(l)) + } + } + return n +} + +func (m *RpcChatGetMessagesResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatGetMessagesByIds) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcChatGetMessagesByIdsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChatObjectId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + if len(m.MessageIds) > 0 { + for _, s := range m.MessageIds { + l = len(s) + n += 1 + l + sovCommands(uint64(l)) + } + } + return n +} + +func (m *RpcChatGetMessagesByIdsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + if len(m.Messages) > 0 { + for _, e := range m.Messages { + l = e.Size() + n += 1 + l + sovCommands(uint64(l)) + } + } + return n +} + +func (m *RpcChatGetMessagesByIdsResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatSubscribeLastMessages) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcChatSubscribeLastMessagesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChatObjectId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + if m.Limit != 0 { + n += 1 + sovCommands(uint64(m.Limit)) + } + return n +} + +func (m *RpcChatSubscribeLastMessagesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + if len(m.Messages) > 0 { + for _, e := range m.Messages { + l = e.Size() + n += 1 + l + sovCommands(uint64(l)) + } + } + if m.NumMessagesBefore != 0 { + n += 1 + sovCommands(uint64(m.NumMessagesBefore)) + } + return n +} + +func (m *RpcChatSubscribeLastMessagesResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatUnsubscribe) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcChatUnsubscribeRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChatObjectId) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatUnsubscribeResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcChatUnsubscribeResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + func (m *Empty) Size() (n int) { if m == nil { return 0 @@ -148500,6 +152433,357 @@ func (m *RpcObjectCreateFromUrlResponseError) Unmarshal(dAtA []byte) error { } return nil } +func (m *RpcObjectChatAdd) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ChatAdd: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ChatAdd: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcObjectChatAddRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ObjectId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcObjectChatAddResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcObjectChatAddResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChatId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChatId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcObjectChatAddResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcObjectChatAddResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *RpcObjectBookmarkFetch) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -229514,6 +233798,38 @@ func (m *RpcDebugAccountSelectTraceRequest) Unmarshal(dAtA []byte) error { return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Dir", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Dir = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) @@ -239293,6 +243609,3099 @@ func (m *RpcDeviceNetworkStateSetResponseError) Unmarshal(dAtA []byte) error { } return nil } +func (m *RpcChat) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Chat: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Chat: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatAddMessage) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AddMessage: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AddMessage: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatAddMessageRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChatObjectId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChatObjectId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Message == nil { + m.Message = &model.ChatMessage{} + } + if err := m.Message.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatAddMessageResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcChatAddMessageResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MessageId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MessageId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Event", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Event == nil { + m.Event = &ResponseEvent{} + } + if err := m.Event.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatAddMessageResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcChatAddMessageResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatEditMessageContent) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EditMessageContent: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EditMessageContent: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatEditMessageContentRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChatObjectId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChatObjectId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MessageId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MessageId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EditedMessage", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.EditedMessage == nil { + m.EditedMessage = &model.ChatMessage{} + } + if err := m.EditedMessage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatEditMessageContentResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcChatEditMessageContentResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatEditMessageContentResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcChatEditMessageContentResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatToggleMessageReaction) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ToggleMessageReaction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ToggleMessageReaction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatToggleMessageReactionRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChatObjectId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChatObjectId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MessageId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MessageId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Emoji", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Emoji = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatToggleMessageReactionResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcChatToggleMessageReactionResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatToggleMessageReactionResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcChatToggleMessageReactionResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatDeleteMessage) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeleteMessage: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeleteMessage: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatDeleteMessageRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChatObjectId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChatObjectId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MessageId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MessageId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatDeleteMessageResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcChatDeleteMessageResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatDeleteMessageResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcChatDeleteMessageResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatGetMessages) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetMessages: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetMessages: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatGetMessagesRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChatObjectId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChatObjectId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BeforeOrderId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BeforeOrderId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Limit", wireType) + } + m.Limit = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Limit |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatGetMessagesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcChatGetMessagesResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Messages", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Messages = append(m.Messages, &model.ChatMessage{}) + if err := m.Messages[len(m.Messages)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatGetMessagesResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcChatGetMessagesResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatGetMessagesByIds) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetMessagesByIds: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetMessagesByIds: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatGetMessagesByIdsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChatObjectId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChatObjectId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MessageIds", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MessageIds = append(m.MessageIds, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatGetMessagesByIdsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcChatGetMessagesByIdsResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Messages", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Messages = append(m.Messages, &model.ChatMessage{}) + if err := m.Messages[len(m.Messages)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatGetMessagesByIdsResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcChatGetMessagesByIdsResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatSubscribeLastMessages) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubscribeLastMessages: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubscribeLastMessages: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatSubscribeLastMessagesRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChatObjectId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChatObjectId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Limit", wireType) + } + m.Limit = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Limit |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatSubscribeLastMessagesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcChatSubscribeLastMessagesResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Messages", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Messages = append(m.Messages, &model.ChatMessage{}) + if err := m.Messages[len(m.Messages)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumMessagesBefore", wireType) + } + m.NumMessagesBefore = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumMessagesBefore |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatSubscribeLastMessagesResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcChatSubscribeLastMessagesResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatUnsubscribe) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Unsubscribe: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Unsubscribe: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatUnsubscribeRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChatObjectId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChatObjectId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatUnsubscribeResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcChatUnsubscribeResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcChatUnsubscribeResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcChatUnsubscribeResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *Empty) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pb/events.pb.go b/pb/events.pb.go index b4a1d3c53..ffb6f7587 100644 --- a/pb/events.pb.go +++ b/pb/events.pb.go @@ -55,7 +55,7 @@ func (x EventBlockDataviewSliceOperation) String() string { } func (EventBlockDataviewSliceOperation) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 0} } type EventStatusThreadSyncStatus int32 @@ -67,6 +67,7 @@ const ( EventStatusThread_Synced EventStatusThreadSyncStatus = 3 EventStatusThread_Failed EventStatusThreadSyncStatus = 4 EventStatusThread_IncompatibleVersion EventStatusThreadSyncStatus = 5 + EventStatusThread_NetworkNeedsUpdate EventStatusThreadSyncStatus = 6 ) var EventStatusThreadSyncStatus_name = map[int32]string{ @@ -76,6 +77,7 @@ var EventStatusThreadSyncStatus_name = map[int32]string{ 3: "Synced", 4: "Failed", 5: "IncompatibleVersion", + 6: "NetworkNeedsUpdate", } var EventStatusThreadSyncStatus_value = map[string]int32{ @@ -85,6 +87,7 @@ var EventStatusThreadSyncStatus_value = map[string]int32{ "Synced": 3, "Failed": 4, "IncompatibleVersion": 5, + "NetworkNeedsUpdate": 6, } func (x EventStatusThreadSyncStatus) String() string { @@ -92,7 +95,7 @@ func (x EventStatusThreadSyncStatus) String() string { } func (EventStatusThreadSyncStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 7, 0, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 8, 0, 0} } type EventSpaceStatus int32 @@ -126,7 +129,7 @@ func (x EventSpaceStatus) String() string { } func (EventSpaceStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 12, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 13, 0} } type EventSpaceNetwork int32 @@ -154,7 +157,7 @@ func (x EventSpaceNetwork) String() string { } func (EventSpaceNetwork) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 12, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 13, 1} } type EventSpaceSyncError int32 @@ -185,7 +188,7 @@ func (x EventSpaceSyncError) String() string { } func (EventSpaceSyncError) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 12, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 13, 2} } type EventP2PStatusStatus int32 @@ -194,18 +197,21 @@ const ( EventP2PStatus_NotConnected EventP2PStatusStatus = 0 EventP2PStatus_NotPossible EventP2PStatusStatus = 1 EventP2PStatus_Connected EventP2PStatusStatus = 2 + EventP2PStatus_Restricted EventP2PStatusStatus = 3 ) var EventP2PStatusStatus_name = map[int32]string{ 0: "NotConnected", 1: "NotPossible", 2: "Connected", + 3: "Restricted", } var EventP2PStatusStatus_value = map[string]int32{ "NotConnected": 0, "NotPossible": 1, "Connected": 2, + "Restricted": 3, } func (x EventP2PStatusStatus) String() string { @@ -213,7 +219,7 @@ func (x EventP2PStatusStatus) String() string { } func (EventP2PStatusStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 13, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 14, 0} } type ModelProcessType int32 @@ -428,6 +434,10 @@ type EventMessage struct { // *EventMessageValueOfSpaceSyncStatusUpdate // *EventMessageValueOfP2PStatusUpdate // *EventMessageValueOfImportFinish + // *EventMessageValueOfChatAdd + // *EventMessageValueOfChatUpdate + // *EventMessageValueOfChatUpdateReactions + // *EventMessageValueOfChatDelete Value IsEventMessageValue `protobuf_oneof:"value"` } @@ -680,6 +690,18 @@ type EventMessageValueOfP2PStatusUpdate struct { type EventMessageValueOfImportFinish struct { ImportFinish *EventImportFinish `protobuf:"bytes,121,opt,name=importFinish,proto3,oneof" json:"importFinish,omitempty"` } +type EventMessageValueOfChatAdd struct { + ChatAdd *EventChatAdd `protobuf:"bytes,128,opt,name=chatAdd,proto3,oneof" json:"chatAdd,omitempty"` +} +type EventMessageValueOfChatUpdate struct { + ChatUpdate *EventChatUpdate `protobuf:"bytes,129,opt,name=chatUpdate,proto3,oneof" json:"chatUpdate,omitempty"` +} +type EventMessageValueOfChatUpdateReactions struct { + ChatUpdateReactions *EventChatUpdateReactions `protobuf:"bytes,130,opt,name=chatUpdateReactions,proto3,oneof" json:"chatUpdateReactions,omitempty"` +} +type EventMessageValueOfChatDelete struct { + ChatDelete *EventChatDelete `protobuf:"bytes,131,opt,name=chatDelete,proto3,oneof" json:"chatDelete,omitempty"` +} func (*EventMessageValueOfAccountShow) IsEventMessageValue() {} func (*EventMessageValueOfAccountDetails) IsEventMessageValue() {} @@ -751,6 +773,10 @@ func (*EventMessageValueOfMembershipUpdate) IsEventMessageValue() func (*EventMessageValueOfSpaceSyncStatusUpdate) IsEventMessageValue() {} func (*EventMessageValueOfP2PStatusUpdate) IsEventMessageValue() {} func (*EventMessageValueOfImportFinish) IsEventMessageValue() {} +func (*EventMessageValueOfChatAdd) IsEventMessageValue() {} +func (*EventMessageValueOfChatUpdate) IsEventMessageValue() {} +func (*EventMessageValueOfChatUpdateReactions) IsEventMessageValue() {} +func (*EventMessageValueOfChatDelete) IsEventMessageValue() {} func (m *EventMessage) GetValue() IsEventMessageValue { if m != nil { @@ -1249,6 +1275,34 @@ func (m *EventMessage) GetImportFinish() *EventImportFinish { return nil } +func (m *EventMessage) GetChatAdd() *EventChatAdd { + if x, ok := m.GetValue().(*EventMessageValueOfChatAdd); ok { + return x.ChatAdd + } + return nil +} + +func (m *EventMessage) GetChatUpdate() *EventChatUpdate { + if x, ok := m.GetValue().(*EventMessageValueOfChatUpdate); ok { + return x.ChatUpdate + } + return nil +} + +func (m *EventMessage) GetChatUpdateReactions() *EventChatUpdateReactions { + if x, ok := m.GetValue().(*EventMessageValueOfChatUpdateReactions); ok { + return x.ChatUpdateReactions + } + return nil +} + +func (m *EventMessage) GetChatDelete() *EventChatDelete { + if x, ok := m.GetValue().(*EventMessageValueOfChatDelete); ok { + return x.ChatDelete + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*EventMessage) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -1322,9 +1376,257 @@ func (*EventMessage) XXX_OneofWrappers() []interface{} { (*EventMessageValueOfSpaceSyncStatusUpdate)(nil), (*EventMessageValueOfP2PStatusUpdate)(nil), (*EventMessageValueOfImportFinish)(nil), + (*EventMessageValueOfChatAdd)(nil), + (*EventMessageValueOfChatUpdate)(nil), + (*EventMessageValueOfChatUpdateReactions)(nil), + (*EventMessageValueOfChatDelete)(nil), } } +type EventChat struct { +} + +func (m *EventChat) Reset() { *m = EventChat{} } +func (m *EventChat) String() string { return proto.CompactTextString(m) } +func (*EventChat) ProtoMessage() {} +func (*EventChat) Descriptor() ([]byte, []int) { + return fileDescriptor_a966342d378ae5f5, []int{0, 1} +} +func (m *EventChat) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EventChat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EventChat.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EventChat) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventChat.Merge(m, src) +} +func (m *EventChat) XXX_Size() int { + return m.Size() +} +func (m *EventChat) XXX_DiscardUnknown() { + xxx_messageInfo_EventChat.DiscardUnknown(m) +} + +var xxx_messageInfo_EventChat proto.InternalMessageInfo + +type EventChatAdd struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + OrderId string `protobuf:"bytes,2,opt,name=orderId,proto3" json:"orderId,omitempty"` + Message *model.ChatMessage `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` +} + +func (m *EventChatAdd) Reset() { *m = EventChatAdd{} } +func (m *EventChatAdd) String() string { return proto.CompactTextString(m) } +func (*EventChatAdd) ProtoMessage() {} +func (*EventChatAdd) Descriptor() ([]byte, []int) { + return fileDescriptor_a966342d378ae5f5, []int{0, 1, 0} +} +func (m *EventChatAdd) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EventChatAdd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EventChatAdd.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EventChatAdd) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventChatAdd.Merge(m, src) +} +func (m *EventChatAdd) XXX_Size() int { + return m.Size() +} +func (m *EventChatAdd) XXX_DiscardUnknown() { + xxx_messageInfo_EventChatAdd.DiscardUnknown(m) +} + +var xxx_messageInfo_EventChatAdd proto.InternalMessageInfo + +func (m *EventChatAdd) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *EventChatAdd) GetOrderId() string { + if m != nil { + return m.OrderId + } + return "" +} + +func (m *EventChatAdd) GetMessage() *model.ChatMessage { + if m != nil { + return m.Message + } + return nil +} + +type EventChatDelete struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (m *EventChatDelete) Reset() { *m = EventChatDelete{} } +func (m *EventChatDelete) String() string { return proto.CompactTextString(m) } +func (*EventChatDelete) ProtoMessage() {} +func (*EventChatDelete) Descriptor() ([]byte, []int) { + return fileDescriptor_a966342d378ae5f5, []int{0, 1, 1} +} +func (m *EventChatDelete) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EventChatDelete) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EventChatDelete.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EventChatDelete) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventChatDelete.Merge(m, src) +} +func (m *EventChatDelete) XXX_Size() int { + return m.Size() +} +func (m *EventChatDelete) XXX_DiscardUnknown() { + xxx_messageInfo_EventChatDelete.DiscardUnknown(m) +} + +var xxx_messageInfo_EventChatDelete proto.InternalMessageInfo + +func (m *EventChatDelete) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +type EventChatUpdate struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Message *model.ChatMessage `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` +} + +func (m *EventChatUpdate) Reset() { *m = EventChatUpdate{} } +func (m *EventChatUpdate) String() string { return proto.CompactTextString(m) } +func (*EventChatUpdate) ProtoMessage() {} +func (*EventChatUpdate) Descriptor() ([]byte, []int) { + return fileDescriptor_a966342d378ae5f5, []int{0, 1, 2} +} +func (m *EventChatUpdate) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EventChatUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EventChatUpdate.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EventChatUpdate) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventChatUpdate.Merge(m, src) +} +func (m *EventChatUpdate) XXX_Size() int { + return m.Size() +} +func (m *EventChatUpdate) XXX_DiscardUnknown() { + xxx_messageInfo_EventChatUpdate.DiscardUnknown(m) +} + +var xxx_messageInfo_EventChatUpdate proto.InternalMessageInfo + +func (m *EventChatUpdate) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *EventChatUpdate) GetMessage() *model.ChatMessage { + if m != nil { + return m.Message + } + return nil +} + +type EventChatUpdateReactions struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Reactions *model.ChatMessageReactions `protobuf:"bytes,2,opt,name=reactions,proto3" json:"reactions,omitempty"` +} + +func (m *EventChatUpdateReactions) Reset() { *m = EventChatUpdateReactions{} } +func (m *EventChatUpdateReactions) String() string { return proto.CompactTextString(m) } +func (*EventChatUpdateReactions) ProtoMessage() {} +func (*EventChatUpdateReactions) Descriptor() ([]byte, []int) { + return fileDescriptor_a966342d378ae5f5, []int{0, 1, 3} +} +func (m *EventChatUpdateReactions) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EventChatUpdateReactions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EventChatUpdateReactions.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EventChatUpdateReactions) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventChatUpdateReactions.Merge(m, src) +} +func (m *EventChatUpdateReactions) XXX_Size() int { + return m.Size() +} +func (m *EventChatUpdateReactions) XXX_DiscardUnknown() { + xxx_messageInfo_EventChatUpdateReactions.DiscardUnknown(m) +} + +var xxx_messageInfo_EventChatUpdateReactions proto.InternalMessageInfo + +func (m *EventChatUpdateReactions) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *EventChatUpdateReactions) GetReactions() *model.ChatMessageReactions { + if m != nil { + return m.Reactions + } + return nil +} + type EventAccount struct { } @@ -1332,7 +1634,7 @@ func (m *EventAccount) Reset() { *m = EventAccount{} } func (m *EventAccount) String() string { return proto.CompactTextString(m) } func (*EventAccount) ProtoMessage() {} func (*EventAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 2} } func (m *EventAccount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1372,7 +1674,7 @@ func (m *EventAccountShow) Reset() { *m = EventAccountShow{} } func (m *EventAccountShow) String() string { return proto.CompactTextString(m) } func (*EventAccountShow) ProtoMessage() {} func (*EventAccountShow) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 1, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 2, 0} } func (m *EventAccountShow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1424,7 +1726,7 @@ func (m *EventAccountDetails) Reset() { *m = EventAccountDetails{} } func (m *EventAccountDetails) String() string { return proto.CompactTextString(m) } func (*EventAccountDetails) ProtoMessage() {} func (*EventAccountDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 1, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 2, 1} } func (m *EventAccountDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1474,7 +1776,7 @@ func (m *EventAccountConfig) Reset() { *m = EventAccountConfig{} } func (m *EventAccountConfig) String() string { return proto.CompactTextString(m) } func (*EventAccountConfig) ProtoMessage() {} func (*EventAccountConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 1, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 2, 2} } func (m *EventAccountConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1512,7 +1814,7 @@ func (m *EventAccountConfigUpdate) Reset() { *m = EventAccountConfigUpda func (m *EventAccountConfigUpdate) String() string { return proto.CompactTextString(m) } func (*EventAccountConfigUpdate) ProtoMessage() {} func (*EventAccountConfigUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 1, 2, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 2, 2, 0} } func (m *EventAccountConfigUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1564,7 +1866,7 @@ func (m *EventAccountUpdate) Reset() { *m = EventAccountUpdate{} } func (m *EventAccountUpdate) String() string { return proto.CompactTextString(m) } func (*EventAccountUpdate) ProtoMessage() {} func (*EventAccountUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 1, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 2, 3} } func (m *EventAccountUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1616,7 +1918,7 @@ func (m *EventAccountLinkChallenge) Reset() { *m = EventAccountLinkChall func (m *EventAccountLinkChallenge) String() string { return proto.CompactTextString(m) } func (*EventAccountLinkChallenge) ProtoMessage() {} func (*EventAccountLinkChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 1, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 2, 4} } func (m *EventAccountLinkChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1669,7 +1971,7 @@ func (m *EventAccountLinkChallengeClientInfo) Reset() { *m = EventAccoun func (m *EventAccountLinkChallengeClientInfo) String() string { return proto.CompactTextString(m) } func (*EventAccountLinkChallengeClientInfo) ProtoMessage() {} func (*EventAccountLinkChallengeClientInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 1, 4, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 2, 4, 0} } func (m *EventAccountLinkChallengeClientInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1726,7 +2028,7 @@ func (m *EventObject) Reset() { *m = EventObject{} } func (m *EventObject) String() string { return proto.CompactTextString(m) } func (*EventObject) ProtoMessage() {} func (*EventObject) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 3} } func (m *EventObject) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1762,7 +2064,7 @@ func (m *EventObjectDetails) Reset() { *m = EventObjectDetails{} } func (m *EventObjectDetails) String() string { return proto.CompactTextString(m) } func (*EventObjectDetails) ProtoMessage() {} func (*EventObjectDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 0} } func (m *EventObjectDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1802,7 +2104,7 @@ func (m *EventObjectDetailsAmend) Reset() { *m = EventObjectDetailsAmend func (m *EventObjectDetailsAmend) String() string { return proto.CompactTextString(m) } func (*EventObjectDetailsAmend) ProtoMessage() {} func (*EventObjectDetailsAmend) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 0, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 0, 0} } func (m *EventObjectDetailsAmend) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1861,7 +2163,7 @@ func (m *EventObjectDetailsAmendKeyValue) Reset() { *m = EventObjectDeta func (m *EventObjectDetailsAmendKeyValue) String() string { return proto.CompactTextString(m) } func (*EventObjectDetailsAmendKeyValue) ProtoMessage() {} func (*EventObjectDetailsAmendKeyValue) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 0, 0, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 0, 0, 0} } func (m *EventObjectDetailsAmendKeyValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1915,7 +2217,7 @@ func (m *EventObjectDetailsSet) Reset() { *m = EventObjectDetailsSet{} } func (m *EventObjectDetailsSet) String() string { return proto.CompactTextString(m) } func (*EventObjectDetailsSet) ProtoMessage() {} func (*EventObjectDetailsSet) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 0, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 0, 1} } func (m *EventObjectDetailsSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1976,7 +2278,7 @@ func (m *EventObjectDetailsUnset) Reset() { *m = EventObjectDetailsUnset func (m *EventObjectDetailsUnset) String() string { return proto.CompactTextString(m) } func (*EventObjectDetailsUnset) ProtoMessage() {} func (*EventObjectDetailsUnset) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 0, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 0, 2} } func (m *EventObjectDetailsUnset) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2033,7 +2335,7 @@ func (m *EventObjectSubscription) Reset() { *m = EventObjectSubscription func (m *EventObjectSubscription) String() string { return proto.CompactTextString(m) } func (*EventObjectSubscription) ProtoMessage() {} func (*EventObjectSubscription) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 1} } func (m *EventObjectSubscription) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2073,7 +2375,7 @@ func (m *EventObjectSubscriptionAdd) Reset() { *m = EventObjectSubscript func (m *EventObjectSubscriptionAdd) String() string { return proto.CompactTextString(m) } func (*EventObjectSubscriptionAdd) ProtoMessage() {} func (*EventObjectSubscriptionAdd) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 1, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 1, 0} } func (m *EventObjectSubscriptionAdd) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2133,7 +2435,7 @@ func (m *EventObjectSubscriptionRemove) Reset() { *m = EventObjectSubscr func (m *EventObjectSubscriptionRemove) String() string { return proto.CompactTextString(m) } func (*EventObjectSubscriptionRemove) ProtoMessage() {} func (*EventObjectSubscriptionRemove) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 1, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 1, 1} } func (m *EventObjectSubscriptionRemove) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2187,7 +2489,7 @@ func (m *EventObjectSubscriptionPosition) Reset() { *m = EventObjectSubs func (m *EventObjectSubscriptionPosition) String() string { return proto.CompactTextString(m) } func (*EventObjectSubscriptionPosition) ProtoMessage() {} func (*EventObjectSubscriptionPosition) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 1, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 1, 2} } func (m *EventObjectSubscriptionPosition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2251,7 +2553,7 @@ func (m *EventObjectSubscriptionCounters) Reset() { *m = EventObjectSubs func (m *EventObjectSubscriptionCounters) String() string { return proto.CompactTextString(m) } func (*EventObjectSubscriptionCounters) ProtoMessage() {} func (*EventObjectSubscriptionCounters) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 1, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 1, 3} } func (m *EventObjectSubscriptionCounters) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2318,7 +2620,7 @@ func (m *EventObjectSubscriptionGroups) Reset() { *m = EventObjectSubscr func (m *EventObjectSubscriptionGroups) String() string { return proto.CompactTextString(m) } func (*EventObjectSubscriptionGroups) ProtoMessage() {} func (*EventObjectSubscriptionGroups) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 1, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 1, 4} } func (m *EventObjectSubscriptionGroups) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2375,7 +2677,7 @@ func (m *EventObjectRelations) Reset() { *m = EventObjectRelations{} } func (m *EventObjectRelations) String() string { return proto.CompactTextString(m) } func (*EventObjectRelations) ProtoMessage() {} func (*EventObjectRelations) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 2} } func (m *EventObjectRelations) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2413,7 +2715,7 @@ func (m *EventObjectRelationsAmend) Reset() { *m = EventObjectRelationsA func (m *EventObjectRelationsAmend) String() string { return proto.CompactTextString(m) } func (*EventObjectRelationsAmend) ProtoMessage() {} func (*EventObjectRelationsAmend) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 2, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 2, 0} } func (m *EventObjectRelationsAmend) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2465,7 +2767,7 @@ func (m *EventObjectRelationsRemove) Reset() { *m = EventObjectRelations func (m *EventObjectRelationsRemove) String() string { return proto.CompactTextString(m) } func (*EventObjectRelationsRemove) ProtoMessage() {} func (*EventObjectRelationsRemove) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 2, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 2, 1} } func (m *EventObjectRelationsRemove) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2517,7 +2819,7 @@ func (m *EventObjectRemove) Reset() { *m = EventObjectRemove{} } func (m *EventObjectRemove) String() string { return proto.CompactTextString(m) } func (*EventObjectRemove) ProtoMessage() {} func (*EventObjectRemove) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 3} } func (m *EventObjectRemove) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2560,7 +2862,7 @@ func (m *EventObjectRestrictions) Reset() { *m = EventObjectRestrictions func (m *EventObjectRestrictions) String() string { return proto.CompactTextString(m) } func (*EventObjectRestrictions) ProtoMessage() {} func (*EventObjectRestrictions) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4} } func (m *EventObjectRestrictions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2598,7 +2900,7 @@ func (m *EventObjectRestrictionsSet) Reset() { *m = EventObjectRestricti func (m *EventObjectRestrictionsSet) String() string { return proto.CompactTextString(m) } func (*EventObjectRestrictionsSet) ProtoMessage() {} func (*EventObjectRestrictionsSet) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 4, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 0} } func (m *EventObjectRestrictionsSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2649,7 +2951,7 @@ func (m *EventObjectClose) Reset() { *m = EventObjectClose{} } func (m *EventObjectClose) String() string { return proto.CompactTextString(m) } func (*EventObjectClose) ProtoMessage() {} func (*EventObjectClose) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 2, 5} + return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5} } func (m *EventObjectClose) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2692,7 +2994,7 @@ func (m *EventBlock) Reset() { *m = EventBlock{} } func (m *EventBlock) String() string { return proto.CompactTextString(m) } func (*EventBlock) ProtoMessage() {} func (*EventBlock) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4} } func (m *EventBlock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2739,7 +3041,7 @@ func (m *EventBlockAdd) Reset() { *m = EventBlockAdd{} } func (m *EventBlockAdd) String() string { return proto.CompactTextString(m) } func (*EventBlockAdd) ProtoMessage() {} func (*EventBlockAdd) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 0} } func (m *EventBlockAdd) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2789,7 +3091,7 @@ func (m *EventBlockFilesUpload) Reset() { *m = EventBlockFilesUpload{} } func (m *EventBlockFilesUpload) String() string { return proto.CompactTextString(m) } func (*EventBlockFilesUpload) ProtoMessage() {} func (*EventBlockFilesUpload) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 1} } func (m *EventBlockFilesUpload) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2840,7 +3142,7 @@ func (m *EventBlockDelete) Reset() { *m = EventBlockDelete{} } func (m *EventBlockDelete) String() string { return proto.CompactTextString(m) } func (*EventBlockDelete) ProtoMessage() {} func (*EventBlockDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 2} } func (m *EventBlockDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2884,7 +3186,7 @@ func (m *EventBlockMarksInfo) Reset() { *m = EventBlockMarksInfo{} } func (m *EventBlockMarksInfo) String() string { return proto.CompactTextString(m) } func (*EventBlockMarksInfo) ProtoMessage() {} func (*EventBlockMarksInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 3} } func (m *EventBlockMarksInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2927,7 +3229,7 @@ func (m *EventBlockSet) Reset() { *m = EventBlockSet{} } func (m *EventBlockSet) String() string { return proto.CompactTextString(m) } func (*EventBlockSet) ProtoMessage() {} func (*EventBlockSet) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4} } func (m *EventBlockSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2965,7 +3267,7 @@ func (m *EventBlockSetRelation) Reset() { *m = EventBlockSetRelation{} } func (m *EventBlockSetRelation) String() string { return proto.CompactTextString(m) } func (*EventBlockSetRelation) ProtoMessage() {} func (*EventBlockSetRelation) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 0} } func (m *EventBlockSetRelation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3016,7 +3318,7 @@ func (m *EventBlockSetRelationKey) Reset() { *m = EventBlockSetRelationK func (m *EventBlockSetRelationKey) String() string { return proto.CompactTextString(m) } func (*EventBlockSetRelationKey) ProtoMessage() {} func (*EventBlockSetRelationKey) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 0, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 0, 0} } func (m *EventBlockSetRelationKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3061,7 +3363,7 @@ func (m *EventBlockSetFields) Reset() { *m = EventBlockSetFields{} } func (m *EventBlockSetFields) String() string { return proto.CompactTextString(m) } func (*EventBlockSetFields) ProtoMessage() {} func (*EventBlockSetFields) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 1} } func (m *EventBlockSetFields) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3113,7 +3415,7 @@ func (m *EventBlockSetChildrenIds) Reset() { *m = EventBlockSetChildrenI func (m *EventBlockSetChildrenIds) String() string { return proto.CompactTextString(m) } func (*EventBlockSetChildrenIds) ProtoMessage() {} func (*EventBlockSetChildrenIds) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 2} } func (m *EventBlockSetChildrenIds) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3165,7 +3467,7 @@ func (m *EventBlockSetRestrictions) Reset() { *m = EventBlockSetRestrict func (m *EventBlockSetRestrictions) String() string { return proto.CompactTextString(m) } func (*EventBlockSetRestrictions) ProtoMessage() {} func (*EventBlockSetRestrictions) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 3} } func (m *EventBlockSetRestrictions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3217,7 +3519,7 @@ func (m *EventBlockSetBackgroundColor) Reset() { *m = EventBlockSetBackg func (m *EventBlockSetBackgroundColor) String() string { return proto.CompactTextString(m) } func (*EventBlockSetBackgroundColor) ProtoMessage() {} func (*EventBlockSetBackgroundColor) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 4} } func (m *EventBlockSetBackgroundColor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3269,7 +3571,7 @@ func (m *EventBlockSetAlign) Reset() { *m = EventBlockSetAlign{} } func (m *EventBlockSetAlign) String() string { return proto.CompactTextString(m) } func (*EventBlockSetAlign) ProtoMessage() {} func (*EventBlockSetAlign) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 5} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 5} } func (m *EventBlockSetAlign) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3321,7 +3623,7 @@ func (m *EventBlockSetVerticalAlign) Reset() { *m = EventBlockSetVertica func (m *EventBlockSetVerticalAlign) String() string { return proto.CompactTextString(m) } func (*EventBlockSetVerticalAlign) ProtoMessage() {} func (*EventBlockSetVerticalAlign) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 6} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 6} } func (m *EventBlockSetVerticalAlign) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3379,7 +3681,7 @@ func (m *EventBlockSetText) Reset() { *m = EventBlockSetText{} } func (m *EventBlockSetText) String() string { return proto.CompactTextString(m) } func (*EventBlockSetText) ProtoMessage() {} func (*EventBlockSetText) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 7} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 7} } func (m *EventBlockSetText) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3472,7 +3774,7 @@ func (m *EventBlockSetTextText) Reset() { *m = EventBlockSetTextText{} } func (m *EventBlockSetTextText) String() string { return proto.CompactTextString(m) } func (*EventBlockSetTextText) ProtoMessage() {} func (*EventBlockSetTextText) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 7, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 7, 0} } func (m *EventBlockSetTextText) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3516,7 +3818,7 @@ func (m *EventBlockSetTextStyle) Reset() { *m = EventBlockSetTextStyle{} func (m *EventBlockSetTextStyle) String() string { return proto.CompactTextString(m) } func (*EventBlockSetTextStyle) ProtoMessage() {} func (*EventBlockSetTextStyle) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 7, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 7, 1} } func (m *EventBlockSetTextStyle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3560,7 +3862,7 @@ func (m *EventBlockSetTextMarks) Reset() { *m = EventBlockSetTextMarks{} func (m *EventBlockSetTextMarks) String() string { return proto.CompactTextString(m) } func (*EventBlockSetTextMarks) ProtoMessage() {} func (*EventBlockSetTextMarks) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 7, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 7, 2} } func (m *EventBlockSetTextMarks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3604,7 +3906,7 @@ func (m *EventBlockSetTextChecked) Reset() { *m = EventBlockSetTextCheck func (m *EventBlockSetTextChecked) String() string { return proto.CompactTextString(m) } func (*EventBlockSetTextChecked) ProtoMessage() {} func (*EventBlockSetTextChecked) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 7, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 7, 3} } func (m *EventBlockSetTextChecked) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3648,7 +3950,7 @@ func (m *EventBlockSetTextColor) Reset() { *m = EventBlockSetTextColor{} func (m *EventBlockSetTextColor) String() string { return proto.CompactTextString(m) } func (*EventBlockSetTextColor) ProtoMessage() {} func (*EventBlockSetTextColor) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 7, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 7, 4} } func (m *EventBlockSetTextColor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3692,7 +3994,7 @@ func (m *EventBlockSetTextIconEmoji) Reset() { *m = EventBlockSetTextIco func (m *EventBlockSetTextIconEmoji) String() string { return proto.CompactTextString(m) } func (*EventBlockSetTextIconEmoji) ProtoMessage() {} func (*EventBlockSetTextIconEmoji) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 7, 5} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 7, 5} } func (m *EventBlockSetTextIconEmoji) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3736,7 +4038,7 @@ func (m *EventBlockSetTextIconImage) Reset() { *m = EventBlockSetTextIco func (m *EventBlockSetTextIconImage) String() string { return proto.CompactTextString(m) } func (*EventBlockSetTextIconImage) ProtoMessage() {} func (*EventBlockSetTextIconImage) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 7, 6} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 7, 6} } func (m *EventBlockSetTextIconImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3782,7 +4084,7 @@ func (m *EventBlockSetLatex) Reset() { *m = EventBlockSetLatex{} } func (m *EventBlockSetLatex) String() string { return proto.CompactTextString(m) } func (*EventBlockSetLatex) ProtoMessage() {} func (*EventBlockSetLatex) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 8} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 8} } func (m *EventBlockSetLatex) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3840,7 +4142,7 @@ func (m *EventBlockSetLatexText) Reset() { *m = EventBlockSetLatexText{} func (m *EventBlockSetLatexText) String() string { return proto.CompactTextString(m) } func (*EventBlockSetLatexText) ProtoMessage() {} func (*EventBlockSetLatexText) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 8, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 8, 0} } func (m *EventBlockSetLatexText) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3884,7 +4186,7 @@ func (m *EventBlockSetLatexProcessor) Reset() { *m = EventBlockSetLatexP func (m *EventBlockSetLatexProcessor) String() string { return proto.CompactTextString(m) } func (*EventBlockSetLatexProcessor) ProtoMessage() {} func (*EventBlockSetLatexProcessor) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 8, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 8, 1} } func (m *EventBlockSetLatexProcessor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3929,7 +4231,7 @@ func (m *EventBlockSetDiv) Reset() { *m = EventBlockSetDiv{} } func (m *EventBlockSetDiv) String() string { return proto.CompactTextString(m) } func (*EventBlockSetDiv) ProtoMessage() {} func (*EventBlockSetDiv) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 9} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 9} } func (m *EventBlockSetDiv) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3980,7 +4282,7 @@ func (m *EventBlockSetDivStyle) Reset() { *m = EventBlockSetDivStyle{} } func (m *EventBlockSetDivStyle) String() string { return proto.CompactTextString(m) } func (*EventBlockSetDivStyle) ProtoMessage() {} func (*EventBlockSetDivStyle) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 9, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 9, 0} } func (m *EventBlockSetDivStyle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4032,7 +4334,7 @@ func (m *EventBlockSetFile) Reset() { *m = EventBlockSetFile{} } func (m *EventBlockSetFile) String() string { return proto.CompactTextString(m) } func (*EventBlockSetFile) ProtoMessage() {} func (*EventBlockSetFile) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 10} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 10} } func (m *EventBlockSetFile) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4132,7 +4434,7 @@ func (m *EventBlockSetFileName) Reset() { *m = EventBlockSetFileName{} } func (m *EventBlockSetFileName) String() string { return proto.CompactTextString(m) } func (*EventBlockSetFileName) ProtoMessage() {} func (*EventBlockSetFileName) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 10, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 10, 0} } func (m *EventBlockSetFileName) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4176,7 +4478,7 @@ func (m *EventBlockSetFileWidth) Reset() { *m = EventBlockSetFileWidth{} func (m *EventBlockSetFileWidth) String() string { return proto.CompactTextString(m) } func (*EventBlockSetFileWidth) ProtoMessage() {} func (*EventBlockSetFileWidth) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 10, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 10, 1} } func (m *EventBlockSetFileWidth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4220,7 +4522,7 @@ func (m *EventBlockSetFileState) Reset() { *m = EventBlockSetFileState{} func (m *EventBlockSetFileState) String() string { return proto.CompactTextString(m) } func (*EventBlockSetFileState) ProtoMessage() {} func (*EventBlockSetFileState) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 10, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 10, 2} } func (m *EventBlockSetFileState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4264,7 +4566,7 @@ func (m *EventBlockSetFileType) Reset() { *m = EventBlockSetFileType{} } func (m *EventBlockSetFileType) String() string { return proto.CompactTextString(m) } func (*EventBlockSetFileType) ProtoMessage() {} func (*EventBlockSetFileType) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 10, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 10, 3} } func (m *EventBlockSetFileType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4308,7 +4610,7 @@ func (m *EventBlockSetFileStyle) Reset() { *m = EventBlockSetFileStyle{} func (m *EventBlockSetFileStyle) String() string { return proto.CompactTextString(m) } func (*EventBlockSetFileStyle) ProtoMessage() {} func (*EventBlockSetFileStyle) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 10, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 10, 4} } func (m *EventBlockSetFileStyle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4352,7 +4654,7 @@ func (m *EventBlockSetFileHash) Reset() { *m = EventBlockSetFileHash{} } func (m *EventBlockSetFileHash) String() string { return proto.CompactTextString(m) } func (*EventBlockSetFileHash) ProtoMessage() {} func (*EventBlockSetFileHash) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 10, 5} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 10, 5} } func (m *EventBlockSetFileHash) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4396,7 +4698,7 @@ func (m *EventBlockSetFileMime) Reset() { *m = EventBlockSetFileMime{} } func (m *EventBlockSetFileMime) String() string { return proto.CompactTextString(m) } func (*EventBlockSetFileMime) ProtoMessage() {} func (*EventBlockSetFileMime) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 10, 6} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 10, 6} } func (m *EventBlockSetFileMime) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4440,7 +4742,7 @@ func (m *EventBlockSetFileSize) Reset() { *m = EventBlockSetFileSize{} } func (m *EventBlockSetFileSize) String() string { return proto.CompactTextString(m) } func (*EventBlockSetFileSize) ProtoMessage() {} func (*EventBlockSetFileSize) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 10, 7} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 10, 7} } func (m *EventBlockSetFileSize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4484,7 +4786,7 @@ func (m *EventBlockSetFileTargetObjectId) Reset() { *m = EventBlockSetFi func (m *EventBlockSetFileTargetObjectId) String() string { return proto.CompactTextString(m) } func (*EventBlockSetFileTargetObjectId) ProtoMessage() {} func (*EventBlockSetFileTargetObjectId) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 10, 8} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 10, 8} } func (m *EventBlockSetFileTargetObjectId) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4535,7 +4837,7 @@ func (m *EventBlockSetLink) Reset() { *m = EventBlockSetLink{} } func (m *EventBlockSetLink) String() string { return proto.CompactTextString(m) } func (*EventBlockSetLink) ProtoMessage() {} func (*EventBlockSetLink) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 11} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 11} } func (m *EventBlockSetLink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4628,7 +4930,7 @@ func (m *EventBlockSetLinkTargetBlockId) Reset() { *m = EventBlockSetLin func (m *EventBlockSetLinkTargetBlockId) String() string { return proto.CompactTextString(m) } func (*EventBlockSetLinkTargetBlockId) ProtoMessage() {} func (*EventBlockSetLinkTargetBlockId) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 11, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 11, 0} } func (m *EventBlockSetLinkTargetBlockId) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4672,7 +4974,7 @@ func (m *EventBlockSetLinkStyle) Reset() { *m = EventBlockSetLinkStyle{} func (m *EventBlockSetLinkStyle) String() string { return proto.CompactTextString(m) } func (*EventBlockSetLinkStyle) ProtoMessage() {} func (*EventBlockSetLinkStyle) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 11, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 11, 1} } func (m *EventBlockSetLinkStyle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4716,7 +5018,7 @@ func (m *EventBlockSetLinkFields) Reset() { *m = EventBlockSetLinkFields func (m *EventBlockSetLinkFields) String() string { return proto.CompactTextString(m) } func (*EventBlockSetLinkFields) ProtoMessage() {} func (*EventBlockSetLinkFields) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 11, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 11, 2} } func (m *EventBlockSetLinkFields) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4760,7 +5062,7 @@ func (m *EventBlockSetLinkIconSize) Reset() { *m = EventBlockSetLinkIcon func (m *EventBlockSetLinkIconSize) String() string { return proto.CompactTextString(m) } func (*EventBlockSetLinkIconSize) ProtoMessage() {} func (*EventBlockSetLinkIconSize) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 11, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 11, 3} } func (m *EventBlockSetLinkIconSize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4804,7 +5106,7 @@ func (m *EventBlockSetLinkCardStyle) Reset() { *m = EventBlockSetLinkCar func (m *EventBlockSetLinkCardStyle) String() string { return proto.CompactTextString(m) } func (*EventBlockSetLinkCardStyle) ProtoMessage() {} func (*EventBlockSetLinkCardStyle) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 11, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 11, 4} } func (m *EventBlockSetLinkCardStyle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4848,7 +5150,7 @@ func (m *EventBlockSetLinkDescription) Reset() { *m = EventBlockSetLinkD func (m *EventBlockSetLinkDescription) String() string { return proto.CompactTextString(m) } func (*EventBlockSetLinkDescription) ProtoMessage() {} func (*EventBlockSetLinkDescription) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 11, 5} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 11, 5} } func (m *EventBlockSetLinkDescription) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4892,7 +5194,7 @@ func (m *EventBlockSetLinkRelations) Reset() { *m = EventBlockSetLinkRel func (m *EventBlockSetLinkRelations) String() string { return proto.CompactTextString(m) } func (*EventBlockSetLinkRelations) ProtoMessage() {} func (*EventBlockSetLinkRelations) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 11, 6} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 11, 6} } func (m *EventBlockSetLinkRelations) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4944,7 +5246,7 @@ func (m *EventBlockSetBookmark) Reset() { *m = EventBlockSetBookmark{} } func (m *EventBlockSetBookmark) String() string { return proto.CompactTextString(m) } func (*EventBlockSetBookmark) ProtoMessage() {} func (*EventBlockSetBookmark) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 12} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 12} } func (m *EventBlockSetBookmark) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5044,7 +5346,7 @@ func (m *EventBlockSetBookmarkUrl) Reset() { *m = EventBlockSetBookmarkU func (m *EventBlockSetBookmarkUrl) String() string { return proto.CompactTextString(m) } func (*EventBlockSetBookmarkUrl) ProtoMessage() {} func (*EventBlockSetBookmarkUrl) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 12, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 12, 0} } func (m *EventBlockSetBookmarkUrl) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5088,7 +5390,7 @@ func (m *EventBlockSetBookmarkTitle) Reset() { *m = EventBlockSetBookmar func (m *EventBlockSetBookmarkTitle) String() string { return proto.CompactTextString(m) } func (*EventBlockSetBookmarkTitle) ProtoMessage() {} func (*EventBlockSetBookmarkTitle) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 12, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 12, 1} } func (m *EventBlockSetBookmarkTitle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5132,7 +5434,7 @@ func (m *EventBlockSetBookmarkDescription) Reset() { *m = EventBlockSetB func (m *EventBlockSetBookmarkDescription) String() string { return proto.CompactTextString(m) } func (*EventBlockSetBookmarkDescription) ProtoMessage() {} func (*EventBlockSetBookmarkDescription) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 12, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 12, 2} } func (m *EventBlockSetBookmarkDescription) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5176,7 +5478,7 @@ func (m *EventBlockSetBookmarkImageHash) Reset() { *m = EventBlockSetBoo func (m *EventBlockSetBookmarkImageHash) String() string { return proto.CompactTextString(m) } func (*EventBlockSetBookmarkImageHash) ProtoMessage() {} func (*EventBlockSetBookmarkImageHash) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 12, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 12, 3} } func (m *EventBlockSetBookmarkImageHash) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5220,7 +5522,7 @@ func (m *EventBlockSetBookmarkFaviconHash) Reset() { *m = EventBlockSetB func (m *EventBlockSetBookmarkFaviconHash) String() string { return proto.CompactTextString(m) } func (*EventBlockSetBookmarkFaviconHash) ProtoMessage() {} func (*EventBlockSetBookmarkFaviconHash) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 12, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 12, 4} } func (m *EventBlockSetBookmarkFaviconHash) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5264,7 +5566,7 @@ func (m *EventBlockSetBookmarkType) Reset() { *m = EventBlockSetBookmark func (m *EventBlockSetBookmarkType) String() string { return proto.CompactTextString(m) } func (*EventBlockSetBookmarkType) ProtoMessage() {} func (*EventBlockSetBookmarkType) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 12, 5} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 12, 5} } func (m *EventBlockSetBookmarkType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5308,7 +5610,7 @@ func (m *EventBlockSetBookmarkTargetObjectId) Reset() { *m = EventBlockS func (m *EventBlockSetBookmarkTargetObjectId) String() string { return proto.CompactTextString(m) } func (*EventBlockSetBookmarkTargetObjectId) ProtoMessage() {} func (*EventBlockSetBookmarkTargetObjectId) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 12, 6} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 12, 6} } func (m *EventBlockSetBookmarkTargetObjectId) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5352,7 +5654,7 @@ func (m *EventBlockSetBookmarkState) Reset() { *m = EventBlockSetBookmar func (m *EventBlockSetBookmarkState) String() string { return proto.CompactTextString(m) } func (*EventBlockSetBookmarkState) ProtoMessage() {} func (*EventBlockSetBookmarkState) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 12, 7} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 12, 7} } func (m *EventBlockSetBookmarkState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5397,7 +5699,7 @@ func (m *EventBlockSetTableRow) Reset() { *m = EventBlockSetTableRow{} } func (m *EventBlockSetTableRow) String() string { return proto.CompactTextString(m) } func (*EventBlockSetTableRow) ProtoMessage() {} func (*EventBlockSetTableRow) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 13} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 13} } func (m *EventBlockSetTableRow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5448,7 +5750,7 @@ func (m *EventBlockSetTableRowIsHeader) Reset() { *m = EventBlockSetTabl func (m *EventBlockSetTableRowIsHeader) String() string { return proto.CompactTextString(m) } func (*EventBlockSetTableRowIsHeader) ProtoMessage() {} func (*EventBlockSetTableRowIsHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 13, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 13, 0} } func (m *EventBlockSetTableRowIsHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5495,7 +5797,7 @@ func (m *EventBlockSetWidget) Reset() { *m = EventBlockSetWidget{} } func (m *EventBlockSetWidget) String() string { return proto.CompactTextString(m) } func (*EventBlockSetWidget) ProtoMessage() {} func (*EventBlockSetWidget) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 14} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 14} } func (m *EventBlockSetWidget) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5560,7 +5862,7 @@ func (m *EventBlockSetWidgetLayout) Reset() { *m = EventBlockSetWidgetLa func (m *EventBlockSetWidgetLayout) String() string { return proto.CompactTextString(m) } func (*EventBlockSetWidgetLayout) ProtoMessage() {} func (*EventBlockSetWidgetLayout) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 14, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 14, 0} } func (m *EventBlockSetWidgetLayout) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5604,7 +5906,7 @@ func (m *EventBlockSetWidgetLimit) Reset() { *m = EventBlockSetWidgetLim func (m *EventBlockSetWidgetLimit) String() string { return proto.CompactTextString(m) } func (*EventBlockSetWidgetLimit) ProtoMessage() {} func (*EventBlockSetWidgetLimit) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 14, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 14, 1} } func (m *EventBlockSetWidgetLimit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5648,7 +5950,7 @@ func (m *EventBlockSetWidgetViewId) Reset() { *m = EventBlockSetWidgetVi func (m *EventBlockSetWidgetViewId) String() string { return proto.CompactTextString(m) } func (*EventBlockSetWidgetViewId) ProtoMessage() {} func (*EventBlockSetWidgetViewId) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 4, 14, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 4, 14, 2} } func (m *EventBlockSetWidgetViewId) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5691,7 +5993,7 @@ func (m *EventBlockFill) Reset() { *m = EventBlockFill{} } func (m *EventBlockFill) String() string { return proto.CompactTextString(m) } func (*EventBlockFill) ProtoMessage() {} func (*EventBlockFill) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5} } func (m *EventBlockFill) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5729,7 +6031,7 @@ func (m *EventBlockFillDetails) Reset() { *m = EventBlockFillDetails{} } func (m *EventBlockFillDetails) String() string { return proto.CompactTextString(m) } func (*EventBlockFillDetails) ProtoMessage() {} func (*EventBlockFillDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 0} } func (m *EventBlockFillDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5781,7 +6083,7 @@ func (m *EventBlockFillDatabaseRecords) Reset() { *m = EventBlockFillDat func (m *EventBlockFillDatabaseRecords) String() string { return proto.CompactTextString(m) } func (*EventBlockFillDatabaseRecords) ProtoMessage() {} func (*EventBlockFillDatabaseRecords) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 1} } func (m *EventBlockFillDatabaseRecords) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5833,7 +6135,7 @@ func (m *EventBlockFillFields) Reset() { *m = EventBlockFillFields{} } func (m *EventBlockFillFields) String() string { return proto.CompactTextString(m) } func (*EventBlockFillFields) ProtoMessage() {} func (*EventBlockFillFields) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 2} } func (m *EventBlockFillFields) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5885,7 +6187,7 @@ func (m *EventBlockFillChildrenIds) Reset() { *m = EventBlockFillChildre func (m *EventBlockFillChildrenIds) String() string { return proto.CompactTextString(m) } func (*EventBlockFillChildrenIds) ProtoMessage() {} func (*EventBlockFillChildrenIds) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 3} } func (m *EventBlockFillChildrenIds) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5937,7 +6239,7 @@ func (m *EventBlockFillRestrictions) Reset() { *m = EventBlockFillRestri func (m *EventBlockFillRestrictions) String() string { return proto.CompactTextString(m) } func (*EventBlockFillRestrictions) ProtoMessage() {} func (*EventBlockFillRestrictions) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 4} } func (m *EventBlockFillRestrictions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5989,7 +6291,7 @@ func (m *EventBlockFillBackgroundColor) Reset() { *m = EventBlockFillBac func (m *EventBlockFillBackgroundColor) String() string { return proto.CompactTextString(m) } func (*EventBlockFillBackgroundColor) ProtoMessage() {} func (*EventBlockFillBackgroundColor) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 5} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 5} } func (m *EventBlockFillBackgroundColor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6041,7 +6343,7 @@ func (m *EventBlockFillAlign) Reset() { *m = EventBlockFillAlign{} } func (m *EventBlockFillAlign) String() string { return proto.CompactTextString(m) } func (*EventBlockFillAlign) ProtoMessage() {} func (*EventBlockFillAlign) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 6} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 6} } func (m *EventBlockFillAlign) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6097,7 +6399,7 @@ func (m *EventBlockFillText) Reset() { *m = EventBlockFillText{} } func (m *EventBlockFillText) String() string { return proto.CompactTextString(m) } func (*EventBlockFillText) ProtoMessage() {} func (*EventBlockFillText) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 7} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 7} } func (m *EventBlockFillText) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6176,7 +6478,7 @@ func (m *EventBlockFillTextText) Reset() { *m = EventBlockFillTextText{} func (m *EventBlockFillTextText) String() string { return proto.CompactTextString(m) } func (*EventBlockFillTextText) ProtoMessage() {} func (*EventBlockFillTextText) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 7, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 7, 0} } func (m *EventBlockFillTextText) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6220,7 +6522,7 @@ func (m *EventBlockFillTextStyle) Reset() { *m = EventBlockFillTextStyle func (m *EventBlockFillTextStyle) String() string { return proto.CompactTextString(m) } func (*EventBlockFillTextStyle) ProtoMessage() {} func (*EventBlockFillTextStyle) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 7, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 7, 1} } func (m *EventBlockFillTextStyle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6264,7 +6566,7 @@ func (m *EventBlockFillTextMarks) Reset() { *m = EventBlockFillTextMarks func (m *EventBlockFillTextMarks) String() string { return proto.CompactTextString(m) } func (*EventBlockFillTextMarks) ProtoMessage() {} func (*EventBlockFillTextMarks) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 7, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 7, 2} } func (m *EventBlockFillTextMarks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6308,7 +6610,7 @@ func (m *EventBlockFillTextChecked) Reset() { *m = EventBlockFillTextChe func (m *EventBlockFillTextChecked) String() string { return proto.CompactTextString(m) } func (*EventBlockFillTextChecked) ProtoMessage() {} func (*EventBlockFillTextChecked) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 7, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 7, 3} } func (m *EventBlockFillTextChecked) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6352,7 +6654,7 @@ func (m *EventBlockFillTextColor) Reset() { *m = EventBlockFillTextColor func (m *EventBlockFillTextColor) String() string { return proto.CompactTextString(m) } func (*EventBlockFillTextColor) ProtoMessage() {} func (*EventBlockFillTextColor) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 7, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 7, 4} } func (m *EventBlockFillTextColor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6397,7 +6699,7 @@ func (m *EventBlockFillDiv) Reset() { *m = EventBlockFillDiv{} } func (m *EventBlockFillDiv) String() string { return proto.CompactTextString(m) } func (*EventBlockFillDiv) ProtoMessage() {} func (*EventBlockFillDiv) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 8} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 8} } func (m *EventBlockFillDiv) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6448,7 +6750,7 @@ func (m *EventBlockFillDivStyle) Reset() { *m = EventBlockFillDivStyle{} func (m *EventBlockFillDivStyle) String() string { return proto.CompactTextString(m) } func (*EventBlockFillDivStyle) ProtoMessage() {} func (*EventBlockFillDivStyle) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 8, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 8, 0} } func (m *EventBlockFillDivStyle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6499,7 +6801,7 @@ func (m *EventBlockFillFile) Reset() { *m = EventBlockFillFile{} } func (m *EventBlockFillFile) String() string { return proto.CompactTextString(m) } func (*EventBlockFillFile) ProtoMessage() {} func (*EventBlockFillFile) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 9} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 9} } func (m *EventBlockFillFile) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6592,7 +6894,7 @@ func (m *EventBlockFillFileName) Reset() { *m = EventBlockFillFileName{} func (m *EventBlockFillFileName) String() string { return proto.CompactTextString(m) } func (*EventBlockFillFileName) ProtoMessage() {} func (*EventBlockFillFileName) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 9, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 9, 0} } func (m *EventBlockFillFileName) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6636,7 +6938,7 @@ func (m *EventBlockFillFileWidth) Reset() { *m = EventBlockFillFileWidth func (m *EventBlockFillFileWidth) String() string { return proto.CompactTextString(m) } func (*EventBlockFillFileWidth) ProtoMessage() {} func (*EventBlockFillFileWidth) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 9, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 9, 1} } func (m *EventBlockFillFileWidth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6680,7 +6982,7 @@ func (m *EventBlockFillFileState) Reset() { *m = EventBlockFillFileState func (m *EventBlockFillFileState) String() string { return proto.CompactTextString(m) } func (*EventBlockFillFileState) ProtoMessage() {} func (*EventBlockFillFileState) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 9, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 9, 2} } func (m *EventBlockFillFileState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6724,7 +7026,7 @@ func (m *EventBlockFillFileType) Reset() { *m = EventBlockFillFileType{} func (m *EventBlockFillFileType) String() string { return proto.CompactTextString(m) } func (*EventBlockFillFileType) ProtoMessage() {} func (*EventBlockFillFileType) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 9, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 9, 3} } func (m *EventBlockFillFileType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6768,7 +7070,7 @@ func (m *EventBlockFillFileStyle) Reset() { *m = EventBlockFillFileStyle func (m *EventBlockFillFileStyle) String() string { return proto.CompactTextString(m) } func (*EventBlockFillFileStyle) ProtoMessage() {} func (*EventBlockFillFileStyle) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 9, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 9, 4} } func (m *EventBlockFillFileStyle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6812,7 +7114,7 @@ func (m *EventBlockFillFileHash) Reset() { *m = EventBlockFillFileHash{} func (m *EventBlockFillFileHash) String() string { return proto.CompactTextString(m) } func (*EventBlockFillFileHash) ProtoMessage() {} func (*EventBlockFillFileHash) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 9, 5} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 9, 5} } func (m *EventBlockFillFileHash) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6856,7 +7158,7 @@ func (m *EventBlockFillFileMime) Reset() { *m = EventBlockFillFileMime{} func (m *EventBlockFillFileMime) String() string { return proto.CompactTextString(m) } func (*EventBlockFillFileMime) ProtoMessage() {} func (*EventBlockFillFileMime) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 9, 6} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 9, 6} } func (m *EventBlockFillFileMime) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6900,7 +7202,7 @@ func (m *EventBlockFillFileSize) Reset() { *m = EventBlockFillFileSize{} func (m *EventBlockFillFileSize) String() string { return proto.CompactTextString(m) } func (*EventBlockFillFileSize) ProtoMessage() {} func (*EventBlockFillFileSize) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 9, 7} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 9, 7} } func (m *EventBlockFillFileSize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6947,7 +7249,7 @@ func (m *EventBlockFillLink) Reset() { *m = EventBlockFillLink{} } func (m *EventBlockFillLink) String() string { return proto.CompactTextString(m) } func (*EventBlockFillLink) ProtoMessage() {} func (*EventBlockFillLink) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 10} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 10} } func (m *EventBlockFillLink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7012,7 +7314,7 @@ func (m *EventBlockFillLinkTargetBlockId) Reset() { *m = EventBlockFillL func (m *EventBlockFillLinkTargetBlockId) String() string { return proto.CompactTextString(m) } func (*EventBlockFillLinkTargetBlockId) ProtoMessage() {} func (*EventBlockFillLinkTargetBlockId) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 10, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 10, 0} } func (m *EventBlockFillLinkTargetBlockId) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7056,7 +7358,7 @@ func (m *EventBlockFillLinkStyle) Reset() { *m = EventBlockFillLinkStyle func (m *EventBlockFillLinkStyle) String() string { return proto.CompactTextString(m) } func (*EventBlockFillLinkStyle) ProtoMessage() {} func (*EventBlockFillLinkStyle) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 10, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 10, 1} } func (m *EventBlockFillLinkStyle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7100,7 +7402,7 @@ func (m *EventBlockFillLinkFields) Reset() { *m = EventBlockFillLinkFiel func (m *EventBlockFillLinkFields) String() string { return proto.CompactTextString(m) } func (*EventBlockFillLinkFields) ProtoMessage() {} func (*EventBlockFillLinkFields) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 10, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 10, 2} } func (m *EventBlockFillLinkFields) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7151,7 +7453,7 @@ func (m *EventBlockFillBookmark) Reset() { *m = EventBlockFillBookmark{} func (m *EventBlockFillBookmark) String() string { return proto.CompactTextString(m) } func (*EventBlockFillBookmark) ProtoMessage() {} func (*EventBlockFillBookmark) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 11} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 11} } func (m *EventBlockFillBookmark) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7244,7 +7546,7 @@ func (m *EventBlockFillBookmarkUrl) Reset() { *m = EventBlockFillBookmar func (m *EventBlockFillBookmarkUrl) String() string { return proto.CompactTextString(m) } func (*EventBlockFillBookmarkUrl) ProtoMessage() {} func (*EventBlockFillBookmarkUrl) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 11, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 11, 0} } func (m *EventBlockFillBookmarkUrl) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7288,7 +7590,7 @@ func (m *EventBlockFillBookmarkTitle) Reset() { *m = EventBlockFillBookm func (m *EventBlockFillBookmarkTitle) String() string { return proto.CompactTextString(m) } func (*EventBlockFillBookmarkTitle) ProtoMessage() {} func (*EventBlockFillBookmarkTitle) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 11, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 11, 1} } func (m *EventBlockFillBookmarkTitle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7332,7 +7634,7 @@ func (m *EventBlockFillBookmarkDescription) Reset() { *m = EventBlockFil func (m *EventBlockFillBookmarkDescription) String() string { return proto.CompactTextString(m) } func (*EventBlockFillBookmarkDescription) ProtoMessage() {} func (*EventBlockFillBookmarkDescription) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 11, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 11, 2} } func (m *EventBlockFillBookmarkDescription) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7376,7 +7678,7 @@ func (m *EventBlockFillBookmarkImageHash) Reset() { *m = EventBlockFillB func (m *EventBlockFillBookmarkImageHash) String() string { return proto.CompactTextString(m) } func (*EventBlockFillBookmarkImageHash) ProtoMessage() {} func (*EventBlockFillBookmarkImageHash) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 11, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 11, 3} } func (m *EventBlockFillBookmarkImageHash) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7420,7 +7722,7 @@ func (m *EventBlockFillBookmarkFaviconHash) Reset() { *m = EventBlockFil func (m *EventBlockFillBookmarkFaviconHash) String() string { return proto.CompactTextString(m) } func (*EventBlockFillBookmarkFaviconHash) ProtoMessage() {} func (*EventBlockFillBookmarkFaviconHash) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 11, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 11, 4} } func (m *EventBlockFillBookmarkFaviconHash) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7464,7 +7766,7 @@ func (m *EventBlockFillBookmarkType) Reset() { *m = EventBlockFillBookma func (m *EventBlockFillBookmarkType) String() string { return proto.CompactTextString(m) } func (*EventBlockFillBookmarkType) ProtoMessage() {} func (*EventBlockFillBookmarkType) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 11, 5} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 11, 5} } func (m *EventBlockFillBookmarkType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7508,7 +7810,7 @@ func (m *EventBlockFillBookmarkTargetObjectId) Reset() { *m = EventBlock func (m *EventBlockFillBookmarkTargetObjectId) String() string { return proto.CompactTextString(m) } func (*EventBlockFillBookmarkTargetObjectId) ProtoMessage() {} func (*EventBlockFillBookmarkTargetObjectId) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 5, 11, 6} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 5, 11, 6} } func (m *EventBlockFillBookmarkTargetObjectId) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7551,7 +7853,7 @@ func (m *EventBlockDataview) Reset() { *m = EventBlockDataview{} } func (m *EventBlockDataview) String() string { return proto.CompactTextString(m) } func (*EventBlockDataview) ProtoMessage() {} func (*EventBlockDataview) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6} } func (m *EventBlockDataview) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7591,7 +7893,7 @@ func (m *EventBlockDataviewViewSet) Reset() { *m = EventBlockDataviewVie func (m *EventBlockDataviewViewSet) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewSet) ProtoMessage() {} func (*EventBlockDataviewViewSet) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 0} } func (m *EventBlockDataviewViewSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7654,7 +7956,7 @@ func (m *EventBlockDataviewViewUpdate) Reset() { *m = EventBlockDataview func (m *EventBlockDataviewViewUpdate) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdate) ProtoMessage() {} func (*EventBlockDataviewViewUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1} } func (m *EventBlockDataviewViewUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7743,7 +8045,7 @@ func (m *EventBlockDataviewViewUpdateFields) Reset() { *m = EventBlockDa func (m *EventBlockDataviewViewUpdateFields) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateFields) ProtoMessage() {} func (*EventBlockDataviewViewUpdateFields) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 0} } func (m *EventBlockDataviewViewUpdateFields) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7863,7 +8165,7 @@ func (m *EventBlockDataviewViewUpdateFilter) Reset() { *m = EventBlockDa func (m *EventBlockDataviewViewUpdateFilter) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateFilter) ProtoMessage() {} func (*EventBlockDataviewViewUpdateFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 1} } func (m *EventBlockDataviewViewUpdateFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7974,7 +8276,7 @@ func (m *EventBlockDataviewViewUpdateFilterAdd) Reset() { *m = EventBloc func (m *EventBlockDataviewViewUpdateFilterAdd) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateFilterAdd) ProtoMessage() {} func (*EventBlockDataviewViewUpdateFilterAdd) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 1, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 1, 0} } func (m *EventBlockDataviewViewUpdateFilterAdd) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8027,7 +8329,7 @@ func (m *EventBlockDataviewViewUpdateFilterRemove) Reset() { func (m *EventBlockDataviewViewUpdateFilterRemove) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateFilterRemove) ProtoMessage() {} func (*EventBlockDataviewViewUpdateFilterRemove) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 1, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 1, 1} } func (m *EventBlockDataviewViewUpdateFilterRemove) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8074,7 +8376,7 @@ func (m *EventBlockDataviewViewUpdateFilterUpdate) Reset() { func (m *EventBlockDataviewViewUpdateFilterUpdate) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateFilterUpdate) ProtoMessage() {} func (*EventBlockDataviewViewUpdateFilterUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 1, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 1, 2} } func (m *EventBlockDataviewViewUpdateFilterUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8128,7 +8430,7 @@ func (m *EventBlockDataviewViewUpdateFilterMove) Reset() { func (m *EventBlockDataviewViewUpdateFilterMove) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateFilterMove) ProtoMessage() {} func (*EventBlockDataviewViewUpdateFilterMove) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 1, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 1, 3} } func (m *EventBlockDataviewViewUpdateFilterMove) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8185,7 +8487,7 @@ func (m *EventBlockDataviewViewUpdateRelation) Reset() { *m = EventBlock func (m *EventBlockDataviewViewUpdateRelation) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateRelation) ProtoMessage() {} func (*EventBlockDataviewViewUpdateRelation) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 2} } func (m *EventBlockDataviewViewUpdateRelation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8298,7 +8600,7 @@ func (m *EventBlockDataviewViewUpdateRelationAdd) Reset() { func (m *EventBlockDataviewViewUpdateRelationAdd) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateRelationAdd) ProtoMessage() {} func (*EventBlockDataviewViewUpdateRelationAdd) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 2, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 2, 0} } func (m *EventBlockDataviewViewUpdateRelationAdd) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8353,7 +8655,7 @@ func (m *EventBlockDataviewViewUpdateRelationRemove) String() string { } func (*EventBlockDataviewViewUpdateRelationRemove) ProtoMessage() {} func (*EventBlockDataviewViewUpdateRelationRemove) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 2, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 2, 1} } func (m *EventBlockDataviewViewUpdateRelationRemove) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8402,7 +8704,7 @@ func (m *EventBlockDataviewViewUpdateRelationUpdate) String() string { } func (*EventBlockDataviewViewUpdateRelationUpdate) ProtoMessage() {} func (*EventBlockDataviewViewUpdateRelationUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 2, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 2, 2} } func (m *EventBlockDataviewViewUpdateRelationUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8456,7 +8758,7 @@ func (m *EventBlockDataviewViewUpdateRelationMove) Reset() { func (m *EventBlockDataviewViewUpdateRelationMove) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateRelationMove) ProtoMessage() {} func (*EventBlockDataviewViewUpdateRelationMove) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 2, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 2, 3} } func (m *EventBlockDataviewViewUpdateRelationMove) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8513,7 +8815,7 @@ func (m *EventBlockDataviewViewUpdateSort) Reset() { *m = EventBlockData func (m *EventBlockDataviewViewUpdateSort) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateSort) ProtoMessage() {} func (*EventBlockDataviewViewUpdateSort) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 3} } func (m *EventBlockDataviewViewUpdateSort) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8624,7 +8926,7 @@ func (m *EventBlockDataviewViewUpdateSortAdd) Reset() { *m = EventBlockD func (m *EventBlockDataviewViewUpdateSortAdd) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateSortAdd) ProtoMessage() {} func (*EventBlockDataviewViewUpdateSortAdd) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 3, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 3, 0} } func (m *EventBlockDataviewViewUpdateSortAdd) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8677,7 +8979,7 @@ func (m *EventBlockDataviewViewUpdateSortRemove) Reset() { func (m *EventBlockDataviewViewUpdateSortRemove) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateSortRemove) ProtoMessage() {} func (*EventBlockDataviewViewUpdateSortRemove) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 3, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 3, 1} } func (m *EventBlockDataviewViewUpdateSortRemove) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8724,7 +9026,7 @@ func (m *EventBlockDataviewViewUpdateSortUpdate) Reset() { func (m *EventBlockDataviewViewUpdateSortUpdate) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateSortUpdate) ProtoMessage() {} func (*EventBlockDataviewViewUpdateSortUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 3, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 3, 2} } func (m *EventBlockDataviewViewUpdateSortUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8776,7 +9078,7 @@ func (m *EventBlockDataviewViewUpdateSortMove) Reset() { *m = EventBlock func (m *EventBlockDataviewViewUpdateSortMove) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewUpdateSortMove) ProtoMessage() {} func (*EventBlockDataviewViewUpdateSortMove) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 1, 3, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 1, 3, 3} } func (m *EventBlockDataviewViewUpdateSortMove) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8828,7 +9130,7 @@ func (m *EventBlockDataviewViewDelete) Reset() { *m = EventBlockDataview func (m *EventBlockDataviewViewDelete) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewDelete) ProtoMessage() {} func (*EventBlockDataviewViewDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 2} } func (m *EventBlockDataviewViewDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8880,7 +9182,7 @@ func (m *EventBlockDataviewViewOrder) Reset() { *m = EventBlockDataviewV func (m *EventBlockDataviewViewOrder) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewViewOrder) ProtoMessage() {} func (*EventBlockDataviewViewOrder) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 3} } func (m *EventBlockDataviewViewOrder) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8932,7 +9234,7 @@ func (m *EventBlockDataviewSourceSet) Reset() { *m = EventBlockDataviewS func (m *EventBlockDataviewSourceSet) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewSourceSet) ProtoMessage() {} func (*EventBlockDataviewSourceSet) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 4} } func (m *EventBlockDataviewSourceSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8984,7 +9286,7 @@ func (m *EventBlockDataviewOldRelationDelete) Reset() { *m = EventBlockD func (m *EventBlockDataviewOldRelationDelete) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewOldRelationDelete) ProtoMessage() {} func (*EventBlockDataviewOldRelationDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 5} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 5} } func (m *EventBlockDataviewOldRelationDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9038,7 +9340,7 @@ func (m *EventBlockDataviewOldRelationSet) Reset() { *m = EventBlockData func (m *EventBlockDataviewOldRelationSet) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewOldRelationSet) ProtoMessage() {} func (*EventBlockDataviewOldRelationSet) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 6} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 6} } func (m *EventBlockDataviewOldRelationSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9097,7 +9399,7 @@ func (m *EventBlockDataviewRelationDelete) Reset() { *m = EventBlockData func (m *EventBlockDataviewRelationDelete) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewRelationDelete) ProtoMessage() {} func (*EventBlockDataviewRelationDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 7} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 7} } func (m *EventBlockDataviewRelationDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9150,7 +9452,7 @@ func (m *EventBlockDataviewRelationSet) Reset() { *m = EventBlockDatavie func (m *EventBlockDataviewRelationSet) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewRelationSet) ProtoMessage() {} func (*EventBlockDataviewRelationSet) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 8} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 8} } func (m *EventBlockDataviewRelationSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9202,7 +9504,7 @@ func (m *EventBlockDataviewGroupOrderUpdate) Reset() { *m = EventBlockDa func (m *EventBlockDataviewGroupOrderUpdate) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewGroupOrderUpdate) ProtoMessage() {} func (*EventBlockDataviewGroupOrderUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 9} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 9} } func (m *EventBlockDataviewGroupOrderUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9256,7 +9558,7 @@ func (m *EventBlockDataviewObjectOrderUpdate) Reset() { *m = EventBlockD func (m *EventBlockDataviewObjectOrderUpdate) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewObjectOrderUpdate) ProtoMessage() {} func (*EventBlockDataviewObjectOrderUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 10} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 10} } func (m *EventBlockDataviewObjectOrderUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9323,7 +9625,7 @@ func (m *EventBlockDataviewSliceChange) Reset() { *m = EventBlockDatavie func (m *EventBlockDataviewSliceChange) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewSliceChange) ProtoMessage() {} func (*EventBlockDataviewSliceChange) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 11} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 11} } func (m *EventBlockDataviewSliceChange) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9382,7 +9684,7 @@ func (m *EventBlockDataviewTargetObjectIdSet) Reset() { *m = EventBlockD func (m *EventBlockDataviewTargetObjectIdSet) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewTargetObjectIdSet) ProtoMessage() {} func (*EventBlockDataviewTargetObjectIdSet) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 12} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 12} } func (m *EventBlockDataviewTargetObjectIdSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9434,7 +9736,7 @@ func (m *EventBlockDataviewIsCollectionSet) Reset() { *m = EventBlockDat func (m *EventBlockDataviewIsCollectionSet) String() string { return proto.CompactTextString(m) } func (*EventBlockDataviewIsCollectionSet) ProtoMessage() {} func (*EventBlockDataviewIsCollectionSet) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 3, 6, 13} + return fileDescriptor_a966342d378ae5f5, []int{0, 4, 6, 13} } func (m *EventBlockDataviewIsCollectionSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9484,7 +9786,7 @@ func (m *EventUser) Reset() { *m = EventUser{} } func (m *EventUser) String() string { return proto.CompactTextString(m) } func (*EventUser) ProtoMessage() {} func (*EventUser) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 4} + return fileDescriptor_a966342d378ae5f5, []int{0, 5} } func (m *EventUser) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9520,7 +9822,7 @@ func (m *EventUserBlock) Reset() { *m = EventUserBlock{} } func (m *EventUserBlock) String() string { return proto.CompactTextString(m) } func (*EventUserBlock) ProtoMessage() {} func (*EventUserBlock) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 4, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 5, 0} } func (m *EventUserBlock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9564,7 +9866,7 @@ func (m *EventUserBlockJoin) Reset() { *m = EventUserBlockJoin{} } func (m *EventUserBlockJoin) String() string { return proto.CompactTextString(m) } func (*EventUserBlockJoin) ProtoMessage() {} func (*EventUserBlockJoin) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 4, 0, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 5, 0, 0} } func (m *EventUserBlockJoin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9615,7 +9917,7 @@ func (m *EventUserBlockLeft) Reset() { *m = EventUserBlockLeft{} } func (m *EventUserBlockLeft) String() string { return proto.CompactTextString(m) } func (*EventUserBlockLeft) ProtoMessage() {} func (*EventUserBlockLeft) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 4, 0, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 5, 0, 1} } func (m *EventUserBlockLeft) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9666,7 +9968,7 @@ func (m *EventUserBlockTextRange) Reset() { *m = EventUserBlockTextRange func (m *EventUserBlockTextRange) String() string { return proto.CompactTextString(m) } func (*EventUserBlockTextRange) ProtoMessage() {} func (*EventUserBlockTextRange) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 4, 0, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 5, 0, 2} } func (m *EventUserBlockTextRange) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9730,7 +10032,7 @@ func (m *EventUserBlockSelectRange) Reset() { *m = EventUserBlockSelectR func (m *EventUserBlockSelectRange) String() string { return proto.CompactTextString(m) } func (*EventUserBlockSelectRange) ProtoMessage() {} func (*EventUserBlockSelectRange) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 4, 0, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 5, 0, 3} } func (m *EventUserBlockSelectRange) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9781,7 +10083,7 @@ func (m *EventPing) Reset() { *m = EventPing{} } func (m *EventPing) String() string { return proto.CompactTextString(m) } func (*EventPing) ProtoMessage() {} func (*EventPing) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 5} + return fileDescriptor_a966342d378ae5f5, []int{0, 6} } func (m *EventPing) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9824,7 +10126,7 @@ func (m *EventProcess) Reset() { *m = EventProcess{} } func (m *EventProcess) String() string { return proto.CompactTextString(m) } func (*EventProcess) ProtoMessage() {} func (*EventProcess) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 6} + return fileDescriptor_a966342d378ae5f5, []int{0, 7} } func (m *EventProcess) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9861,7 +10163,7 @@ func (m *EventProcessNew) Reset() { *m = EventProcessNew{} } func (m *EventProcessNew) String() string { return proto.CompactTextString(m) } func (*EventProcessNew) ProtoMessage() {} func (*EventProcessNew) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 6, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 7, 0} } func (m *EventProcessNew) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9905,7 +10207,7 @@ func (m *EventProcessUpdate) Reset() { *m = EventProcessUpdate{} } func (m *EventProcessUpdate) String() string { return proto.CompactTextString(m) } func (*EventProcessUpdate) ProtoMessage() {} func (*EventProcessUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 6, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 7, 1} } func (m *EventProcessUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9949,7 +10251,7 @@ func (m *EventProcessDone) Reset() { *m = EventProcessDone{} } func (m *EventProcessDone) String() string { return proto.CompactTextString(m) } func (*EventProcessDone) ProtoMessage() {} func (*EventProcessDone) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 6, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 7, 2} } func (m *EventProcessDone) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9992,7 +10294,7 @@ func (m *EventStatus) Reset() { *m = EventStatus{} } func (m *EventStatus) String() string { return proto.CompactTextString(m) } func (*EventStatus) ProtoMessage() {} func (*EventStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 7} + return fileDescriptor_a966342d378ae5f5, []int{0, 8} } func (m *EventStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10031,7 +10333,7 @@ func (m *EventStatusThread) Reset() { *m = EventStatusThread{} } func (m *EventStatusThread) String() string { return proto.CompactTextString(m) } func (*EventStatusThread) ProtoMessage() {} func (*EventStatusThread) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 7, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 8, 0} } func (m *EventStatusThread) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10089,7 +10391,7 @@ func (m *EventStatusThreadSummary) Reset() { *m = EventStatusThreadSumma func (m *EventStatusThreadSummary) String() string { return proto.CompactTextString(m) } func (*EventStatusThreadSummary) ProtoMessage() {} func (*EventStatusThreadSummary) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 7, 0, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 8, 0, 0} } func (m *EventStatusThreadSummary) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10136,7 +10438,7 @@ func (m *EventStatusThreadCafe) Reset() { *m = EventStatusThreadCafe{} } func (m *EventStatusThreadCafe) String() string { return proto.CompactTextString(m) } func (*EventStatusThreadCafe) ProtoMessage() {} func (*EventStatusThreadCafe) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 7, 0, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 8, 0, 1} } func (m *EventStatusThreadCafe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10204,7 +10506,7 @@ func (m *EventStatusThreadCafePinStatus) Reset() { *m = EventStatusThrea func (m *EventStatusThreadCafePinStatus) String() string { return proto.CompactTextString(m) } func (*EventStatusThreadCafePinStatus) ProtoMessage() {} func (*EventStatusThreadCafePinStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 7, 0, 1, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 8, 0, 1, 0} } func (m *EventStatusThreadCafePinStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10275,7 +10577,7 @@ func (m *EventStatusThreadAccount) Reset() { *m = EventStatusThreadAccou func (m *EventStatusThreadAccount) String() string { return proto.CompactTextString(m) } func (*EventStatusThreadAccount) ProtoMessage() {} func (*EventStatusThreadAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 7, 0, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 8, 0, 2} } func (m *EventStatusThreadAccount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10364,7 +10666,7 @@ func (m *EventStatusThreadDevice) Reset() { *m = EventStatusThreadDevice func (m *EventStatusThreadDevice) String() string { return proto.CompactTextString(m) } func (*EventStatusThreadDevice) ProtoMessage() {} func (*EventStatusThreadDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 7, 0, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 8, 0, 3} } func (m *EventStatusThreadDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10428,7 +10730,7 @@ func (m *EventFile) Reset() { *m = EventFile{} } func (m *EventFile) String() string { return proto.CompactTextString(m) } func (*EventFile) ProtoMessage() {} func (*EventFile) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 8} + return fileDescriptor_a966342d378ae5f5, []int{0, 9} } func (m *EventFile) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10466,7 +10768,7 @@ func (m *EventFileLimitReached) Reset() { *m = EventFileLimitReached{} } func (m *EventFileLimitReached) String() string { return proto.CompactTextString(m) } func (*EventFileLimitReached) ProtoMessage() {} func (*EventFileLimitReached) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 8, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 9, 0} } func (m *EventFileLimitReached) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10518,7 +10820,7 @@ func (m *EventFileSpaceUsage) Reset() { *m = EventFileSpaceUsage{} } func (m *EventFileSpaceUsage) String() string { return proto.CompactTextString(m) } func (*EventFileSpaceUsage) ProtoMessage() {} func (*EventFileSpaceUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 8, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 9, 1} } func (m *EventFileSpaceUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10569,7 +10871,7 @@ func (m *EventFileLocalUsage) Reset() { *m = EventFileLocalUsage{} } func (m *EventFileLocalUsage) String() string { return proto.CompactTextString(m) } func (*EventFileLocalUsage) ProtoMessage() {} func (*EventFileLocalUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 8, 2} + return fileDescriptor_a966342d378ae5f5, []int{0, 9, 2} } func (m *EventFileLocalUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10613,7 +10915,7 @@ func (m *EventFileLimitUpdated) Reset() { *m = EventFileLimitUpdated{} } func (m *EventFileLimitUpdated) String() string { return proto.CompactTextString(m) } func (*EventFileLimitUpdated) ProtoMessage() {} func (*EventFileLimitUpdated) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 8, 3} + return fileDescriptor_a966342d378ae5f5, []int{0, 9, 3} } func (m *EventFileLimitUpdated) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10656,7 +10958,7 @@ func (m *EventMembership) Reset() { *m = EventMembership{} } func (m *EventMembership) String() string { return proto.CompactTextString(m) } func (*EventMembership) ProtoMessage() {} func (*EventMembership) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 9} + return fileDescriptor_a966342d378ae5f5, []int{0, 10} } func (m *EventMembership) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10693,7 +10995,7 @@ func (m *EventMembershipUpdate) Reset() { *m = EventMembershipUpdate{} } func (m *EventMembershipUpdate) String() string { return proto.CompactTextString(m) } func (*EventMembershipUpdate) ProtoMessage() {} func (*EventMembershipUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 9, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 10, 0} } func (m *EventMembershipUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10736,7 +11038,7 @@ func (m *EventNotification) Reset() { *m = EventNotification{} } func (m *EventNotification) String() string { return proto.CompactTextString(m) } func (*EventNotification) ProtoMessage() {} func (*EventNotification) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 10} + return fileDescriptor_a966342d378ae5f5, []int{0, 11} } func (m *EventNotification) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10773,7 +11075,7 @@ func (m *EventNotificationSend) Reset() { *m = EventNotificationSend{} } func (m *EventNotificationSend) String() string { return proto.CompactTextString(m) } func (*EventNotificationSend) ProtoMessage() {} func (*EventNotificationSend) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 10, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 11, 0} } func (m *EventNotificationSend) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10817,7 +11119,7 @@ func (m *EventNotificationUpdate) Reset() { *m = EventNotificationUpdate func (m *EventNotificationUpdate) String() string { return proto.CompactTextString(m) } func (*EventNotificationUpdate) ProtoMessage() {} func (*EventNotificationUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 10, 1} + return fileDescriptor_a966342d378ae5f5, []int{0, 11, 1} } func (m *EventNotificationUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10860,7 +11162,7 @@ func (m *EventPayload) Reset() { *m = EventPayload{} } func (m *EventPayload) String() string { return proto.CompactTextString(m) } func (*EventPayload) ProtoMessage() {} func (*EventPayload) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 11} + return fileDescriptor_a966342d378ae5f5, []int{0, 12} } func (m *EventPayload) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10897,7 +11199,7 @@ func (m *EventPayloadBroadcast) Reset() { *m = EventPayloadBroadcast{} } func (m *EventPayloadBroadcast) String() string { return proto.CompactTextString(m) } func (*EventPayloadBroadcast) ProtoMessage() {} func (*EventPayloadBroadcast) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 11, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 12, 0} } func (m *EventPayloadBroadcast) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10940,7 +11242,7 @@ func (m *EventSpace) Reset() { *m = EventSpace{} } func (m *EventSpace) String() string { return proto.CompactTextString(m) } func (*EventSpace) ProtoMessage() {} func (*EventSpace) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 12} + return fileDescriptor_a966342d378ae5f5, []int{0, 13} } func (m *EventSpace) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10976,7 +11278,7 @@ func (m *EventSpaceSyncStatus) Reset() { *m = EventSpaceSyncStatus{} } func (m *EventSpaceSyncStatus) String() string { return proto.CompactTextString(m) } func (*EventSpaceSyncStatus) ProtoMessage() {} func (*EventSpaceSyncStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 12, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 13, 0} } func (m *EventSpaceSyncStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11017,7 +11319,7 @@ func (m *EventSpaceSyncStatusUpdate) Reset() { *m = EventSpaceSyncStatus func (m *EventSpaceSyncStatusUpdate) String() string { return proto.CompactTextString(m) } func (*EventSpaceSyncStatusUpdate) ProtoMessage() {} func (*EventSpaceSyncStatusUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 12, 0, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 13, 0, 0} } func (m *EventSpaceSyncStatusUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11088,7 +11390,7 @@ func (m *EventP2PStatus) Reset() { *m = EventP2PStatus{} } func (m *EventP2PStatus) String() string { return proto.CompactTextString(m) } func (*EventP2PStatus) ProtoMessage() {} func (*EventP2PStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 13} + return fileDescriptor_a966342d378ae5f5, []int{0, 14} } func (m *EventP2PStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11127,7 +11429,7 @@ func (m *EventP2PStatusUpdate) Reset() { *m = EventP2PStatusUpdate{} } func (m *EventP2PStatusUpdate) String() string { return proto.CompactTextString(m) } func (*EventP2PStatusUpdate) ProtoMessage() {} func (*EventP2PStatusUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 13, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 14, 0} } func (m *EventP2PStatusUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11184,7 +11486,7 @@ func (m *EventImport) Reset() { *m = EventImport{} } func (m *EventImport) String() string { return proto.CompactTextString(m) } func (*EventImport) ProtoMessage() {} func (*EventImport) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 14} + return fileDescriptor_a966342d378ae5f5, []int{0, 15} } func (m *EventImport) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11223,7 +11525,7 @@ func (m *EventImportFinish) Reset() { *m = EventImportFinish{} } func (m *EventImportFinish) String() string { return proto.CompactTextString(m) } func (*EventImportFinish) ProtoMessage() {} func (*EventImportFinish) Descriptor() ([]byte, []int) { - return fileDescriptor_a966342d378ae5f5, []int{0, 14, 0} + return fileDescriptor_a966342d378ae5f5, []int{0, 15, 0} } func (m *EventImportFinish) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11508,6 +11810,11 @@ func init() { proto.RegisterEnum("anytype.ModelProcessState", ModelProcessState_name, ModelProcessState_value) proto.RegisterType((*Event)(nil), "anytype.Event") proto.RegisterType((*EventMessage)(nil), "anytype.Event.Message") + proto.RegisterType((*EventChat)(nil), "anytype.Event.Chat") + proto.RegisterType((*EventChatAdd)(nil), "anytype.Event.Chat.Add") + proto.RegisterType((*EventChatDelete)(nil), "anytype.Event.Chat.Delete") + proto.RegisterType((*EventChatUpdate)(nil), "anytype.Event.Chat.Update") + proto.RegisterType((*EventChatUpdateReactions)(nil), "anytype.Event.Chat.UpdateReactions") proto.RegisterType((*EventAccount)(nil), "anytype.Event.Account") proto.RegisterType((*EventAccountShow)(nil), "anytype.Event.Account.Show") proto.RegisterType((*EventAccountDetails)(nil), "anytype.Event.Account.Details") @@ -11709,377 +12016,387 @@ func init() { func init() { proto.RegisterFile("pb/protos/events.proto", fileDescriptor_a966342d378ae5f5) } var fileDescriptor_a966342d378ae5f5 = []byte{ - // 5908 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7c, 0x49, 0x8c, 0x1c, 0xc9, - 0x75, 0x76, 0xed, 0xcb, 0xeb, 0x85, 0xc5, 0x18, 0x0e, 0x27, 0x27, 0xd9, 0xc3, 0xe1, 0x34, 0x57, - 0x71, 0x38, 0x45, 0x0e, 0xb7, 0xa6, 0x28, 0x0e, 0xc9, 0xde, 0x38, 0x5d, 0x5c, 0x9a, 0xad, 0x68, - 0x92, 0x1a, 0x8d, 0x04, 0x41, 0xd9, 0x95, 0xd1, 0xd5, 0x29, 0x66, 0x67, 0x96, 0x32, 0xb3, 0x9b, - 0x6c, 0xe9, 0xff, 0x65, 0xc1, 0x0b, 0x0c, 0x03, 0x36, 0xec, 0x83, 0x21, 0x1b, 0xbe, 0x18, 0x36, - 0x6c, 0xc0, 0x80, 0x0d, 0xc3, 0x86, 0x0f, 0x96, 0x2f, 0x86, 0x01, 0xc3, 0x80, 0x57, 0x40, 0xbe, - 0xf9, 0x26, 0x61, 0x74, 0xf1, 0xc1, 0x3e, 0xc8, 0x06, 0x0c, 0x9f, 0x0c, 0x23, 0x96, 0xcc, 0x8c, - 0xc8, 0xa5, 0xb2, 0x4a, 0x33, 0xf2, 0x02, 0xeb, 0x54, 0x15, 0x11, 0xef, 0x7d, 0xb1, 0xbc, 0xf7, - 0x22, 0x5e, 0xbc, 0x88, 0x48, 0x38, 0x3a, 0xdc, 0xba, 0x38, 0xf4, 0xdc, 0xc0, 0xf5, 0x2f, 0x92, - 0x7d, 0xe2, 0x04, 0x7e, 0x97, 0xa5, 0x50, 0xd3, 0x70, 0x0e, 0x82, 0x83, 0x21, 0xd1, 0x4f, 0x0d, - 0x9f, 0x0f, 0x2e, 0xda, 0xd6, 0xd6, 0xc5, 0xe1, 0xd6, 0xc5, 0x5d, 0xd7, 0x24, 0x76, 0x48, 0xce, - 0x12, 0x82, 0x5c, 0x9f, 0x1b, 0xb8, 0xee, 0xc0, 0x26, 0xbc, 0x6c, 0x6b, 0x6f, 0xfb, 0xa2, 0x1f, - 0x78, 0x7b, 0xfd, 0x80, 0x97, 0xce, 0xff, 0xee, 0x9f, 0x94, 0xa1, 0xbe, 0x4a, 0xe1, 0xd1, 0x65, - 0x68, 0xed, 0x12, 0xdf, 0x37, 0x06, 0xc4, 0xd7, 0xca, 0x27, 0xaa, 0xe7, 0xa6, 0x2e, 0x1f, 0xed, - 0x8a, 0xaa, 0xba, 0x8c, 0xa2, 0xfb, 0x88, 0x17, 0xe3, 0x88, 0x0e, 0xcd, 0x41, 0xbb, 0xef, 0x3a, - 0x01, 0x79, 0x19, 0xf4, 0x4c, 0xad, 0x72, 0xa2, 0x7c, 0xae, 0x8d, 0xe3, 0x0c, 0x74, 0x15, 0xda, - 0x96, 0x63, 0x05, 0x96, 0x11, 0xb8, 0x9e, 0x56, 0x3d, 0x51, 0x56, 0x20, 0x59, 0x23, 0xbb, 0x8b, - 0xfd, 0xbe, 0xbb, 0xe7, 0x04, 0x38, 0x26, 0x44, 0x1a, 0x34, 0x03, 0xcf, 0xe8, 0x93, 0x9e, 0xa9, - 0xd5, 0x18, 0x62, 0x98, 0xd4, 0xff, 0xb8, 0x0b, 0x4d, 0xd1, 0x06, 0x74, 0x07, 0xa6, 0x0c, 0xce, - 0xbb, 0xb9, 0xe3, 0xbe, 0xd0, 0xca, 0x0c, 0xfd, 0x58, 0xa2, 0xc1, 0x02, 0xbd, 0x4b, 0x49, 0xd6, - 0x4a, 0x58, 0xe6, 0x40, 0x3d, 0x98, 0x15, 0xc9, 0x15, 0x12, 0x18, 0x96, 0xed, 0x6b, 0x7f, 0xc5, - 0x41, 0x8e, 0xe7, 0x80, 0x08, 0xb2, 0xb5, 0x12, 0x4e, 0x30, 0xa2, 0xcf, 0xc3, 0x2b, 0x22, 0x67, - 0xd9, 0x75, 0xb6, 0xad, 0xc1, 0xd3, 0xa1, 0x69, 0x04, 0x44, 0xfb, 0x6b, 0x8e, 0x77, 0x2a, 0x07, - 0x8f, 0xd3, 0x76, 0x39, 0xf1, 0x5a, 0x09, 0x67, 0x61, 0xa0, 0x7b, 0x30, 0x23, 0xb2, 0x05, 0xe8, - 0xdf, 0x70, 0xd0, 0x37, 0x72, 0x40, 0x23, 0x34, 0x95, 0x0d, 0x7d, 0x01, 0x8e, 0x88, 0x8c, 0x87, - 0x96, 0xf3, 0x7c, 0x79, 0xc7, 0xb0, 0x6d, 0xe2, 0x0c, 0x88, 0xf6, 0xb7, 0xa3, 0xdb, 0xa8, 0x10, - 0xaf, 0x95, 0x70, 0x26, 0x08, 0x7a, 0x0c, 0x1d, 0x77, 0xeb, 0x2b, 0xa4, 0x1f, 0x0e, 0xc8, 0x26, - 0x09, 0xb4, 0x0e, 0xc3, 0x7d, 0x2b, 0x81, 0xfb, 0x98, 0x91, 0x85, 0x43, 0xd9, 0xdd, 0x24, 0xc1, - 0x5a, 0x09, 0xa7, 0x98, 0xd1, 0x53, 0x40, 0x4a, 0xde, 0xe2, 0x2e, 0x71, 0x4c, 0xed, 0x32, 0x83, - 0x3c, 0x39, 0x1a, 0x92, 0x91, 0xae, 0x95, 0x70, 0x06, 0x40, 0x0a, 0xf6, 0xa9, 0xe3, 0x93, 0x40, - 0xbb, 0x32, 0x0e, 0x2c, 0x23, 0x4d, 0xc1, 0xb2, 0x5c, 0x3a, 0xb6, 0x3c, 0x17, 0x13, 0xdb, 0x08, - 0x2c, 0xd7, 0x11, 0xed, 0xbd, 0xca, 0x80, 0x4f, 0x67, 0x03, 0x47, 0xb4, 0x51, 0x8b, 0x33, 0x41, - 0xd0, 0x97, 0xe0, 0xd5, 0x44, 0x3e, 0x26, 0xbb, 0xee, 0x3e, 0xd1, 0xae, 0x31, 0xf4, 0x33, 0x45, - 0xe8, 0x9c, 0x7a, 0xad, 0x84, 0xb3, 0x61, 0xd0, 0x12, 0x4c, 0x87, 0x05, 0x0c, 0xf6, 0x3a, 0x83, - 0x9d, 0xcb, 0x83, 0x15, 0x60, 0x0a, 0x0f, 0xb5, 0x45, 0x9e, 0x5e, 0xb6, 0x5d, 0x9f, 0x68, 0x8b, - 0x99, 0xb6, 0x28, 0x20, 0x18, 0x09, 0xb5, 0x45, 0x89, 0x43, 0xee, 0xa4, 0x1f, 0x78, 0x56, 0x9f, - 0x35, 0x90, 0x6a, 0xd1, 0xc2, 0xe8, 0x4e, 0xc6, 0xc4, 0x42, 0x95, 0xb2, 0x61, 0x10, 0x86, 0x43, - 0xfe, 0xde, 0x96, 0xdf, 0xf7, 0xac, 0x21, 0xcd, 0x5b, 0x34, 0x4d, 0xed, 0xd6, 0x28, 0xe4, 0x4d, - 0x89, 0xb8, 0xbb, 0x68, 0x52, 0xe9, 0x24, 0x01, 0xd0, 0x17, 0x00, 0xc9, 0x59, 0x62, 0xf8, 0xde, - 0x63, 0xb0, 0x9f, 0x1a, 0x03, 0x36, 0x1a, 0xcb, 0x0c, 0x18, 0x64, 0xc0, 0x11, 0x39, 0x77, 0xc3, - 0xf5, 0x2d, 0xfa, 0xab, 0xdd, 0x66, 0xf0, 0x6f, 0x8f, 0x01, 0x1f, 0xb2, 0x50, 0xc5, 0xca, 0x82, - 0x4a, 0x56, 0xb1, 0x4c, 0xcd, 0x9a, 0x78, 0xbe, 0x76, 0x67, 0xec, 0x2a, 0x42, 0x96, 0x64, 0x15, - 0x61, 0x7e, 0x72, 0x88, 0xde, 0xf7, 0xdc, 0xbd, 0xa1, 0xaf, 0xdd, 0x1d, 0x7b, 0x88, 0x38, 0x43, - 0x72, 0x88, 0x78, 0x2e, 0xba, 0x0e, 0xad, 0x2d, 0xdb, 0xed, 0x3f, 0xa7, 0xc2, 0xac, 0x30, 0x48, - 0x2d, 0x01, 0xb9, 0x44, 0x8b, 0x85, 0xf8, 0x22, 0x5a, 0xaa, 0xac, 0xec, 0xff, 0x0a, 0xb1, 0x49, - 0x40, 0xc4, 0xb2, 0x74, 0x2c, 0x93, 0x95, 0x93, 0x50, 0x65, 0x95, 0x38, 0xd0, 0x0a, 0x4c, 0x6d, - 0x5b, 0x36, 0xf1, 0x9f, 0x0e, 0x6d, 0xd7, 0xe0, 0x6b, 0xd4, 0xd4, 0xe5, 0x13, 0x99, 0x00, 0xf7, - 0x62, 0x3a, 0x8a, 0x22, 0xb1, 0xa1, 0xdb, 0xd0, 0xde, 0x35, 0xbc, 0xe7, 0x7e, 0xcf, 0xd9, 0x76, - 0xb5, 0x7a, 0xe6, 0xc2, 0xc3, 0x31, 0x1e, 0x85, 0x54, 0x6b, 0x25, 0x1c, 0xb3, 0xd0, 0xe5, 0x8b, - 0x35, 0x6a, 0x93, 0x04, 0xf7, 0x2c, 0x62, 0x9b, 0xbe, 0xd6, 0x60, 0x20, 0x6f, 0x66, 0x82, 0x6c, - 0x92, 0xa0, 0xcb, 0xc9, 0xe8, 0xf2, 0xa5, 0x32, 0xa2, 0x0f, 0xe0, 0x95, 0x30, 0x67, 0x79, 0xc7, - 0xb2, 0x4d, 0x8f, 0x38, 0x3d, 0xd3, 0xd7, 0x9a, 0x99, 0x2b, 0x43, 0x8c, 0x27, 0xd1, 0xd2, 0xd5, - 0x2b, 0x03, 0x82, 0xce, 0x8c, 0x61, 0xb6, 0x6c, 0x92, 0x5a, 0x2b, 0x73, 0x66, 0x8c, 0xa1, 0x65, - 0x62, 0xaa, 0x5d, 0x59, 0x20, 0xc8, 0x84, 0xd7, 0xc2, 0xfc, 0x25, 0xa3, 0xff, 0x7c, 0xe0, 0xb9, - 0x7b, 0x8e, 0xb9, 0xec, 0xda, 0xae, 0xa7, 0xb5, 0x19, 0xfe, 0xb9, 0x5c, 0xfc, 0x04, 0xfd, 0x5a, - 0x09, 0xe7, 0x41, 0xa1, 0x65, 0x98, 0x0e, 0x8b, 0x9e, 0x90, 0x97, 0x81, 0x06, 0x99, 0xcb, 0x6f, - 0x0c, 0x4d, 0x89, 0xe8, 0x04, 0x29, 0x33, 0xc9, 0x20, 0x54, 0x25, 0xb4, 0xa9, 0x02, 0x10, 0x4a, - 0x24, 0x83, 0xd0, 0xb4, 0x0c, 0x42, 0x97, 0x5f, 0x6d, 0xa6, 0x00, 0x84, 0x12, 0xc9, 0x20, 0x34, - 0x4d, 0x97, 0xea, 0xa8, 0xa7, 0xae, 0xfb, 0x9c, 0xea, 0x93, 0x36, 0x9b, 0xb9, 0x54, 0x4b, 0xa3, - 0x25, 0x08, 0xe9, 0x52, 0x9d, 0x64, 0xa6, 0x0e, 0x4a, 0x98, 0xb7, 0x68, 0x5b, 0x03, 0x47, 0x3b, - 0x34, 0x42, 0x97, 0x29, 0x1a, 0xa3, 0xa2, 0x0e, 0x8a, 0xc2, 0x86, 0xee, 0x0a, 0xb3, 0xdc, 0x24, - 0xc1, 0x8a, 0xb5, 0xaf, 0x1d, 0xce, 0x5c, 0x86, 0x62, 0x94, 0x15, 0x6b, 0x3f, 0xb2, 0x4b, 0xce, - 0x22, 0x77, 0x2d, 0x5c, 0xe4, 0xb4, 0x57, 0x0b, 0xba, 0x16, 0x12, 0xca, 0x5d, 0x0b, 0xf3, 0xe4, - 0xae, 0x3d, 0x34, 0x02, 0xf2, 0x52, 0x7b, 0xbd, 0xa0, 0x6b, 0x8c, 0x4a, 0xee, 0x1a, 0xcb, 0xa0, - 0xab, 0x5b, 0x98, 0xf1, 0x8c, 0x78, 0x81, 0xd5, 0x37, 0x6c, 0x3e, 0x54, 0xa7, 0x32, 0xd7, 0xa0, - 0x18, 0x4f, 0xa1, 0xa6, 0xab, 0x5b, 0x26, 0x8c, 0xdc, 0xf1, 0x27, 0xc6, 0x96, 0x4d, 0xb0, 0xfb, - 0x42, 0x3b, 0x5d, 0xd0, 0xf1, 0x90, 0x50, 0xee, 0x78, 0x98, 0x27, 0xcf, 0x2d, 0x9f, 0xb3, 0xcc, - 0x01, 0x09, 0xb4, 0x73, 0x05, 0x73, 0x0b, 0x27, 0x93, 0xe7, 0x16, 0x9e, 0x13, 0xcd, 0x00, 0x2b, - 0x46, 0x60, 0xec, 0x5b, 0xe4, 0xc5, 0x33, 0x8b, 0xbc, 0xa0, 0x0b, 0xfb, 0x2b, 0x23, 0x66, 0x80, - 0x90, 0xb6, 0x2b, 0x88, 0xa3, 0x19, 0x20, 0x01, 0x12, 0xcd, 0x00, 0x72, 0xbe, 0x98, 0xd6, 0x8f, - 0x8c, 0x98, 0x01, 0x14, 0xfc, 0x68, 0x8e, 0xcf, 0x83, 0x42, 0x06, 0x1c, 0x4d, 0x15, 0x3d, 0xf6, - 0x4c, 0xe2, 0x69, 0x6f, 0xb0, 0x4a, 0xce, 0x16, 0x57, 0xc2, 0xc8, 0xd7, 0x4a, 0x38, 0x07, 0x28, - 0x55, 0xc5, 0xa6, 0xbb, 0xe7, 0xf5, 0x09, 0x1d, 0xa7, 0x93, 0xe3, 0x54, 0x11, 0x91, 0xa7, 0xaa, - 0x88, 0x4a, 0xd0, 0x3e, 0xbc, 0x11, 0x95, 0xd0, 0x8a, 0xd9, 0x2a, 0xca, 0x6a, 0x17, 0x1b, 0x8b, - 0x33, 0xac, 0xa6, 0xee, 0xe8, 0x9a, 0x92, 0x5c, 0x6b, 0x25, 0x3c, 0x1a, 0x16, 0x1d, 0xc0, 0x71, - 0x85, 0x80, 0xaf, 0xf3, 0x72, 0xc5, 0x67, 0x59, 0xc5, 0x17, 0x47, 0x57, 0x9c, 0x62, 0x5b, 0x2b, - 0xe1, 0x02, 0x60, 0x34, 0x84, 0x63, 0xca, 0x60, 0x84, 0x86, 0x2d, 0x54, 0xe4, 0xff, 0xb1, 0x7a, - 0x2f, 0x8c, 0xae, 0x57, 0xe5, 0x59, 0x2b, 0xe1, 0x51, 0x90, 0x68, 0x00, 0x5a, 0x66, 0x31, 0x95, - 0xe4, 0xd7, 0x33, 0xdd, 0x9e, 0x9c, 0xea, 0xb8, 0x2c, 0x73, 0xc1, 0x32, 0x35, 0x5f, 0x0c, 0xe7, - 0xff, 0x1f, 0x57, 0xf3, 0xa3, 0x71, 0xcc, 0x83, 0x52, 0x64, 0x47, 0x8b, 0x9e, 0x18, 0xde, 0x80, - 0x04, 0x7c, 0xa0, 0x7b, 0x26, 0xed, 0xd4, 0x37, 0xc6, 0x91, 0x5d, 0x8a, 0x4d, 0x91, 0x5d, 0x26, - 0x30, 0xf2, 0x61, 0x4e, 0xa1, 0xe8, 0xf9, 0xcb, 0xae, 0x6d, 0x93, 0x7e, 0x38, 0x9a, 0x3f, 0xc1, - 0x2a, 0x7e, 0x67, 0x74, 0xc5, 0x09, 0xa6, 0xb5, 0x12, 0x1e, 0x09, 0x9a, 0xea, 0xef, 0x63, 0xdb, - 0x4c, 0xe8, 0x8c, 0x36, 0x96, 0xae, 0x26, 0xd9, 0x52, 0xfd, 0x4d, 0x51, 0xa4, 0x74, 0x55, 0xa2, - 0xa0, 0xdd, 0x7d, 0x6d, 0x1c, 0x5d, 0x55, 0x79, 0x52, 0xba, 0xaa, 0x16, 0xd3, 0xd5, 0x6d, 0xcf, - 0x27, 0x1e, 0xc3, 0xb8, 0xef, 0x5a, 0x8e, 0xf6, 0x66, 0xe6, 0xea, 0xf6, 0xd4, 0x27, 0x9e, 0xa8, - 0x88, 0x52, 0xd1, 0xd5, 0x4d, 0x61, 0x53, 0x70, 0x1e, 0x92, 0xed, 0x40, 0x3b, 0x51, 0x84, 0x43, - 0xa9, 0x14, 0x1c, 0x9a, 0x41, 0x57, 0x8a, 0x28, 0x63, 0x93, 0x50, 0xa9, 0x60, 0xc3, 0x19, 0x10, - 0xed, 0xad, 0xcc, 0x95, 0x42, 0x82, 0x93, 0x88, 0xe9, 0x4a, 0x91, 0x05, 0x42, 0x77, 0xfe, 0x51, - 0x3e, 0xf5, 0xc8, 0x38, 0xf4, 0x7c, 0xe6, 0xce, 0x5f, 0x82, 0x8e, 0x48, 0xe9, 0x1e, 0x24, 0x0d, - 0x80, 0x3e, 0x05, 0xb5, 0xa1, 0xe5, 0x0c, 0x34, 0x93, 0x01, 0xbd, 0x92, 0x00, 0xda, 0xb0, 0x9c, - 0xc1, 0x5a, 0x09, 0x33, 0x12, 0x74, 0x0b, 0x60, 0xe8, 0xb9, 0x7d, 0xe2, 0xfb, 0xeb, 0xe4, 0x85, - 0x46, 0x18, 0x83, 0x9e, 0x64, 0xe0, 0x04, 0xdd, 0x75, 0x42, 0xd7, 0x65, 0x89, 0x1e, 0xad, 0xc2, - 0x8c, 0x48, 0x09, 0x2b, 0xdf, 0xce, 0x74, 0xfe, 0x42, 0x80, 0x38, 0x0a, 0xa4, 0x70, 0xd1, 0xbd, - 0x8f, 0xc8, 0x58, 0x71, 0x1d, 0xa2, 0x0d, 0x32, 0xf7, 0x3e, 0x21, 0x08, 0x25, 0xa1, 0x3e, 0x96, - 0xc4, 0x81, 0x96, 0x60, 0x3a, 0xd8, 0xf1, 0x88, 0x61, 0x6e, 0x06, 0x46, 0xb0, 0xe7, 0x6b, 0x4e, - 0xa6, 0x9b, 0xc6, 0x0b, 0xbb, 0x4f, 0x18, 0x25, 0x75, 0x41, 0x65, 0x1e, 0xb4, 0x0e, 0x1d, 0xba, - 0x11, 0x7a, 0x68, 0xed, 0x5a, 0x01, 0x26, 0x46, 0x7f, 0x87, 0x98, 0x9a, 0x9b, 0xb9, 0x89, 0xa2, - 0x6e, 0x6f, 0x57, 0xa6, 0xa3, 0xde, 0x4a, 0x92, 0x17, 0xad, 0xc1, 0x2c, 0xcd, 0xdb, 0x1c, 0x1a, - 0x7d, 0xf2, 0xd4, 0x37, 0x06, 0x44, 0x1b, 0x66, 0x6a, 0x20, 0x43, 0x8b, 0xa9, 0xa8, 0xb3, 0xa2, - 0xf2, 0x85, 0x48, 0x0f, 0xdd, 0xbe, 0x61, 0x73, 0xa4, 0xaf, 0xe6, 0x23, 0xc5, 0x54, 0x21, 0x52, - 0x9c, 0xa3, 0xf4, 0x91, 0x8f, 0xbd, 0xa9, 0xed, 0x17, 0xf4, 0x51, 0xd0, 0x29, 0x7d, 0x14, 0x79, - 0x14, 0xcf, 0x71, 0x03, 0x6b, 0xdb, 0xea, 0x0b, 0xfb, 0x75, 0x4c, 0xcd, 0xcb, 0xc4, 0x5b, 0x97, - 0xc8, 0xba, 0x9b, 0x3c, 0xb2, 0x94, 0xe2, 0x45, 0x4f, 0x00, 0xc9, 0x79, 0x42, 0xa9, 0x7c, 0x86, - 0x38, 0x3f, 0x0a, 0x31, 0xd2, 0xac, 0x0c, 0x7e, 0xda, 0xca, 0xa1, 0x71, 0x40, 0xb7, 0xb7, 0x4b, - 0x9e, 0x6b, 0x98, 0x7d, 0xc3, 0x0f, 0xb4, 0x20, 0xb3, 0x95, 0x1b, 0x9c, 0xac, 0x1b, 0xd1, 0xd1, - 0x56, 0x26, 0x79, 0x29, 0xde, 0x2e, 0xd9, 0xdd, 0x22, 0x9e, 0xbf, 0x63, 0x0d, 0x45, 0x1b, 0xf7, - 0x32, 0xf1, 0x1e, 0x45, 0x64, 0x71, 0x0b, 0x53, 0xbc, 0xd4, 0x11, 0xf7, 0xa9, 0xb4, 0x37, 0x0f, - 0x9c, 0x3e, 0x57, 0x46, 0x01, 0xfa, 0x22, 0xd3, 0x11, 0x67, 0x9a, 0xd1, 0x8d, 0x89, 0x63, 0xe8, - 0x6c, 0x18, 0xf4, 0x00, 0x0e, 0x0d, 0x2f, 0x0f, 0x15, 0xe4, 0x97, 0x99, 0x8e, 0xf3, 0xc6, 0xe5, - 0x8d, 0x24, 0x64, 0x92, 0x93, 0x9a, 0x9a, 0xb5, 0x3b, 0x74, 0xbd, 0xe0, 0x9e, 0xe5, 0x58, 0xfe, - 0x8e, 0x76, 0x90, 0x69, 0x6a, 0x3d, 0x46, 0xd2, 0xe5, 0x34, 0xd4, 0xd4, 0x64, 0x9e, 0xa5, 0x26, - 0xd4, 0xf7, 0x0d, 0x7b, 0x8f, 0xe8, 0x7f, 0x58, 0x87, 0xa6, 0x88, 0xe9, 0xea, 0xeb, 0x50, 0x63, - 0x01, 0xf0, 0x23, 0x50, 0xb7, 0x1c, 0x93, 0xbc, 0x64, 0xb1, 0xf3, 0x3a, 0xe6, 0x09, 0x74, 0x09, - 0x9a, 0x22, 0xc6, 0x2b, 0xa2, 0x2a, 0x79, 0x11, 0xfb, 0x90, 0x4c, 0xff, 0x10, 0x9a, 0x61, 0x20, - 0x7c, 0x0e, 0xda, 0x43, 0xcf, 0xa5, 0xda, 0xdb, 0x33, 0x19, 0x6c, 0x1b, 0xc7, 0x19, 0xe8, 0x5d, - 0x68, 0x9a, 0x22, 0xd4, 0xce, 0xa1, 0x5f, 0xeb, 0xf2, 0xb3, 0x89, 0x6e, 0x78, 0x36, 0xd1, 0xdd, - 0x64, 0x67, 0x13, 0x38, 0xa4, 0xd3, 0xbf, 0x59, 0x86, 0x06, 0x8f, 0x87, 0xeb, 0xfb, 0xd0, 0x10, - 0x23, 0x73, 0x0d, 0x1a, 0x7d, 0x96, 0xa7, 0x25, 0x63, 0xe1, 0x4a, 0x0b, 0x45, 0x80, 0x1d, 0x0b, - 0x62, 0xca, 0xe6, 0xf3, 0x59, 0xab, 0x32, 0x92, 0x8d, 0x4b, 0x01, 0x0b, 0xe2, 0xff, 0xb6, 0x7a, - 0xff, 0xa3, 0x0c, 0x33, 0x6a, 0x98, 0x7d, 0x0e, 0xda, 0xfd, 0x28, 0x70, 0x2f, 0x46, 0xb7, 0x2f, - 0x05, 0xe1, 0xa1, 0x6f, 0x5b, 0xc4, 0x09, 0x58, 0x44, 0xa9, 0x92, 0xe9, 0xa8, 0x64, 0x86, 0xf5, - 0xbb, 0xcb, 0x11, 0x1b, 0x96, 0x20, 0xf4, 0x6f, 0x00, 0xc4, 0x25, 0xe8, 0x44, 0xb4, 0x74, 0xac, - 0x1b, 0xbb, 0x61, 0xf5, 0x72, 0x96, 0x44, 0xb1, 0x61, 0x04, 0x3b, 0xe2, 0x34, 0x48, 0xce, 0x42, - 0x17, 0xe0, 0xb0, 0x6f, 0x0d, 0x1c, 0x23, 0xd8, 0xf3, 0xc8, 0x33, 0xe2, 0x59, 0xdb, 0x16, 0x31, - 0x59, 0x00, 0xae, 0x85, 0xd3, 0x05, 0xfa, 0xcf, 0xb5, 0xa1, 0xc1, 0x5d, 0x42, 0xfd, 0xdf, 0x2a, - 0x91, 0x8e, 0xe9, 0x7f, 0x5e, 0x86, 0x3a, 0x0f, 0x8d, 0xcf, 0x42, 0xc5, 0x0a, 0xd5, 0xac, 0x62, - 0x99, 0xe8, 0x9e, 0xac, 0x5f, 0xd5, 0x0c, 0x7f, 0x29, 0xeb, 0xa8, 0xa0, 0xfb, 0x80, 0x1c, 0x3c, - 0xa3, 0x36, 0x12, 0x29, 0x1d, 0x3a, 0x0a, 0x0d, 0x7f, 0x6f, 0xab, 0x67, 0xfa, 0x5a, 0xf5, 0x44, - 0xf5, 0x5c, 0x1b, 0x8b, 0x94, 0x7e, 0x1f, 0x5a, 0x21, 0x31, 0xea, 0x40, 0xf5, 0x39, 0x39, 0x10, - 0x95, 0xd3, 0xbf, 0xe8, 0x82, 0xb0, 0xb5, 0xc8, 0x6c, 0x92, 0xba, 0xcd, 0x6b, 0x11, 0x06, 0xf9, - 0x65, 0xa8, 0x52, 0x27, 0x2c, 0xd9, 0x85, 0xc9, 0x4d, 0x24, 0xb7, 0xb5, 0xcb, 0x50, 0xe7, 0xc7, - 0x13, 0xc9, 0x3a, 0x10, 0xd4, 0x9e, 0x93, 0x03, 0x3e, 0x46, 0x6d, 0xcc, 0xfe, 0xe7, 0x82, 0xfc, - 0x59, 0x15, 0xa6, 0xe5, 0x90, 0xac, 0xbe, 0x0a, 0xd5, 0x45, 0x33, 0x3d, 0xf4, 0x1a, 0x34, 0x8d, - 0xed, 0x80, 0x78, 0xd1, 0x29, 0x60, 0x98, 0xa4, 0xb3, 0x0c, 0xc3, 0x62, 0x72, 0x6e, 0x63, 0x9e, - 0xd0, 0xbb, 0xd0, 0x10, 0x91, 0xee, 0x24, 0x52, 0x44, 0x5f, 0x91, 0xe9, 0xef, 0x43, 0x2b, 0x0a, - 0x5c, 0x7f, 0xdc, 0xba, 0x3d, 0x68, 0x45, 0x11, 0xea, 0x23, 0x50, 0x0f, 0xdc, 0xc0, 0xb0, 0x19, - 0x5c, 0x15, 0xf3, 0x04, 0x35, 0x34, 0x87, 0xbc, 0x0c, 0x96, 0xa3, 0x59, 0xb0, 0x8a, 0xe3, 0x0c, - 0x3e, 0xc9, 0x91, 0x7d, 0x5e, 0x5a, 0xe5, 0xa5, 0x51, 0x46, 0x5c, 0x67, 0x4d, 0xae, 0xf3, 0x00, - 0x1a, 0x22, 0x6c, 0x1d, 0x95, 0x97, 0xa5, 0x72, 0xb4, 0x08, 0xf5, 0x01, 0x2d, 0x17, 0x52, 0x7f, - 0x3b, 0x31, 0x45, 0x70, 0x6f, 0x74, 0xd9, 0x75, 0x02, 0xaa, 0xc6, 0xea, 0x6e, 0x1c, 0x73, 0x4e, - 0x2a, 0x42, 0x8f, 0x9f, 0x41, 0x70, 0x8b, 0x12, 0x29, 0xfd, 0xb7, 0xcb, 0xd0, 0x8e, 0x0e, 0x7d, - 0xf4, 0x0f, 0xf3, 0x8c, 0x67, 0x11, 0x66, 0x3c, 0x41, 0x45, 0x67, 0x87, 0xd0, 0x84, 0x8e, 0x25, - 0x5a, 0x82, 0x25, 0x1a, 0xac, 0x72, 0xe8, 0xb7, 0x72, 0x85, 0x3a, 0x0f, 0xd3, 0x21, 0xe9, 0x83, - 0x58, 0xf5, 0x94, 0x3c, 0x5d, 0x8f, 0xb8, 0x3b, 0x50, 0xb5, 0x4c, 0x7e, 0x06, 0xdd, 0xc6, 0xf4, - 0xaf, 0xbe, 0x0d, 0xd3, 0x72, 0xe8, 0x57, 0x7f, 0x96, 0x6d, 0x3d, 0x77, 0x68, 0x35, 0x52, 0x98, - 0xb9, 0x92, 0xf0, 0x6f, 0xc3, 0x2e, 0xc4, 0x24, 0x58, 0x61, 0xd0, 0x5f, 0x83, 0x3a, 0x3f, 0x90, - 0x4a, 0x20, 0xeb, 0xbf, 0xd6, 0x87, 0x3a, 0x13, 0x82, 0x7e, 0x85, 0x1b, 0xc0, 0x05, 0x68, 0xb0, - 0xcd, 0x55, 0x78, 0x54, 0x7e, 0x24, 0x4b, 0x62, 0x58, 0xd0, 0xe8, 0xcb, 0x30, 0x25, 0x1d, 0x05, - 0x50, 0x8d, 0x65, 0x05, 0x91, 0x16, 0x84, 0x49, 0xa4, 0x43, 0x8b, 0x2e, 0x96, 0x62, 0x02, 0xa5, - 0xfd, 0x8f, 0xd2, 0xfa, 0x29, 0x68, 0x88, 0xcd, 0xa2, 0x2e, 0x8e, 0x3e, 0x7a, 0xd1, 0x28, 0x45, - 0x69, 0xfd, 0x8b, 0xd0, 0x8e, 0x4e, 0x0c, 0xd0, 0x63, 0x98, 0x16, 0x27, 0x06, 0x7c, 0xc3, 0x43, - 0x89, 0x67, 0x0b, 0xb4, 0x8b, 0xee, 0x6e, 0xd8, 0xa1, 0x43, 0xf7, 0xc9, 0xc1, 0x90, 0x60, 0x05, - 0x40, 0xff, 0x99, 0x73, 0x6c, 0xe4, 0xf5, 0x21, 0xb4, 0xa2, 0x30, 0x69, 0x52, 0x0a, 0x0b, 0x7c, - 0x6a, 0xac, 0x14, 0xc6, 0xf8, 0x39, 0x3f, 0x9d, 0x80, 0xd9, 0x0c, 0xaa, 0x1f, 0x83, 0xea, 0x03, - 0x72, 0x40, 0x2d, 0x84, 0x4f, 0xa4, 0xc2, 0x42, 0xf8, 0x84, 0xd9, 0x83, 0x86, 0x38, 0xae, 0x48, - 0xd6, 0x77, 0x11, 0x1a, 0xdb, 0xfc, 0x04, 0xa4, 0x60, 0xca, 0x14, 0x64, 0xfa, 0x1d, 0x98, 0x92, - 0x0f, 0x29, 0x92, 0x78, 0x27, 0x60, 0xaa, 0x2f, 0x1d, 0x83, 0x70, 0x31, 0xc8, 0x59, 0x3a, 0x51, - 0xd5, 0x31, 0x85, 0xb0, 0x9a, 0xa9, 0x87, 0x6f, 0x65, 0x0e, 0xfb, 0x08, 0x6d, 0x7c, 0x00, 0x87, - 0x92, 0xa7, 0x11, 0xc9, 0x9a, 0xce, 0xc1, 0xa1, 0xad, 0xc4, 0xd9, 0x07, 0x9f, 0x03, 0x93, 0xd9, - 0x7a, 0x0f, 0xea, 0x3c, 0x5a, 0x9c, 0x84, 0xb8, 0x04, 0x75, 0x83, 0x45, 0xa3, 0x29, 0xe3, 0xac, - 0xb4, 0x27, 0x95, 0x5b, 0xc9, 0x58, 0x31, 0x27, 0xd4, 0x2d, 0x98, 0x51, 0x03, 0xd0, 0x49, 0xc8, - 0x35, 0x98, 0xd9, 0x57, 0x02, 0xdd, 0x1c, 0x7a, 0x3e, 0x13, 0x5a, 0x81, 0xc2, 0x2a, 0xa3, 0xfe, - 0x93, 0x0d, 0xa8, 0xb1, 0x13, 0x94, 0x64, 0x15, 0xd7, 0xa1, 0x16, 0x90, 0x97, 0xa1, 0x8f, 0x3a, - 0x3f, 0xf2, 0x38, 0x86, 0x6f, 0xe3, 0x19, 0x3d, 0xfa, 0x34, 0xd4, 0xfd, 0xe0, 0xc0, 0x0e, 0xcf, - 0xfd, 0x4e, 0x8e, 0x66, 0xdc, 0xa4, 0xa4, 0x98, 0x73, 0x50, 0x56, 0x66, 0x0b, 0xe2, 0xc4, 0xaf, - 0x80, 0x95, 0x19, 0x21, 0xe6, 0x1c, 0xe8, 0x0e, 0x34, 0xfb, 0x3b, 0xa4, 0xff, 0x9c, 0x98, 0xe2, - 0xa8, 0xef, 0xf4, 0x68, 0xe6, 0x65, 0x4e, 0x8c, 0x43, 0x2e, 0x5a, 0x77, 0x9f, 0x49, 0xb7, 0x31, - 0x4e, 0xdd, 0x4c, 0xe2, 0x98, 0x73, 0xa0, 0x55, 0x68, 0x5b, 0x7d, 0xd7, 0x59, 0xdd, 0x75, 0xbf, - 0x62, 0x89, 0x33, 0xbd, 0xb3, 0xa3, 0xd9, 0x7b, 0x21, 0x39, 0x8e, 0x39, 0x43, 0x98, 0xde, 0x2e, - 0xdd, 0x16, 0xb7, 0xc6, 0x85, 0x61, 0xe4, 0x38, 0xe6, 0xd4, 0xe7, 0x84, 0x3c, 0xb3, 0x8d, 0xfc, - 0x1e, 0xd4, 0xd9, 0x90, 0xa3, 0xf7, 0xe4, 0xe2, 0x59, 0xa9, 0xa6, 0xdc, 0x19, 0x4b, 0x88, 0x2a, - 0xc2, 0x61, 0xe3, 0xaf, 0xe2, 0x4c, 0x8d, 0x83, 0x23, 0xe4, 0xc6, 0x71, 0xde, 0x84, 0xa6, 0x10, - 0x85, 0xda, 0xe0, 0x56, 0x48, 0xf0, 0x06, 0xd4, 0xb9, 0x61, 0x66, 0xf7, 0xe7, 0x2d, 0x68, 0x47, - 0x83, 0x39, 0x9a, 0x84, 0x8d, 0x4e, 0x0e, 0xc9, 0xcf, 0x56, 0xa0, 0xce, 0x4f, 0x92, 0xd2, 0x53, - 0xad, 0x6c, 0x05, 0x27, 0x47, 0x1f, 0x4c, 0xc9, 0x66, 0x70, 0x8f, 0x6d, 0xd4, 0xa8, 0x63, 0x1e, - 0xdd, 0xcc, 0x3a, 0x57, 0xc0, 0xbd, 0x11, 0xd2, 0xe3, 0x98, 0xb5, 0x40, 0x9c, 0x8f, 0xa1, 0x1d, - 0x71, 0xa1, 0x25, 0x55, 0xa4, 0x17, 0x46, 0x8a, 0x22, 0x59, 0xa5, 0x00, 0xfc, 0x56, 0x19, 0xaa, - 0x2b, 0xd6, 0x7e, 0x6a, 0x1c, 0x6e, 0x84, 0x56, 0x5d, 0x34, 0x1d, 0xac, 0x58, 0xfb, 0x8a, 0x51, - 0xeb, 0xab, 0xa1, 0xc6, 0xdd, 0x52, 0x9b, 0x77, 0x66, 0xb4, 0x07, 0x16, 0xc3, 0xf0, 0x86, 0xfd, - 0x62, 0x13, 0x6a, 0xec, 0x90, 0x36, 0x6b, 0x9e, 0x3a, 0x18, 0x16, 0x37, 0x8c, 0x85, 0x81, 0xd8, - 0x82, 0xcb, 0xe8, 0xf9, 0x3c, 0x65, 0x04, 0xc5, 0xf3, 0x14, 0x8f, 0x6a, 0x51, 0x52, 0xcc, 0x39, - 0x68, 0x95, 0xbb, 0xd6, 0x2e, 0x11, 0xd3, 0x54, 0x41, 0x95, 0x8f, 0xac, 0x5d, 0x82, 0x19, 0x3d, - 0xe5, 0xdb, 0x31, 0xfc, 0x1d, 0x31, 0x43, 0x15, 0xf0, 0xad, 0x19, 0xfe, 0x0e, 0x66, 0xf4, 0x94, - 0xcf, 0xa1, 0x5b, 0xc2, 0xc6, 0x38, 0x7c, 0x74, 0xa7, 0x88, 0x19, 0x3d, 0xe5, 0xf3, 0xad, 0xaf, - 0x11, 0x31, 0x27, 0x15, 0xf0, 0x6d, 0x5a, 0x5f, 0x23, 0x98, 0xd1, 0xc7, 0x53, 0x78, 0x6b, 0xbc, - 0xa1, 0x91, 0xa6, 0xf0, 0x27, 0x30, 0x1b, 0x28, 0x47, 0x0d, 0xe2, 0xa6, 0xc0, 0x85, 0x02, 0xb9, - 0x28, 0x3c, 0x38, 0x81, 0x41, 0x8d, 0x80, 0x6d, 0x80, 0xb3, 0x8d, 0xe0, 0x0d, 0xa8, 0x7f, 0xce, - 0x32, 0x83, 0x1d, 0xb5, 0xb8, 0xae, 0x4c, 0x79, 0x54, 0x6c, 0x13, 0x4d, 0x79, 0xb2, 0xd4, 0x39, - 0xce, 0x0a, 0xd4, 0xa8, 0xfa, 0x4c, 0xa6, 0xc7, 0xb1, 0xd6, 0x7d, 0xac, 0x09, 0x58, 0x1e, 0x68, - 0x8e, 0x33, 0x07, 0x35, 0xaa, 0x21, 0x39, 0x43, 0x32, 0x07, 0x35, 0xaa, 0x77, 0xf9, 0xa5, 0x54, - 0xda, 0x6a, 0x69, 0x35, 0x2c, 0x3d, 0x03, 0xb3, 0xaa, 0x38, 0x72, 0x50, 0xfe, 0xb4, 0x09, 0x35, - 0x76, 0xe3, 0x21, 0x69, 0x91, 0x9f, 0x85, 0x19, 0x2e, 0xbf, 0x25, 0xe1, 0x82, 0x57, 0x32, 0x2f, - 0x3c, 0xa9, 0xf7, 0x28, 0x84, 0x0a, 0x08, 0x16, 0xac, 0x22, 0x8c, 0xef, 0x54, 0x30, 0x28, 0x45, - 0x23, 0x6f, 0x45, 0xce, 0x6b, 0xad, 0xe0, 0xba, 0x0d, 0xe3, 0xe5, 0x2e, 0x70, 0xe8, 0xc9, 0xa2, - 0x25, 0x68, 0xd1, 0xa5, 0x95, 0x0e, 0x97, 0x30, 0xdb, 0x33, 0xa3, 0xf9, 0x7b, 0x82, 0x1a, 0x47, - 0x7c, 0x74, 0x61, 0xef, 0x1b, 0x9e, 0xc9, 0x5a, 0x25, 0x6c, 0xf8, 0xec, 0x68, 0x90, 0xe5, 0x90, - 0x1c, 0xc7, 0x9c, 0xe8, 0x01, 0x4c, 0x99, 0x24, 0x8a, 0x13, 0x08, 0xa3, 0xfe, 0xd4, 0x68, 0xa0, - 0x95, 0x98, 0x01, 0xcb, 0xdc, 0xb4, 0x4d, 0xe1, 0xde, 0xd0, 0x2f, 0x74, 0x36, 0x18, 0x54, 0x7c, - 0xad, 0x31, 0xe6, 0xd4, 0x4f, 0xc3, 0x8c, 0x22, 0xb7, 0x4f, 0xd4, 0xeb, 0x90, 0x65, 0xc9, 0x71, - 0x16, 0xa2, 0x2d, 0xca, 0x3b, 0xaa, 0xdb, 0x91, 0xbb, 0x23, 0x11, 0x8c, 0x0f, 0xa1, 0x15, 0x0a, - 0x06, 0xdd, 0x55, 0xdb, 0x70, 0xbe, 0xb8, 0x0d, 0x91, 0x4c, 0x05, 0xda, 0x3a, 0xb4, 0x23, 0x09, - 0xa1, 0x45, 0x15, 0xee, 0xed, 0x62, 0xb8, 0x58, 0xba, 0x02, 0x0f, 0xc3, 0x94, 0x24, 0x28, 0xb4, - 0xac, 0x22, 0xbe, 0x53, 0x8c, 0x28, 0x8b, 0x39, 0xf6, 0x7a, 0x22, 0x89, 0xc9, 0x52, 0xa9, 0xc6, - 0x52, 0xf9, 0x83, 0x26, 0xb4, 0xa2, 0x5b, 0x46, 0x19, 0x7b, 0xcc, 0x3d, 0xcf, 0x2e, 0xdc, 0x63, - 0x86, 0xfc, 0xdd, 0xa7, 0x9e, 0x8d, 0x29, 0x07, 0x15, 0x71, 0x60, 0x05, 0x91, 0xa9, 0x9e, 0x2d, - 0x66, 0x7d, 0x42, 0xc9, 0x31, 0xe7, 0x42, 0x8f, 0x55, 0x2d, 0xaf, 0x8d, 0x38, 0x85, 0x56, 0x40, - 0x72, 0x35, 0xbd, 0x07, 0x6d, 0x8b, 0xba, 0x7e, 0x6b, 0xf1, 0xca, 0xfb, 0x76, 0x31, 0x5c, 0x2f, - 0x64, 0xc1, 0x31, 0x37, 0x6d, 0xdb, 0xb6, 0xb1, 0x4f, 0xed, 0x9a, 0x81, 0x35, 0xc6, 0x6d, 0xdb, - 0xbd, 0x98, 0x09, 0xcb, 0x08, 0xe8, 0xa6, 0xf0, 0x5d, 0x9a, 0x05, 0x33, 0x4b, 0x3c, 0x54, 0xb1, - 0xff, 0xf2, 0x41, 0x6a, 0xa5, 0xe5, 0x66, 0x7c, 0x69, 0x0c, 0x94, 0x91, 0xab, 0x2d, 0x95, 0x20, - 0xf7, 0x8c, 0xda, 0xe3, 0x4a, 0x50, 0xf6, 0x8e, 0xf4, 0x63, 0x50, 0x7d, 0xea, 0xd9, 0xf9, 0x6b, - 0x35, 0x13, 0x77, 0x4e, 0xf1, 0x49, 0xd5, 0x12, 0xf2, 0x1d, 0xfa, 0x48, 0x26, 0xb9, 0x38, 0xd2, - 0xa0, 0xe7, 0x10, 0xbd, 0x27, 0x16, 0xf4, 0x6b, 0xaa, 0xbd, 0xbd, 0x99, 0xb0, 0x37, 0x6a, 0x61, - 0x1b, 0x1e, 0xe1, 0x17, 0x2d, 0xa4, 0x95, 0x7c, 0xdc, 0x75, 0xf2, 0x7e, 0xe8, 0x7f, 0x4c, 0x34, - 0x53, 0x24, 0xc7, 0x96, 0x63, 0xfd, 0x74, 0x19, 0x5a, 0xd1, 0x25, 0xb2, 0x74, 0x74, 0xbe, 0x65, - 0xf9, 0x6b, 0xc4, 0x30, 0x89, 0x27, 0xec, 0xf6, 0x7c, 0xe1, 0xed, 0xb4, 0x6e, 0x4f, 0x70, 0xe0, - 0x88, 0x57, 0x3f, 0x01, 0xad, 0x30, 0x37, 0x67, 0x53, 0xf6, 0xbd, 0x0a, 0x34, 0xc4, 0xf5, 0xb3, - 0x64, 0x23, 0x6e, 0x43, 0xc3, 0x36, 0x0e, 0xdc, 0xbd, 0x70, 0xcb, 0x74, 0xa6, 0xe0, 0x46, 0x5b, - 0xf7, 0x21, 0xa3, 0xc6, 0x82, 0x0b, 0x7d, 0x06, 0xea, 0xb6, 0xb5, 0x6b, 0x05, 0x62, 0xfa, 0x38, - 0x5d, 0xc8, 0xce, 0x0e, 0xaa, 0x39, 0x0f, 0xad, 0x9c, 0xdd, 0x3a, 0x09, 0xef, 0x0c, 0x17, 0x56, - 0xfe, 0x8c, 0x51, 0x63, 0xc1, 0xa5, 0xdf, 0x87, 0x06, 0x6f, 0xce, 0x64, 0x8b, 0x84, 0xda, 0x93, - 0x58, 0xd3, 0x59, 0xdb, 0x72, 0xbc, 0xd2, 0xe3, 0xd0, 0xe0, 0x95, 0xe7, 0x68, 0xcd, 0x77, 0x5f, - 0x67, 0xfb, 0x1d, 0x5b, 0x7f, 0x18, 0x1f, 0xfe, 0x7d, 0xfc, 0xb3, 0x0c, 0xfd, 0x09, 0x1c, 0x5a, - 0x31, 0x02, 0x63, 0xcb, 0xf0, 0x09, 0x26, 0x7d, 0xd7, 0x33, 0x33, 0x51, 0x3d, 0x5e, 0x24, 0x22, - 0xd4, 0xf9, 0xa8, 0x82, 0xee, 0xc7, 0xa1, 0xc3, 0xff, 0x39, 0xa1, 0xc3, 0x3f, 0xaa, 0xe5, 0xc4, - 0xf3, 0xc6, 0x89, 0x64, 0x50, 0x85, 0x4b, 0x05, 0xf4, 0x6e, 0xaa, 0xbe, 0xf7, 0xa9, 0x02, 0x4e, - 0xc5, 0xf9, 0xbe, 0xa9, 0x46, 0xf4, 0x8a, 0x78, 0x95, 0x90, 0xde, 0xdd, 0x64, 0x48, 0xef, 0x4c, - 0x01, 0x77, 0x2a, 0xa6, 0x77, 0x53, 0x8d, 0xe9, 0x15, 0xd5, 0x2e, 0x07, 0xf5, 0xfe, 0x8f, 0x85, - 0xd1, 0x7e, 0x25, 0x27, 0xec, 0xf3, 0x69, 0x35, 0xec, 0x33, 0x42, 0x6b, 0x7e, 0x54, 0x71, 0x9f, - 0x5f, 0x6d, 0xe4, 0xc4, 0x7d, 0x16, 0x94, 0xb8, 0xcf, 0x88, 0x96, 0x25, 0x03, 0x3f, 0x37, 0xd5, - 0xc0, 0xcf, 0xa9, 0x02, 0x4e, 0x25, 0xf2, 0xb3, 0xa0, 0x44, 0x7e, 0x8a, 0x2a, 0x95, 0x42, 0x3f, - 0x0b, 0x4a, 0xe8, 0xa7, 0x88, 0x51, 0x8a, 0xfd, 0x2c, 0x28, 0xb1, 0x9f, 0x22, 0x46, 0x29, 0xf8, - 0xb3, 0xa0, 0x04, 0x7f, 0x8a, 0x18, 0xa5, 0xe8, 0xcf, 0x4d, 0x35, 0xfa, 0x53, 0x3c, 0x3e, 0x92, - 0xd0, 0x7f, 0x1c, 0xa8, 0xf9, 0x2f, 0x0c, 0xd4, 0xfc, 0x42, 0x35, 0x27, 0x00, 0x83, 0xb3, 0x03, - 0x30, 0x17, 0xf2, 0x25, 0x59, 0x1c, 0x81, 0x19, 0x7f, 0x15, 0x48, 0x87, 0x60, 0xde, 0x4b, 0x84, - 0x60, 0x4e, 0x17, 0x30, 0xab, 0x31, 0x98, 0xff, 0x35, 0x41, 0x86, 0xdf, 0x6b, 0x8c, 0xd8, 0x4f, - 0xdf, 0x90, 0xf7, 0xd3, 0x23, 0x56, 0xb2, 0xf4, 0x86, 0xfa, 0xb6, 0xba, 0xa1, 0x3e, 0x37, 0x06, - 0xaf, 0xb2, 0xa3, 0xde, 0xc8, 0xda, 0x51, 0x77, 0xc7, 0x40, 0xc9, 0xdd, 0x52, 0xdf, 0x4f, 0x6f, - 0xa9, 0x2f, 0x8c, 0x81, 0x97, 0xb9, 0xa7, 0xde, 0xc8, 0xda, 0x53, 0x8f, 0xd3, 0xba, 0xdc, 0x4d, - 0xf5, 0x67, 0x94, 0x4d, 0xf5, 0xd9, 0x71, 0x86, 0x2b, 0x5e, 0x1c, 0x3e, 0x9f, 0xb3, 0xab, 0x7e, - 0x77, 0x1c, 0x98, 0xd1, 0x41, 0xec, 0x1f, 0xef, 0x8b, 0xd5, 0x6a, 0x7e, 0xe7, 0x4d, 0x68, 0x85, - 0x17, 0x6d, 0xf4, 0xaf, 0x42, 0x33, 0x7c, 0x73, 0x94, 0xb4, 0x9c, 0xa3, 0xd1, 0xa6, 0x8e, 0x7b, - 0xcf, 0x22, 0x85, 0x6e, 0x43, 0x8d, 0xfe, 0x13, 0x66, 0x71, 0x7e, 0xbc, 0x0b, 0x3d, 0xb4, 0x12, - 0xcc, 0xf8, 0xf4, 0x7f, 0x3d, 0x02, 0x20, 0x3d, 0xc5, 0x18, 0xb7, 0xda, 0xf7, 0xe9, 0x64, 0x66, - 0x07, 0xc4, 0x63, 0x17, 0xb9, 0x0a, 0x9f, 0x2a, 0xc4, 0x35, 0x50, 0x6d, 0x09, 0x88, 0x87, 0x05, - 0x3b, 0x7a, 0x04, 0xad, 0x30, 0x90, 0xaa, 0xd5, 0x18, 0xd4, 0xbb, 0x63, 0x43, 0x85, 0xa1, 0x3d, - 0x1c, 0x41, 0xa0, 0x45, 0xa8, 0xf9, 0xae, 0x17, 0x68, 0x75, 0x06, 0xf5, 0xce, 0xd8, 0x50, 0x9b, - 0xae, 0x17, 0x60, 0xc6, 0xca, 0xbb, 0x26, 0xbd, 0x74, 0x9d, 0xa4, 0x6b, 0xca, 0x8c, 0xfd, 0x2f, - 0xd5, 0x68, 0x0e, 0x5d, 0x16, 0xd6, 0xc8, 0x75, 0xe8, 0xe2, 0xf8, 0x52, 0x92, 0xad, 0x12, 0x09, - 0x27, 0x88, 0x4b, 0x82, 0xfb, 0x37, 0xe7, 0xa1, 0xd3, 0x77, 0xf7, 0x89, 0x87, 0xe3, 0x2b, 0x4e, - 0xe2, 0x16, 0x5a, 0x2a, 0x1f, 0xe9, 0xd0, 0xda, 0xb1, 0x4c, 0xd2, 0xeb, 0x8b, 0xf9, 0xaf, 0x85, - 0xa3, 0x34, 0x7a, 0x00, 0x2d, 0x16, 0x63, 0x0f, 0x23, 0xfc, 0x93, 0x35, 0x92, 0x87, 0xfa, 0x43, - 0x00, 0x5a, 0x11, 0xab, 0xfc, 0x9e, 0x15, 0xb0, 0x31, 0x6c, 0xe1, 0x28, 0x4d, 0x1b, 0xcc, 0xee, - 0x91, 0xc9, 0x0d, 0x6e, 0xf2, 0x06, 0x27, 0xf3, 0xd1, 0x55, 0x78, 0x95, 0xe5, 0x25, 0xb6, 0x98, - 0x3c, 0x54, 0xdf, 0xc2, 0xd9, 0x85, 0xec, 0xde, 0x9c, 0x31, 0xe0, 0xf7, 0xda, 0x59, 0xf0, 0xae, - 0x8e, 0xe3, 0x0c, 0x74, 0x01, 0x0e, 0x9b, 0x64, 0xdb, 0xd8, 0xb3, 0x83, 0x27, 0x64, 0x77, 0x68, - 0x1b, 0x01, 0xe9, 0x99, 0xec, 0xb1, 0x6d, 0x1b, 0xa7, 0x0b, 0xd0, 0x25, 0x78, 0x45, 0x64, 0x72, - 0x33, 0xa6, 0xd2, 0xe8, 0x99, 0xec, 0xed, 0x69, 0x1b, 0x67, 0x15, 0xe9, 0xdf, 0xad, 0x51, 0xa1, - 0x33, 0xd5, 0x7e, 0x1f, 0xaa, 0x86, 0x69, 0x8a, 0x65, 0xf3, 0xca, 0x84, 0x06, 0x22, 0xde, 0x93, - 0x53, 0x04, 0xb4, 0x11, 0x5d, 0xb9, 0xe3, 0x0b, 0xe7, 0xf5, 0x49, 0xb1, 0xa2, 0x6f, 0x00, 0x08, - 0x1c, 0x8a, 0xb8, 0xc7, 0x2f, 0x8e, 0x57, 0x7f, 0x38, 0xc4, 0xe8, 0x3e, 0xb9, 0xc0, 0x41, 0xf7, - 0xa1, 0xc6, 0x5a, 0xc8, 0x17, 0xd6, 0xab, 0x93, 0xe2, 0x3d, 0xe2, 0xed, 0x63, 0x18, 0x7a, 0x9f, - 0xdf, 0x7d, 0x93, 0x2e, 0x5c, 0x96, 0xd5, 0x0b, 0x97, 0x4b, 0x50, 0xb7, 0x02, 0xb2, 0x9b, 0xbe, - 0x7f, 0x3b, 0x52, 0x55, 0xc5, 0xcc, 0xc3, 0x59, 0x47, 0xde, 0x03, 0xfc, 0x30, 0xba, 0x8b, 0x9d, - 0x9c, 0x0f, 0xef, 0x42, 0x8d, 0xb2, 0xa7, 0x7c, 0xc9, 0x71, 0x2a, 0x66, 0x9c, 0xfa, 0x65, 0xa8, - 0xd1, 0xce, 0x8e, 0xe8, 0x9d, 0x68, 0x4f, 0x25, 0x6a, 0xcf, 0xd2, 0x14, 0xb4, 0xdd, 0x21, 0xf1, - 0x98, 0x61, 0xe8, 0xff, 0x5c, 0x93, 0x2e, 0xc5, 0xf5, 0x64, 0x1d, 0xbb, 0x36, 0xf1, 0xcc, 0x29, - 0x6b, 0x19, 0x4e, 0x68, 0xd9, 0x8d, 0xc9, 0xd1, 0x52, 0x7a, 0x86, 0x13, 0x7a, 0xf6, 0x43, 0x60, - 0xa6, 0x34, 0xed, 0xa1, 0xa2, 0x69, 0xd7, 0x27, 0x47, 0x54, 0x74, 0x8d, 0x14, 0xe9, 0xda, 0x8a, - 0xaa, 0x6b, 0xdd, 0xf1, 0x44, 0x1e, 0x2d, 0x4d, 0x63, 0x68, 0xdb, 0x17, 0x73, 0xb5, 0x6d, 0x49, - 0xd1, 0xb6, 0x49, 0xab, 0xfe, 0x84, 0xf4, 0xed, 0xef, 0x6b, 0x50, 0xa3, 0xcb, 0x23, 0x5a, 0x95, - 0x75, 0xed, 0xdd, 0x89, 0x96, 0x56, 0x59, 0xcf, 0xd6, 0x13, 0x7a, 0x76, 0x75, 0x32, 0xa4, 0x94, - 0x8e, 0xad, 0x27, 0x74, 0x6c, 0x42, 0xbc, 0x94, 0x7e, 0xad, 0x29, 0xfa, 0x75, 0x79, 0x32, 0x34, - 0x45, 0xb7, 0x8c, 0x22, 0xdd, 0xba, 0xab, 0xea, 0xd6, 0x98, 0xde, 0x1b, 0xf3, 0x55, 0xc6, 0xd0, - 0xab, 0x0f, 0x72, 0xf5, 0xea, 0xb6, 0xa2, 0x57, 0x93, 0x54, 0xfb, 0x09, 0xe9, 0xd4, 0x55, 0xee, - 0x74, 0x8a, 0x7b, 0xc6, 0x63, 0x3a, 0x9d, 0xfa, 0x35, 0x68, 0xc7, 0x6f, 0xd9, 0x33, 0xae, 0xe7, - 0x73, 0xb2, 0xb0, 0xd6, 0x30, 0xa9, 0x5f, 0x81, 0x76, 0xfc, 0x3e, 0x3d, 0xa3, 0x2e, 0x9f, 0x15, - 0x0a, 0x2e, 0x91, 0xd2, 0x57, 0xe1, 0x70, 0xfa, 0xf5, 0x6c, 0x46, 0x1c, 0x5e, 0xba, 0x5b, 0x1e, - 0x3e, 0x45, 0x91, 0xb2, 0xf4, 0x17, 0x30, 0x9b, 0x78, 0x0f, 0x3b, 0x31, 0x06, 0xba, 0x22, 0xb9, - 0xc8, 0x55, 0xb1, 0x07, 0xcf, 0xbe, 0x2d, 0x1f, 0x3b, 0xc2, 0xfa, 0x0a, 0xcc, 0x16, 0x34, 0x7e, - 0x9c, 0xcb, 0xf2, 0x5f, 0x86, 0xa9, 0x51, 0x6d, 0xff, 0x04, 0x2e, 0xf3, 0x07, 0xd0, 0x49, 0xbd, - 0xe5, 0x4f, 0x56, 0xb3, 0x01, 0x30, 0x88, 0x68, 0x84, 0xd2, 0x5e, 0x9a, 0xe0, 0xe9, 0x02, 0xe3, - 0xc3, 0x12, 0x86, 0xfe, 0x5b, 0x65, 0x38, 0x9c, 0x7e, 0xc8, 0x3f, 0xee, 0xe6, 0x47, 0x83, 0x26, - 0xc3, 0x8a, 0x5e, 0x7c, 0x84, 0x49, 0xf4, 0x08, 0xa6, 0x7d, 0xdb, 0xea, 0x93, 0xe5, 0x1d, 0xc3, - 0x19, 0x10, 0x5f, 0xec, 0x68, 0x0a, 0x1e, 0xe3, 0x6f, 0xc6, 0x1c, 0x58, 0x61, 0xd7, 0x5f, 0xc0, - 0x94, 0x54, 0x88, 0x6e, 0x41, 0xc5, 0x1d, 0xa6, 0xee, 0x35, 0xe6, 0x63, 0x3e, 0x0e, 0xed, 0x0d, - 0x57, 0xdc, 0x61, 0xda, 0x24, 0x65, 0xf3, 0xad, 0x2a, 0xe6, 0xab, 0x3f, 0x80, 0xc3, 0xe9, 0xb7, - 0xf2, 0xc9, 0xe1, 0x39, 0x93, 0x8a, 0x12, 0xf0, 0x61, 0x4a, 0x6e, 0xf9, 0x17, 0xe0, 0x50, 0xf2, - 0x05, 0x7c, 0xc6, 0x6b, 0x9c, 0xf8, 0x51, 0x53, 0x18, 0xae, 0x9f, 0xff, 0xf9, 0x32, 0xcc, 0xaa, - 0x1d, 0x41, 0x47, 0x01, 0xa9, 0x39, 0xeb, 0xae, 0x43, 0x3a, 0x25, 0xf4, 0x2a, 0x1c, 0x56, 0xf3, - 0x17, 0x4d, 0xb3, 0x53, 0x4e, 0x93, 0xd3, 0x69, 0xab, 0x53, 0x41, 0x1a, 0x1c, 0x49, 0x8c, 0x10, - 0x9b, 0x44, 0x3b, 0x55, 0xf4, 0x3a, 0xbc, 0x9a, 0x2c, 0x19, 0xda, 0x46, 0x9f, 0x74, 0x6a, 0xfa, - 0x0f, 0x2a, 0x50, 0x7b, 0xea, 0x13, 0x4f, 0xff, 0xc7, 0x4a, 0xf8, 0x4a, 0xe3, 0x06, 0xd4, 0xd8, - 0xe3, 0x74, 0xe9, 0x35, 0x63, 0x39, 0xf1, 0x9a, 0x51, 0x79, 0x11, 0x17, 0xbf, 0x66, 0xbc, 0x01, - 0x35, 0xf6, 0x1c, 0x7d, 0x72, 0xce, 0x9f, 0x2a, 0x43, 0x3b, 0x7e, 0x1a, 0x3e, 0x31, 0xbf, 0xfc, - 0x2a, 0xa4, 0xa2, 0xbe, 0x0a, 0x39, 0x0f, 0x75, 0x8f, 0xbd, 0xdf, 0xe0, 0xb3, 0x4c, 0xf2, 0xad, - 0x09, 0xab, 0x10, 0x73, 0x12, 0x9d, 0xc0, 0x94, 0xfc, 0xf0, 0x7d, 0xf2, 0x66, 0x9c, 0x12, 0x5f, - 0xbd, 0xe9, 0x99, 0xfe, 0xa2, 0xe7, 0x19, 0x07, 0x42, 0x31, 0xd5, 0x4c, 0x7d, 0x0e, 0x6a, 0x1b, - 0x96, 0x33, 0xc8, 0x7e, 0x44, 0xaa, 0x7f, 0xbb, 0x0c, 0x4d, 0x71, 0x79, 0x57, 0x5f, 0x80, 0xea, - 0x3a, 0x79, 0x41, 0x1b, 0x22, 0xae, 0x0d, 0xa7, 0x1a, 0xf2, 0x88, 0xf5, 0x42, 0xd0, 0xe3, 0x90, - 0x4c, 0xbf, 0x19, 0x2d, 0x93, 0x93, 0xf3, 0xde, 0x80, 0x1a, 0x7b, 0xaf, 0x3e, 0x39, 0xe7, 0x6f, - 0xb4, 0xa0, 0xc1, 0x5f, 0x62, 0xea, 0xdf, 0x6a, 0x41, 0x83, 0xbf, 0x61, 0x47, 0xb7, 0xa1, 0xe9, - 0xef, 0xed, 0xee, 0x1a, 0xde, 0x81, 0x96, 0xfd, 0xc1, 0x44, 0xe5, 0xc9, 0x7b, 0x77, 0x93, 0xd3, - 0xe2, 0x90, 0x09, 0x5d, 0x83, 0x5a, 0xdf, 0xd8, 0x26, 0xa9, 0xe3, 0xdc, 0x2c, 0xe6, 0x65, 0x63, - 0x9b, 0x60, 0x46, 0x8e, 0xee, 0x42, 0x4b, 0x88, 0xc5, 0x17, 0xf1, 0x9c, 0xd1, 0xf5, 0x86, 0xc2, - 0x8c, 0xb8, 0xf4, 0xfb, 0xd0, 0x14, 0x8d, 0x41, 0x77, 0xa2, 0x77, 0xa8, 0xc9, 0xc8, 0x73, 0x66, - 0x17, 0xa2, 0xc7, 0xcd, 0xd1, 0x8b, 0xd4, 0xbf, 0xa8, 0x40, 0x8d, 0x36, 0xee, 0x63, 0x23, 0xa1, - 0xe3, 0x00, 0xb6, 0xe1, 0x07, 0x1b, 0x7b, 0xb6, 0x4d, 0x4c, 0xf1, 0xc2, 0x4e, 0xca, 0x41, 0xe7, - 0xe0, 0x10, 0x4f, 0xf9, 0x3b, 0x9b, 0x7b, 0xfd, 0x3e, 0x89, 0x9e, 0x89, 0x26, 0xb3, 0xd1, 0x22, - 0xd4, 0xd9, 0x57, 0xd5, 0x84, 0x57, 0xf8, 0x76, 0xe1, 0xc8, 0x76, 0x37, 0x2c, 0x47, 0xb4, 0x86, - 0x73, 0xea, 0x2e, 0xb4, 0xa3, 0x3c, 0x6a, 0x84, 0x43, 0xcb, 0x71, 0x2c, 0x67, 0x20, 0x34, 0x3a, - 0x4c, 0xd2, 0x45, 0x87, 0xfe, 0x15, 0xed, 0xad, 0x63, 0x91, 0xa2, 0xf9, 0xdb, 0x86, 0x65, 0x8b, - 0x26, 0xd6, 0xb1, 0x48, 0x51, 0xa4, 0x3d, 0xf1, 0xf2, 0xbf, 0xc6, 0x3a, 0x18, 0x26, 0xf5, 0x8f, - 0xca, 0xd1, 0x63, 0xec, 0xac, 0xc7, 0x99, 0xa9, 0x58, 0xd2, 0x9c, 0x1c, 0xd0, 0xe6, 0x0b, 0x82, - 0x14, 0xa2, 0x3e, 0x0a, 0x0d, 0xd7, 0xb1, 0x2d, 0x87, 0x88, 0xd8, 0x91, 0x48, 0x25, 0xc6, 0xb8, - 0x9e, 0x1a, 0x63, 0x51, 0xbe, 0x6a, 0x5a, 0xb4, 0x89, 0x8d, 0xb8, 0x9c, 0xe7, 0xa0, 0xf7, 0xa0, - 0x69, 0x92, 0x7d, 0xab, 0x4f, 0x7c, 0xad, 0xc9, 0x54, 0xef, 0xe4, 0xc8, 0xb1, 0x5d, 0x61, 0xb4, - 0x38, 0xe4, 0xd1, 0x03, 0x68, 0xf0, 0xac, 0xa8, 0x4b, 0x65, 0xa9, 0x4b, 0x71, 0xa3, 0x2b, 0x23, - 0x1a, 0x5d, 0x2d, 0x68, 0x74, 0x2d, 0xd9, 0xe8, 0x79, 0x13, 0x20, 0x56, 0x37, 0x34, 0x05, 0xcd, - 0xa7, 0xce, 0x73, 0xc7, 0x7d, 0xe1, 0x74, 0x4a, 0x34, 0xf1, 0x78, 0x7b, 0x9b, 0xd6, 0xd2, 0x29, - 0xd3, 0x04, 0xa5, 0xb3, 0x9c, 0x41, 0xa7, 0x82, 0x00, 0x1a, 0x34, 0x41, 0xcc, 0x4e, 0x95, 0xfe, - 0xbf, 0xc7, 0xe4, 0xd7, 0xa9, 0xa1, 0xd7, 0xe0, 0x95, 0x9e, 0xd3, 0x77, 0x77, 0x87, 0x46, 0x60, - 0x6d, 0xd9, 0xe4, 0x19, 0xf1, 0x7c, 0xcb, 0x75, 0x3a, 0x75, 0xfd, 0xdf, 0xcb, 0xfc, 0xd4, 0x57, - 0xbf, 0x0b, 0xd3, 0xca, 0xa7, 0x28, 0x34, 0x68, 0xb2, 0x2f, 0x03, 0xc4, 0x7e, 0xb7, 0x48, 0x32, - 0x2d, 0xe1, 0xcf, 0xe2, 0x85, 0xcb, 0xc2, 0x53, 0xfa, 0x3d, 0x00, 0xe9, 0x03, 0x14, 0xc7, 0x01, - 0xb6, 0x0e, 0x02, 0xe2, 0xf3, 0x8f, 0x4f, 0x50, 0x88, 0x1a, 0x96, 0x72, 0x64, 0xfc, 0x8a, 0x82, - 0xaf, 0x5f, 0x07, 0x90, 0x3e, 0x3f, 0x41, 0xed, 0x87, 0xa6, 0x96, 0x92, 0x60, 0xc9, 0x6c, 0xbd, - 0x2b, 0x7a, 0x10, 0x7e, 0x68, 0x22, 0x6c, 0x01, 0x8f, 0xd2, 0xc9, 0x2d, 0x60, 0x39, 0xfa, 0x2a, - 0x40, 0xfc, 0xad, 0x05, 0x7d, 0x21, 0x9a, 0xa2, 0xdf, 0x81, 0x9a, 0x69, 0x04, 0x86, 0x98, 0x1d, - 0x5f, 0x4f, 0xac, 0x50, 0x31, 0x0b, 0x66, 0x64, 0xfa, 0x6f, 0x96, 0x61, 0x5a, 0xfe, 0xae, 0x84, - 0xfe, 0x3e, 0xd4, 0xd8, 0x87, 0x29, 0xee, 0xc0, 0xb4, 0xfc, 0x61, 0x89, 0xd4, 0x77, 0x7d, 0x39, - 0x9e, 0xcc, 0x8a, 0x15, 0x06, 0xbd, 0x17, 0x35, 0xe9, 0x63, 0x43, 0x5d, 0x82, 0xa6, 0xf8, 0x4e, - 0x85, 0x7e, 0x1a, 0xda, 0xf1, 0x67, 0x29, 0xe8, 0x1c, 0xc1, 0xf3, 0x43, 0x29, 0x8b, 0xa4, 0xfe, - 0x4f, 0x55, 0xa8, 0x33, 0x71, 0xea, 0xdf, 0xac, 0xc8, 0x9a, 0xa8, 0xff, 0xa0, 0x9c, 0xbb, 0xe7, - 0xbb, 0xa2, 0x7c, 0x1e, 0x60, 0x36, 0xf5, 0x39, 0x16, 0xf1, 0x15, 0x0a, 0x75, 0x02, 0xbd, 0x0e, - 0x4d, 0x87, 0x04, 0x2f, 0x5c, 0xef, 0x39, 0x33, 0x92, 0xd9, 0xf4, 0x27, 0x58, 0x18, 0xd7, 0x3a, - 0xa7, 0xc1, 0x21, 0x31, 0xba, 0x0a, 0x75, 0xe2, 0x79, 0xae, 0xc7, 0x4c, 0x67, 0x36, 0xf5, 0x61, - 0x93, 0xf8, 0x8b, 0x17, 0xab, 0x94, 0x0a, 0x73, 0x62, 0x74, 0x15, 0x5e, 0xf5, 0xb9, 0xb5, 0x70, - 0xdf, 0xd1, 0x17, 0xef, 0xa7, 0xc5, 0xac, 0x92, 0x5d, 0x38, 0xff, 0xd9, 0x70, 0x21, 0x95, 0x0c, - 0xac, 0x24, 0x5b, 0x5e, 0x19, 0xb5, 0xa1, 0xce, 0x2a, 0xea, 0x54, 0x64, 0xf3, 0xac, 0x52, 0xf7, - 0x50, 0x34, 0x7d, 0x9d, 0x10, 0x53, 0x7c, 0x11, 0xa3, 0x53, 0x9b, 0xbf, 0x02, 0x4d, 0x91, 0x4f, - 0xe9, 0x17, 0x79, 0xdb, 0x3b, 0x25, 0x34, 0x0d, 0xad, 0x4d, 0x62, 0x6f, 0xaf, 0xb9, 0x7e, 0xd0, - 0x29, 0xa3, 0x19, 0x68, 0x33, 0x5b, 0x78, 0xec, 0xd8, 0x07, 0x9d, 0xca, 0xfc, 0x07, 0xd0, 0x8e, - 0x7a, 0x84, 0x5a, 0x50, 0x5b, 0xdf, 0xb3, 0xed, 0x4e, 0x89, 0xb9, 0xa0, 0x81, 0xeb, 0x85, 0x01, - 0xe8, 0xd5, 0x97, 0x74, 0x3d, 0xe9, 0x94, 0xf3, 0xac, 0xbe, 0x82, 0x3a, 0x30, 0x2d, 0x2a, 0xe7, - 0x6d, 0xae, 0xea, 0x7f, 0x57, 0x86, 0x76, 0xf4, 0x29, 0x0f, 0xea, 0xff, 0x85, 0x32, 0xce, 0x9f, - 0x07, 0x16, 0x12, 0xd2, 0xce, 0xff, 0x32, 0x48, 0x42, 0xe2, 0x67, 0x60, 0x56, 0x4c, 0xad, 0xe1, - 0xe0, 0xf3, 0xd9, 0x31, 0x91, 0x3b, 0x7f, 0x33, 0x1a, 0xf5, 0x0e, 0x33, 0xb1, 0x65, 0xd7, 0x71, - 0x48, 0x3f, 0x60, 0x63, 0x7f, 0x08, 0xa6, 0xd6, 0xdd, 0x60, 0xc3, 0xf5, 0x7d, 0xda, 0x33, 0x3e, - 0x52, 0x71, 0x79, 0x45, 0xff, 0xf5, 0x32, 0x34, 0xf8, 0x07, 0x45, 0xf4, 0x5f, 0x2e, 0x43, 0x83, - 0x7f, 0x44, 0x04, 0x9d, 0x87, 0x8e, 0xe7, 0x52, 0xa0, 0x70, 0xa3, 0xd0, 0x5b, 0x11, 0xbd, 0x4a, - 0xe5, 0xd3, 0xbd, 0xab, 0x2b, 0x69, 0x81, 0x58, 0xda, 0x95, 0x3c, 0x74, 0x13, 0x80, 0x7f, 0xa4, - 0xe4, 0xc9, 0xc1, 0x90, 0x08, 0xf5, 0x4d, 0x5e, 0x1d, 0x13, 0x9f, 0x35, 0x61, 0x87, 0x2c, 0x12, - 0xf5, 0xfc, 0xd7, 0x61, 0x06, 0x13, 0x7f, 0xe8, 0x3a, 0x3e, 0xf9, 0x51, 0x7d, 0xb4, 0x3c, 0xf7, - 0xf3, 0xe3, 0xf3, 0xdf, 0xae, 0x42, 0x9d, 0x79, 0x8d, 0xfa, 0xef, 0x57, 0x23, 0xff, 0x36, 0xe3, - 0x4e, 0x61, 0x7c, 0xf3, 0x47, 0xb6, 0x66, 0xc5, 0xdf, 0x94, 0x8f, 0x8f, 0x2e, 0xcb, 0x37, 0x7e, - 0x64, 0x4b, 0x56, 0x39, 0x94, 0x9b, 0x3e, 0x9f, 0x81, 0xd6, 0xd0, 0x73, 0x07, 0x1e, 0x75, 0x6c, - 0x6b, 0x89, 0x4f, 0xcc, 0xa8, 0x6c, 0x1b, 0x82, 0x0c, 0x47, 0x0c, 0xfa, 0x3a, 0xb4, 0xc2, 0xdc, - 0x9c, 0x0f, 0x20, 0x20, 0xa8, 0x99, 0xae, 0x58, 0x9c, 0xab, 0x98, 0xfd, 0xa7, 0xe3, 0x22, 0x46, - 0x30, 0xdc, 0x94, 0x8a, 0xe4, 0xfc, 0x97, 0xc4, 0x89, 0xec, 0x0c, 0xb4, 0x57, 0x3c, 0x77, 0xc8, - 0x5e, 0xba, 0x77, 0x4a, 0xd4, 0xea, 0xb9, 0x18, 0x3b, 0x65, 0xfa, 0x7f, 0xf5, 0x25, 0xfb, 0x5f, - 0x61, 0xc6, 0x6a, 0xec, 0x13, 0x4a, 0xd6, 0xa9, 0x22, 0x04, 0xb3, 0x98, 0xb0, 0x53, 0x28, 0xe1, - 0x12, 0x75, 0x6a, 0x14, 0xe8, 0x91, 0x35, 0xe0, 0xdb, 0xbc, 0x4e, 0x7d, 0x7e, 0x31, 0xbc, 0x79, - 0x43, 0x8d, 0x97, 0x6f, 0x2b, 0xa7, 0xa0, 0x89, 0xf7, 0x98, 0x5f, 0xd6, 0x29, 0xd3, 0x6c, 0xea, - 0xec, 0x73, 0xe8, 0x65, 0xc3, 0xe9, 0x13, 0x9b, 0xad, 0xe5, 0xd1, 0xec, 0x52, 0x5b, 0x9a, 0xfb, - 0xcb, 0x8f, 0x8e, 0x97, 0xbf, 0xf3, 0xd1, 0xf1, 0xf2, 0xf7, 0x3e, 0x3a, 0x5e, 0xfe, 0xa5, 0xef, - 0x1f, 0x2f, 0x7d, 0xe7, 0xfb, 0xc7, 0x4b, 0xff, 0xf0, 0xfd, 0xe3, 0xa5, 0x0f, 0x2b, 0xc3, 0xad, - 0xad, 0x06, 0xbb, 0x32, 0x71, 0xe5, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x47, 0xc1, 0xf9, 0xb8, - 0x72, 0x5f, 0x00, 0x00, + // 6076 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7c, 0x4b, 0x8c, 0x1c, 0xc7, + 0x79, 0xff, 0xbc, 0x1f, 0xdf, 0x2e, 0x97, 0xc3, 0x22, 0x45, 0xb5, 0x4a, 0x14, 0x45, 0xad, 0x48, + 0x8a, 0x96, 0xa8, 0x21, 0x45, 0x52, 0x5c, 0x99, 0x16, 0x1f, 0xfb, 0xa2, 0x76, 0xf8, 0x58, 0xae, + 0x6b, 0x49, 0x5a, 0x96, 0x0d, 0xc3, 0xbd, 0xd3, 0xb5, 0xb3, 0x6d, 0xce, 0x76, 0x8f, 0xbb, 0x7b, + 0x97, 0x5c, 0xdb, 0x7f, 0xff, 0x1d, 0x3b, 0x41, 0x10, 0x20, 0x41, 0x72, 0x08, 0x92, 0x20, 0x97, + 0x00, 0x46, 0x02, 0xe4, 0x10, 0x18, 0x09, 0x72, 0x71, 0x2e, 0x46, 0x80, 0xc0, 0x40, 0x5e, 0x07, + 0xe7, 0x96, 0x4b, 0x60, 0x43, 0xbe, 0xe4, 0x90, 0x1c, 0x9c, 0x00, 0x41, 0x4e, 0x41, 0x50, 0x8f, + 0xee, 0xae, 0xea, 0xc7, 0xf4, 0x8c, 0x25, 0xe7, 0x81, 0xf8, 0x34, 0x53, 0x55, 0xdf, 0xf7, 0xab, + 0xd7, 0xf7, 0x7d, 0x55, 0xf5, 0x7d, 0xd5, 0x05, 0xc7, 0x47, 0x5b, 0x17, 0x46, 0x9e, 0x1b, 0xb8, + 0xfe, 0x05, 0xba, 0x4f, 0x9d, 0xc0, 0xef, 0xf2, 0x14, 0x6a, 0x9a, 0xce, 0x41, 0x70, 0x30, 0xa2, + 0xf8, 0xf4, 0xe8, 0xc9, 0xe0, 0xc2, 0xd0, 0xde, 0xba, 0x30, 0xda, 0xba, 0xb0, 0xeb, 0x5a, 0x74, + 0x18, 0x92, 0xf3, 0x84, 0x24, 0xc7, 0x27, 0x06, 0xae, 0x3b, 0x18, 0x52, 0x51, 0xb6, 0xb5, 0xb7, + 0x7d, 0xc1, 0x0f, 0xbc, 0xbd, 0x7e, 0x20, 0x4a, 0xe7, 0xbf, 0xfd, 0xbd, 0x32, 0xd4, 0x57, 0x19, + 0x3c, 0xba, 0x04, 0xad, 0x5d, 0xea, 0xfb, 0xe6, 0x80, 0xfa, 0x46, 0xf9, 0x54, 0xf5, 0xdc, 0xcc, + 0xa5, 0xe3, 0x5d, 0x59, 0x55, 0x97, 0x53, 0x74, 0xef, 0x8b, 0x62, 0x12, 0xd1, 0xa1, 0x13, 0xd0, + 0xee, 0xbb, 0x4e, 0x40, 0x9f, 0x05, 0x3d, 0xcb, 0xa8, 0x9c, 0x2a, 0x9f, 0x6b, 0x93, 0x38, 0x03, + 0x5d, 0x81, 0xb6, 0xed, 0xd8, 0x81, 0x6d, 0x06, 0xae, 0x67, 0x54, 0x4f, 0x95, 0x35, 0x48, 0xde, + 0xc8, 0xee, 0x62, 0xbf, 0xef, 0xee, 0x39, 0x01, 0x89, 0x09, 0x91, 0x01, 0xcd, 0xc0, 0x33, 0xfb, + 0xb4, 0x67, 0x19, 0x35, 0x8e, 0x18, 0x26, 0xf1, 0xf7, 0x2f, 0x42, 0x53, 0xb6, 0x01, 0xdd, 0x84, + 0x19, 0x53, 0xf0, 0x6e, 0xee, 0xb8, 0x4f, 0x8d, 0x32, 0x47, 0x7f, 0x31, 0xd1, 0x60, 0x89, 0xde, + 0x65, 0x24, 0x6b, 0x25, 0xa2, 0x72, 0xa0, 0x1e, 0xcc, 0xc9, 0xe4, 0x0a, 0x0d, 0x4c, 0x7b, 0xe8, + 0x1b, 0x7f, 0x25, 0x40, 0x4e, 0xe6, 0x80, 0x48, 0xb2, 0xb5, 0x12, 0x49, 0x30, 0xa2, 0xcf, 0xc2, + 0x51, 0x99, 0xb3, 0xec, 0x3a, 0xdb, 0xf6, 0xe0, 0xd1, 0xc8, 0x32, 0x03, 0x6a, 0xfc, 0xb5, 0xc0, + 0x3b, 0x9d, 0x83, 0x27, 0x68, 0xbb, 0x82, 0x78, 0xad, 0x44, 0xb2, 0x30, 0xd0, 0x6d, 0x38, 0x24, + 0xb3, 0x25, 0xe8, 0xdf, 0x08, 0xd0, 0x97, 0x72, 0x40, 0x23, 0x34, 0x9d, 0x0d, 0x7d, 0x0e, 0x8e, + 0xc9, 0x8c, 0x7b, 0xb6, 0xf3, 0x64, 0x79, 0xc7, 0x1c, 0x0e, 0xa9, 0x33, 0xa0, 0xc6, 0xdf, 0x8e, + 0x6f, 0xa3, 0x46, 0xbc, 0x56, 0x22, 0x99, 0x20, 0xe8, 0x01, 0x74, 0xdc, 0xad, 0x2f, 0xd1, 0x7e, + 0x38, 0x20, 0x9b, 0x34, 0x30, 0x3a, 0x1c, 0xf7, 0x95, 0x04, 0xee, 0x03, 0x4e, 0x16, 0x0e, 0x65, + 0x77, 0x93, 0x06, 0x6b, 0x25, 0x92, 0x62, 0x46, 0x8f, 0x00, 0x69, 0x79, 0x8b, 0xbb, 0xd4, 0xb1, + 0x8c, 0x4b, 0x1c, 0xf2, 0xd5, 0xf1, 0x90, 0x9c, 0x74, 0xad, 0x44, 0x32, 0x00, 0x52, 0xb0, 0x8f, + 0x1c, 0x9f, 0x06, 0xc6, 0xe5, 0x49, 0x60, 0x39, 0x69, 0x0a, 0x96, 0xe7, 0xb2, 0xb1, 0x15, 0xb9, + 0x84, 0x0e, 0xcd, 0xc0, 0x76, 0x1d, 0xd9, 0xde, 0x2b, 0x1c, 0xf8, 0x4c, 0x36, 0x70, 0x44, 0x1b, + 0xb5, 0x38, 0x13, 0x04, 0x7d, 0x01, 0x9e, 0x4b, 0xe4, 0x13, 0xba, 0xeb, 0xee, 0x53, 0xe3, 0x6d, + 0x8e, 0x7e, 0xb6, 0x08, 0x5d, 0x50, 0xaf, 0x95, 0x48, 0x36, 0x0c, 0x5a, 0x82, 0xd9, 0xb0, 0x80, + 0xc3, 0x5e, 0xe5, 0xb0, 0x27, 0xf2, 0x60, 0x25, 0x98, 0xc6, 0xc3, 0x74, 0x51, 0xa4, 0x97, 0x87, + 0xae, 0x4f, 0x8d, 0xc5, 0x4c, 0x5d, 0x94, 0x10, 0x9c, 0x84, 0xe9, 0xa2, 0xc2, 0xa1, 0x76, 0xd2, + 0x0f, 0x3c, 0xbb, 0xcf, 0x1b, 0xc8, 0xa4, 0x68, 0x61, 0x7c, 0x27, 0x63, 0x62, 0x29, 0x4a, 0xd9, + 0x30, 0x88, 0xc0, 0x61, 0x7f, 0x6f, 0xcb, 0xef, 0x7b, 0xf6, 0x88, 0xe5, 0x2d, 0x5a, 0x96, 0xf1, + 0xee, 0x38, 0xe4, 0x4d, 0x85, 0xb8, 0xbb, 0x68, 0xb1, 0xd9, 0x49, 0x02, 0xa0, 0xcf, 0x01, 0x52, + 0xb3, 0xe4, 0xf0, 0x5d, 0xe7, 0xb0, 0x9f, 0x98, 0x00, 0x36, 0x1a, 0xcb, 0x0c, 0x18, 0x64, 0xc2, + 0x31, 0x35, 0x77, 0xc3, 0xf5, 0x6d, 0xf6, 0x6b, 0xdc, 0xe0, 0xf0, 0x6f, 0x4c, 0x00, 0x1f, 0xb2, + 0x30, 0xc1, 0xca, 0x82, 0x4a, 0x56, 0xb1, 0xcc, 0xd4, 0x9a, 0x7a, 0xbe, 0x71, 0x73, 0xe2, 0x2a, + 0x42, 0x96, 0x64, 0x15, 0x61, 0x7e, 0x72, 0x88, 0xde, 0xf3, 0xdc, 0xbd, 0x91, 0x6f, 0xdc, 0x9a, + 0x78, 0x88, 0x04, 0x43, 0x72, 0x88, 0x44, 0x2e, 0xba, 0x0a, 0xad, 0xad, 0xa1, 0xdb, 0x7f, 0xc2, + 0x26, 0xb3, 0xc2, 0x21, 0x8d, 0x04, 0xe4, 0x12, 0x2b, 0x96, 0xd3, 0x17, 0xd1, 0x32, 0x61, 0xe5, + 0xff, 0x57, 0xe8, 0x90, 0x06, 0x54, 0x2e, 0x4b, 0x2f, 0x66, 0xb2, 0x0a, 0x12, 0x26, 0xac, 0x0a, + 0x07, 0x5a, 0x81, 0x99, 0x6d, 0x7b, 0x48, 0xfd, 0x47, 0xa3, 0xa1, 0x6b, 0x8a, 0x35, 0x6a, 0xe6, + 0xd2, 0xa9, 0x4c, 0x80, 0xdb, 0x31, 0x1d, 0x43, 0x51, 0xd8, 0xd0, 0x0d, 0x68, 0xef, 0x9a, 0xde, + 0x13, 0xbf, 0xe7, 0x6c, 0xbb, 0x46, 0x3d, 0x73, 0xe1, 0x11, 0x18, 0xf7, 0x43, 0xaa, 0xb5, 0x12, + 0x89, 0x59, 0xd8, 0xf2, 0xc5, 0x1b, 0xb5, 0x49, 0x83, 0xdb, 0x36, 0x1d, 0x5a, 0xbe, 0xd1, 0xe0, + 0x20, 0x2f, 0x67, 0x82, 0x6c, 0xd2, 0xa0, 0x2b, 0xc8, 0xd8, 0xf2, 0xa5, 0x33, 0xa2, 0xf7, 0xe1, + 0x68, 0x98, 0xb3, 0xbc, 0x63, 0x0f, 0x2d, 0x8f, 0x3a, 0x3d, 0xcb, 0x37, 0x9a, 0x99, 0x2b, 0x43, + 0x8c, 0xa7, 0xd0, 0xb2, 0xd5, 0x2b, 0x03, 0x82, 0x59, 0xc6, 0x30, 0x5b, 0x55, 0x49, 0xa3, 0x95, + 0x69, 0x19, 0x63, 0x68, 0x95, 0x98, 0x49, 0x57, 0x16, 0x08, 0xb2, 0xe0, 0xf9, 0x30, 0x7f, 0xc9, + 0xec, 0x3f, 0x19, 0x78, 0xee, 0x9e, 0x63, 0x2d, 0xbb, 0x43, 0xd7, 0x33, 0xda, 0x1c, 0xff, 0x5c, + 0x2e, 0x7e, 0x82, 0x7e, 0xad, 0x44, 0xf2, 0xa0, 0xd0, 0x32, 0xcc, 0x86, 0x45, 0x0f, 0xe9, 0xb3, + 0xc0, 0x80, 0xcc, 0xe5, 0x37, 0x86, 0x66, 0x44, 0xcc, 0x40, 0xaa, 0x4c, 0x2a, 0x08, 0x13, 0x09, + 0x63, 0xa6, 0x00, 0x84, 0x11, 0xa9, 0x20, 0x2c, 0xad, 0x82, 0xb0, 0xe5, 0xd7, 0x38, 0x54, 0x00, + 0xc2, 0x88, 0x54, 0x10, 0x96, 0x66, 0x4b, 0x75, 0xd4, 0x53, 0xd7, 0x7d, 0xc2, 0xe4, 0xc9, 0x98, + 0xcb, 0x5c, 0xaa, 0x95, 0xd1, 0x92, 0x84, 0x6c, 0xa9, 0x4e, 0x32, 0xb3, 0x0d, 0x4a, 0x98, 0xb7, + 0x38, 0xb4, 0x07, 0x8e, 0x71, 0x78, 0x8c, 0x2c, 0x33, 0x34, 0x4e, 0xc5, 0x36, 0x28, 0x1a, 0x1b, + 0xba, 0x25, 0xd5, 0x72, 0x93, 0x06, 0x2b, 0xf6, 0xbe, 0x71, 0x24, 0x73, 0x19, 0x8a, 0x51, 0x56, + 0xec, 0xfd, 0x48, 0x2f, 0x05, 0x8b, 0xda, 0xb5, 0x70, 0x91, 0x33, 0x9e, 0x2b, 0xe8, 0x5a, 0x48, + 0xa8, 0x76, 0x2d, 0xcc, 0x53, 0xbb, 0x76, 0xcf, 0x0c, 0xe8, 0x33, 0xe3, 0x85, 0x82, 0xae, 0x71, + 0x2a, 0xb5, 0x6b, 0x3c, 0x83, 0xad, 0x6e, 0x61, 0xc6, 0x63, 0xea, 0x05, 0x76, 0xdf, 0x1c, 0x8a, + 0xa1, 0x3a, 0x9d, 0xb9, 0x06, 0xc5, 0x78, 0x1a, 0x35, 0x5b, 0xdd, 0x32, 0x61, 0xd4, 0x8e, 0x3f, + 0x34, 0xb7, 0x86, 0x94, 0xb8, 0x4f, 0x8d, 0x33, 0x05, 0x1d, 0x0f, 0x09, 0xd5, 0x8e, 0x87, 0x79, + 0xaa, 0x6d, 0xf9, 0x8c, 0x6d, 0x0d, 0x68, 0x60, 0x9c, 0x2b, 0xb0, 0x2d, 0x82, 0x4c, 0xb5, 0x2d, + 0x22, 0x27, 0xb2, 0x00, 0x2b, 0x66, 0x60, 0xee, 0xdb, 0xf4, 0xe9, 0x63, 0x9b, 0x3e, 0x65, 0x0b, + 0xfb, 0xd1, 0x31, 0x16, 0x20, 0xa4, 0xed, 0x4a, 0xe2, 0xc8, 0x02, 0x24, 0x40, 0x22, 0x0b, 0xa0, + 0xe6, 0x4b, 0xb3, 0x7e, 0x6c, 0x8c, 0x05, 0xd0, 0xf0, 0x23, 0x1b, 0x9f, 0x07, 0x85, 0x4c, 0x38, + 0x9e, 0x2a, 0x7a, 0xe0, 0x59, 0xd4, 0x33, 0x5e, 0xe2, 0x95, 0xbc, 0x56, 0x5c, 0x09, 0x27, 0x5f, + 0x2b, 0x91, 0x1c, 0xa0, 0x54, 0x15, 0x9b, 0xee, 0x9e, 0xd7, 0xa7, 0x6c, 0x9c, 0x5e, 0x9d, 0xa4, + 0x8a, 0x88, 0x3c, 0x55, 0x45, 0x54, 0x82, 0xf6, 0xe1, 0xa5, 0xa8, 0x84, 0x55, 0xcc, 0x57, 0x51, + 0x5e, 0xbb, 0x3c, 0x58, 0x9c, 0xe5, 0x35, 0x75, 0xc7, 0xd7, 0x94, 0xe4, 0x5a, 0x2b, 0x91, 0xf1, + 0xb0, 0xe8, 0x00, 0x4e, 0x6a, 0x04, 0x62, 0x9d, 0x57, 0x2b, 0x7e, 0x8d, 0x57, 0x7c, 0x61, 0x7c, + 0xc5, 0x29, 0xb6, 0xb5, 0x12, 0x29, 0x00, 0x46, 0x23, 0x78, 0x51, 0x1b, 0x8c, 0x50, 0xb1, 0xa5, + 0x88, 0x7c, 0x8d, 0xd7, 0x7b, 0x7e, 0x7c, 0xbd, 0x3a, 0xcf, 0x5a, 0x89, 0x8c, 0x83, 0x44, 0x03, + 0x30, 0x32, 0x8b, 0xd9, 0x4c, 0x7e, 0x35, 0x73, 0xdb, 0x93, 0x53, 0x9d, 0x98, 0xcb, 0x5c, 0xb0, + 0x4c, 0xc9, 0x97, 0xc3, 0xf9, 0xff, 0x26, 0x95, 0xfc, 0x68, 0x1c, 0xf3, 0xa0, 0xb4, 0xb9, 0x63, + 0x45, 0x0f, 0x4d, 0x6f, 0x40, 0x03, 0x31, 0xd0, 0x3d, 0x8b, 0x75, 0xea, 0xeb, 0x93, 0xcc, 0x5d, + 0x8a, 0x4d, 0x9b, 0xbb, 0x4c, 0x60, 0xe4, 0xc3, 0x09, 0x8d, 0xa2, 0xe7, 0x2f, 0xbb, 0xc3, 0x21, + 0xed, 0x87, 0xa3, 0xf9, 0xff, 0x79, 0xc5, 0x6f, 0x8e, 0xaf, 0x38, 0xc1, 0xb4, 0x56, 0x22, 0x63, + 0x41, 0x53, 0xfd, 0x7d, 0x30, 0xb4, 0x12, 0x32, 0x63, 0x4c, 0x24, 0xab, 0x49, 0xb6, 0x54, 0x7f, + 0x53, 0x14, 0x29, 0x59, 0x55, 0x28, 0x58, 0x77, 0x9f, 0x9f, 0x44, 0x56, 0x75, 0x9e, 0x94, 0xac, + 0xea, 0xc5, 0x6c, 0x75, 0xdb, 0xf3, 0xa9, 0xc7, 0x31, 0xee, 0xb8, 0xb6, 0x63, 0xbc, 0x9c, 0xb9, + 0xba, 0x3d, 0xf2, 0xa9, 0x27, 0x2b, 0x62, 0x54, 0x6c, 0x75, 0xd3, 0xd8, 0x34, 0x9c, 0x7b, 0x74, + 0x3b, 0x30, 0x4e, 0x15, 0xe1, 0x30, 0x2a, 0x0d, 0x87, 0x65, 0xb0, 0x95, 0x22, 0xca, 0xd8, 0xa4, + 0x6c, 0x56, 0x88, 0xe9, 0x0c, 0xa8, 0xf1, 0x4a, 0xe6, 0x4a, 0xa1, 0xc0, 0x29, 0xc4, 0x6c, 0xa5, + 0xc8, 0x02, 0x61, 0x27, 0xff, 0x28, 0x9f, 0xed, 0xc8, 0x04, 0xf4, 0x7c, 0xe6, 0xc9, 0x5f, 0x81, + 0x8e, 0x48, 0xd9, 0x19, 0x24, 0x0d, 0x80, 0x3e, 0x01, 0xb5, 0x91, 0xed, 0x0c, 0x0c, 0x8b, 0x03, + 0x1d, 0x4d, 0x00, 0x6d, 0xd8, 0xce, 0x60, 0xad, 0x44, 0x38, 0x09, 0x7a, 0x17, 0x60, 0xe4, 0xb9, + 0x7d, 0xea, 0xfb, 0xeb, 0xf4, 0xa9, 0x41, 0x39, 0x03, 0x4e, 0x32, 0x08, 0x82, 0xee, 0x3a, 0x65, + 0xeb, 0xb2, 0x42, 0x8f, 0x56, 0xe1, 0x90, 0x4c, 0x49, 0x2d, 0xdf, 0xce, 0xdc, 0xfc, 0x85, 0x00, + 0xb1, 0x17, 0x48, 0xe3, 0x62, 0x67, 0x1f, 0x99, 0xb1, 0xe2, 0x3a, 0xd4, 0x18, 0x64, 0x9e, 0x7d, + 0x42, 0x10, 0x46, 0xc2, 0xf6, 0x58, 0x0a, 0x07, 0x5a, 0x82, 0xd9, 0x60, 0xc7, 0xa3, 0xa6, 0xb5, + 0x19, 0x98, 0xc1, 0x9e, 0x6f, 0x38, 0x99, 0xdb, 0x34, 0x51, 0xd8, 0x7d, 0xc8, 0x29, 0xd9, 0x16, + 0x54, 0xe5, 0x41, 0xeb, 0xd0, 0x61, 0x07, 0xa1, 0x7b, 0xf6, 0xae, 0x1d, 0x10, 0x6a, 0xf6, 0x77, + 0xa8, 0x65, 0xb8, 0x99, 0x87, 0x28, 0xb6, 0xed, 0xed, 0xaa, 0x74, 0x6c, 0xb7, 0x92, 0xe4, 0x45, + 0x6b, 0x30, 0xc7, 0xf2, 0x36, 0x47, 0x66, 0x9f, 0x3e, 0xf2, 0xcd, 0x01, 0x35, 0x46, 0x99, 0x12, + 0xc8, 0xd1, 0x62, 0x2a, 0xb6, 0x59, 0xd1, 0xf9, 0x42, 0xa4, 0x7b, 0x6e, 0xdf, 0x1c, 0x0a, 0xa4, + 0x2f, 0xe7, 0x23, 0xc5, 0x54, 0x21, 0x52, 0x9c, 0xa3, 0xf5, 0x51, 0x8c, 0xbd, 0x65, 0xec, 0x17, + 0xf4, 0x51, 0xd2, 0x69, 0x7d, 0x94, 0x79, 0x0c, 0xcf, 0x71, 0x03, 0x7b, 0xdb, 0xee, 0x4b, 0xfd, + 0x75, 0x2c, 0xc3, 0xcb, 0xc4, 0x5b, 0x57, 0xc8, 0xba, 0x9b, 0xc2, 0xb3, 0x94, 0xe2, 0x45, 0x0f, + 0x01, 0xa9, 0x79, 0x52, 0xa8, 0x7c, 0x8e, 0x38, 0x3f, 0x0e, 0x31, 0x92, 0xac, 0x0c, 0x7e, 0xd6, + 0xca, 0x91, 0x79, 0xc0, 0x8e, 0xb7, 0x4b, 0x9e, 0x6b, 0x5a, 0x7d, 0xd3, 0x0f, 0x8c, 0x20, 0xb3, + 0x95, 0x1b, 0x82, 0xac, 0x1b, 0xd1, 0xb1, 0x56, 0x26, 0x79, 0x19, 0xde, 0x2e, 0xdd, 0xdd, 0xa2, + 0x9e, 0xbf, 0x63, 0x8f, 0x64, 0x1b, 0xf7, 0x32, 0xf1, 0xee, 0x47, 0x64, 0x71, 0x0b, 0x53, 0xbc, + 0x6c, 0x23, 0xee, 0xb3, 0xd9, 0xde, 0x3c, 0x70, 0xfa, 0x42, 0x18, 0x25, 0xe8, 0xd3, 0xcc, 0x8d, + 0x38, 0x97, 0x8c, 0x6e, 0x4c, 0x1c, 0x43, 0x67, 0xc3, 0xa0, 0xbb, 0x70, 0x78, 0x74, 0x69, 0xa4, + 0x21, 0x3f, 0xcb, 0xdc, 0x38, 0x6f, 0x5c, 0xda, 0x48, 0x42, 0x26, 0x39, 0x99, 0xaa, 0xd9, 0xbb, + 0x23, 0xd7, 0x0b, 0x6e, 0xdb, 0x8e, 0xed, 0xef, 0x18, 0x07, 0x99, 0xaa, 0xd6, 0xe3, 0x24, 0x5d, + 0x41, 0xc3, 0x54, 0x4d, 0xe5, 0x41, 0x57, 0xa0, 0xd9, 0xdf, 0x31, 0x83, 0x45, 0xcb, 0x32, 0xbe, + 0x21, 0x1c, 0xbd, 0xcf, 0x27, 0xf8, 0x97, 0x77, 0xcc, 0x40, 0xba, 0x48, 0x42, 0x52, 0x74, 0x1d, + 0x80, 0xfd, 0x95, 0x3d, 0xf8, 0x85, 0x72, 0xa6, 0xad, 0xe2, 0x8c, 0x51, 0xeb, 0x15, 0x06, 0xf4, + 0x3e, 0x1c, 0x8d, 0x53, 0x4c, 0x49, 0xc5, 0x99, 0xff, 0x9b, 0xe5, 0x4c, 0x6b, 0xab, 0xe0, 0x44, + 0xb4, 0x6b, 0x25, 0x92, 0x05, 0x11, 0x36, 0x4c, 0xae, 0xc5, 0xdf, 0x1a, 0xd3, 0xb0, 0x68, 0xdd, + 0x55, 0x18, 0x96, 0x9a, 0x50, 0xdf, 0x37, 0x87, 0x7b, 0x14, 0x7f, 0xaf, 0x02, 0x35, 0x46, 0x86, + 0x29, 0x54, 0x59, 0x87, 0xe7, 0xa0, 0x62, 0x5b, 0x3c, 0x84, 0xd0, 0x26, 0x15, 0xdb, 0x42, 0x06, + 0x34, 0x5d, 0xb6, 0x8f, 0x8c, 0x62, 0x1a, 0x61, 0x92, 0x0d, 0xa8, 0x8c, 0x7d, 0x48, 0xc7, 0x11, + 0x4e, 0xc4, 0x33, 0x18, 0x6c, 0x18, 0x26, 0x09, 0x49, 0xb1, 0x01, 0x0d, 0xb9, 0xcc, 0x27, 0x6a, + 0xc2, 0xeb, 0xd0, 0x90, 0xa3, 0x96, 0x6c, 0x83, 0x52, 0x53, 0x65, 0xf2, 0x9a, 0x28, 0x1c, 0x4e, + 0x0e, 0x5a, 0x12, 0x78, 0x09, 0xda, 0x5e, 0x34, 0x29, 0x95, 0x84, 0x8f, 0x27, 0x05, 0xdd, 0x8d, + 0x80, 0x48, 0xcc, 0x86, 0xff, 0xa4, 0x0e, 0x4d, 0x19, 0x22, 0xc0, 0xeb, 0x50, 0xe3, 0xf1, 0x94, + 0x63, 0x50, 0xb7, 0x1d, 0x8b, 0x3e, 0xe3, 0x55, 0xd5, 0x89, 0x48, 0xa0, 0x8b, 0xd0, 0x94, 0x21, + 0x03, 0x59, 0x57, 0x5e, 0x00, 0x28, 0x24, 0xc3, 0x1f, 0x40, 0x33, 0x8c, 0xab, 0x9c, 0x80, 0xf6, + 0xc8, 0x73, 0x99, 0x31, 0xec, 0x85, 0x3d, 0x88, 0x33, 0xd0, 0x5b, 0xd0, 0xb4, 0x64, 0xe4, 0xa6, + 0x22, 0x65, 0x5b, 0x84, 0xba, 0xba, 0x61, 0xa8, 0xab, 0xbb, 0xc9, 0x43, 0x5d, 0x24, 0xa4, 0xc3, + 0xdf, 0x28, 0x43, 0x43, 0x84, 0x57, 0xf0, 0x7e, 0x34, 0xf2, 0x6f, 0x43, 0xa3, 0xcf, 0xf3, 0x8c, + 0x64, 0x68, 0x45, 0x6b, 0xa1, 0x8c, 0xd7, 0x10, 0x49, 0xcc, 0xd8, 0x7c, 0xb1, 0x08, 0x56, 0xc6, + 0xb2, 0x09, 0xa5, 0x26, 0x92, 0xf8, 0xbf, 0xad, 0xde, 0xff, 0x28, 0xc3, 0x21, 0x3d, 0x6a, 0x73, + 0x02, 0xda, 0xfd, 0x28, 0x0e, 0x24, 0x47, 0xb7, 0xaf, 0xc4, 0x74, 0xa0, 0x3f, 0xb4, 0xa9, 0x13, + 0x70, 0x07, 0x65, 0x25, 0x73, 0xdf, 0x9b, 0x19, 0x25, 0xea, 0x2e, 0x47, 0x6c, 0x44, 0x81, 0xc0, + 0x5f, 0x07, 0x88, 0x4b, 0xd0, 0xa9, 0x68, 0x27, 0xb2, 0x6e, 0xee, 0x86, 0xd5, 0xab, 0x59, 0x0a, + 0xc5, 0x86, 0x19, 0xec, 0x48, 0x45, 0x54, 0xb3, 0xd0, 0x79, 0x38, 0xe2, 0xdb, 0x03, 0xc7, 0x0c, + 0xf6, 0x3c, 0xfa, 0x98, 0x7a, 0xf6, 0xb6, 0x4d, 0x2d, 0xae, 0x96, 0x2d, 0x92, 0x2e, 0xc0, 0xbf, + 0xd2, 0x86, 0x86, 0x38, 0x61, 0xe0, 0x7f, 0xab, 0x44, 0x32, 0x86, 0xff, 0xa2, 0x0c, 0x75, 0x11, + 0x69, 0x49, 0x2a, 0xca, 0x6d, 0x55, 0xbe, 0xaa, 0x19, 0xdb, 0xef, 0xac, 0xc8, 0x53, 0xf7, 0x2e, + 0x3d, 0x78, 0xcc, 0x8c, 0x4c, 0x24, 0x74, 0xe8, 0x38, 0x34, 0xfc, 0xbd, 0xad, 0x9e, 0xe5, 0x1b, + 0xd5, 0x53, 0xd5, 0x73, 0x6d, 0x22, 0x53, 0xf8, 0x0e, 0xb4, 0x42, 0x62, 0xd4, 0x81, 0xea, 0x13, + 0x7a, 0x20, 0x2b, 0x67, 0x7f, 0xd1, 0x79, 0x69, 0xac, 0x22, 0xb5, 0x49, 0xca, 0xb6, 0xa8, 0x45, + 0x5a, 0xb4, 0x2f, 0x42, 0x95, 0xed, 0xe9, 0x93, 0x5d, 0x98, 0x5e, 0x45, 0x72, 0x5b, 0xbb, 0x0c, + 0x75, 0x11, 0xed, 0x4a, 0xd6, 0x81, 0xa0, 0xf6, 0x84, 0x1e, 0x88, 0x31, 0x6a, 0x13, 0xfe, 0x3f, + 0x17, 0xe4, 0xcf, 0xab, 0x30, 0xab, 0x7a, 0xf8, 0xf1, 0x6a, 0xae, 0x01, 0x36, 0xb7, 0x03, 0xd5, + 0x00, 0xcb, 0x24, 0xb3, 0x32, 0x1c, 0x8b, 0xcf, 0x73, 0x9b, 0x88, 0x04, 0xee, 0x42, 0x43, 0x06, + 0x4e, 0x92, 0x48, 0x11, 0x7d, 0x45, 0xa5, 0xbf, 0x03, 0xad, 0x28, 0x0e, 0xf2, 0x51, 0xeb, 0xf6, + 0xa0, 0x15, 0x05, 0x3c, 0x8e, 0x41, 0x3d, 0x70, 0x03, 0x73, 0xc8, 0xe1, 0xaa, 0x44, 0x24, 0x98, + 0xa2, 0x39, 0xf4, 0x59, 0xb0, 0x1c, 0x59, 0xc1, 0x2a, 0x89, 0x33, 0x84, 0x91, 0xa3, 0xfb, 0xa2, + 0xb4, 0x2a, 0x4a, 0xa3, 0x8c, 0xb8, 0xce, 0x9a, 0x5a, 0xe7, 0x01, 0x34, 0x64, 0x14, 0x24, 0x2a, + 0x2f, 0x2b, 0xe5, 0x68, 0x11, 0xea, 0x03, 0x56, 0x2e, 0x67, 0xfd, 0x8d, 0x84, 0x89, 0x10, 0x87, + 0x9b, 0x65, 0xd7, 0x09, 0x98, 0x18, 0xeb, 0xce, 0x1d, 0x22, 0x38, 0xd9, 0x14, 0x7a, 0x22, 0xa4, + 0x25, 0x34, 0x4a, 0xa6, 0xf0, 0x1f, 0x94, 0xa1, 0x1d, 0xc5, 0x10, 0xf1, 0x07, 0x79, 0xca, 0xb3, + 0x08, 0x87, 0x3c, 0x49, 0xc5, 0xac, 0x43, 0xa8, 0x42, 0x2f, 0x26, 0x5a, 0x42, 0x14, 0x1a, 0xa2, + 0x73, 0xe0, 0x77, 0x73, 0x27, 0x75, 0x1e, 0x66, 0x43, 0xd2, 0xbb, 0xb1, 0xe8, 0x69, 0x79, 0x18, + 0x47, 0xdc, 0x1d, 0xa8, 0xda, 0x96, 0xb8, 0xd2, 0xd0, 0x26, 0xec, 0x2f, 0xde, 0x86, 0x59, 0x35, + 0x92, 0x80, 0x1f, 0x67, 0x6b, 0xcf, 0x4d, 0x56, 0x8d, 0x12, 0xb5, 0xa8, 0x24, 0x8e, 0x4b, 0x61, + 0x17, 0x62, 0x12, 0xa2, 0x31, 0xe0, 0xe7, 0xa1, 0x2e, 0xe2, 0x9b, 0xc9, 0x65, 0xff, 0x77, 0xfb, + 0x50, 0xe7, 0x93, 0x80, 0x2f, 0x0b, 0x05, 0x38, 0x0f, 0x0d, 0x7e, 0x56, 0x0f, 0x6f, 0x5e, 0x1c, + 0xcb, 0x9a, 0x31, 0x22, 0x69, 0xf0, 0x32, 0xcc, 0x28, 0x91, 0x25, 0x26, 0xb1, 0xbc, 0x20, 0x92, + 0x82, 0x30, 0x89, 0x30, 0xb4, 0xd8, 0x62, 0x29, 0x0d, 0x28, 0xeb, 0x7f, 0x94, 0xc6, 0xa7, 0xa3, + 0x4d, 0x09, 0x96, 0x91, 0xb4, 0x5e, 0x34, 0x4a, 0x51, 0x1a, 0x7f, 0x1e, 0xda, 0x51, 0x00, 0x0a, + 0x3d, 0x80, 0x59, 0x19, 0x80, 0x12, 0xe7, 0x67, 0x46, 0x3c, 0x57, 0x20, 0x5d, 0xec, 0xb0, 0xcc, + 0x63, 0x58, 0xdd, 0x87, 0x07, 0x23, 0x4a, 0x34, 0x00, 0xfc, 0x4b, 0xe7, 0xf8, 0xc8, 0xe3, 0x11, + 0xb4, 0x22, 0xaf, 0x7b, 0x72, 0x16, 0x16, 0x84, 0x69, 0xac, 0x14, 0x86, 0x8c, 0x04, 0x3f, 0x33, + 0xc0, 0xdc, 0x82, 0xe2, 0x17, 0xa1, 0x7a, 0x97, 0x1e, 0x30, 0x0d, 0x11, 0x86, 0x54, 0x6a, 0x88, + 0x30, 0x98, 0x3d, 0x68, 0xc8, 0xe8, 0x57, 0xb2, 0xbe, 0x0b, 0xd0, 0xd8, 0x16, 0x01, 0xb5, 0x02, + 0x93, 0x29, 0xc9, 0xf0, 0x4d, 0x98, 0x51, 0x63, 0x5e, 0x49, 0xbc, 0x53, 0x30, 0xd3, 0x57, 0xa2, + 0x6a, 0x62, 0x1a, 0xd4, 0x2c, 0x4c, 0x75, 0x71, 0x4c, 0x21, 0xac, 0x66, 0xca, 0xe1, 0x2b, 0x99, + 0xc3, 0x3e, 0x46, 0x1a, 0xef, 0xc2, 0xe1, 0x64, 0x70, 0x2b, 0x59, 0xd3, 0x39, 0x38, 0xbc, 0x95, + 0x08, 0xa5, 0x09, 0x1b, 0x98, 0xcc, 0xc6, 0x3d, 0xa8, 0x8b, 0xe0, 0x43, 0x12, 0xe2, 0x22, 0xd4, + 0x4d, 0x1e, 0xdc, 0x60, 0x8c, 0x73, 0xa9, 0x5d, 0xab, 0x8c, 0xc9, 0x32, 0x0a, 0x22, 0x08, 0xb1, + 0x0d, 0x87, 0xf4, 0x78, 0x46, 0x12, 0x72, 0x0d, 0x0e, 0xed, 0x6b, 0x71, 0x13, 0x01, 0x3d, 0x9f, + 0x09, 0xad, 0x41, 0x11, 0x9d, 0x11, 0x7f, 0xb3, 0x01, 0x35, 0x1e, 0x90, 0x4b, 0x56, 0x71, 0x15, + 0x6a, 0x01, 0x7d, 0x16, 0xee, 0x51, 0xe7, 0xc7, 0x46, 0xf7, 0x84, 0x57, 0x88, 0xd3, 0xa3, 0x4f, + 0x42, 0xdd, 0x0f, 0x0e, 0x86, 0xe1, 0x69, 0xe0, 0xd5, 0xf1, 0x8c, 0x9b, 0x8c, 0x94, 0x08, 0x0e, + 0xc6, 0xca, 0x75, 0x41, 0x06, 0x90, 0x0b, 0x58, 0xb9, 0x12, 0x12, 0xc1, 0x81, 0x6e, 0xb2, 0x63, + 0x1d, 0xed, 0x3f, 0xa1, 0x96, 0x8c, 0x1c, 0x9f, 0x19, 0xcf, 0xbc, 0x2c, 0x88, 0x49, 0xc8, 0xc5, + 0xea, 0xee, 0xf3, 0xd9, 0x6d, 0x4c, 0x52, 0x37, 0x9f, 0x71, 0x22, 0x38, 0xd0, 0x2a, 0xb4, 0xed, + 0xbe, 0xeb, 0xac, 0xee, 0xba, 0x5f, 0xb2, 0x65, 0x88, 0xf8, 0xb5, 0xf1, 0xec, 0xbd, 0x90, 0x9c, + 0xc4, 0x9c, 0x21, 0x4c, 0x6f, 0x97, 0x1d, 0x70, 0x5a, 0x93, 0xc2, 0x70, 0x72, 0x12, 0x73, 0xe2, + 0x13, 0x72, 0x3e, 0xb3, 0x95, 0xfc, 0x36, 0xd4, 0xf9, 0x90, 0xa3, 0xeb, 0x6a, 0xf1, 0x9c, 0x52, + 0x53, 0xae, 0xc5, 0x92, 0x53, 0x15, 0xe1, 0xf0, 0xf1, 0xd7, 0x71, 0x66, 0x26, 0xc1, 0x91, 0xf3, + 0x26, 0x70, 0x5e, 0x86, 0xa6, 0x9c, 0x0a, 0xbd, 0xc1, 0xad, 0x90, 0xe0, 0x25, 0xa8, 0x0b, 0xc5, + 0xcc, 0xee, 0xcf, 0x2b, 0xd0, 0x8e, 0x06, 0x73, 0x3c, 0x09, 0x1f, 0x9d, 0x1c, 0x92, 0x5f, 0xae, + 0x40, 0x5d, 0x04, 0x26, 0xd3, 0xa6, 0x56, 0xd5, 0x82, 0x57, 0xc7, 0xc7, 0x39, 0x55, 0x35, 0xb8, + 0xcd, 0x0f, 0x6a, 0x6c, 0x63, 0x1e, 0x5d, 0xf4, 0x3b, 0x57, 0xc0, 0xbd, 0x11, 0xd2, 0x93, 0x98, + 0xb5, 0x60, 0x3a, 0x1f, 0x40, 0x3b, 0xe2, 0x42, 0x4b, 0xfa, 0x94, 0x9e, 0x1f, 0x3b, 0x15, 0xc9, + 0x2a, 0x25, 0xe0, 0x6f, 0x95, 0xa1, 0xba, 0x62, 0xef, 0xa7, 0xc6, 0xe1, 0x9d, 0x50, 0xab, 0x8b, + 0xcc, 0xc1, 0x8a, 0xbd, 0xaf, 0x29, 0x35, 0x5e, 0x0d, 0x25, 0xee, 0x5d, 0xbd, 0x79, 0x67, 0xc7, + 0xef, 0xc0, 0x62, 0x18, 0xd1, 0xb0, 0x5f, 0x6f, 0x42, 0x8d, 0xc7, 0xfc, 0xb3, 0xec, 0xd4, 0xc1, + 0xa8, 0xb8, 0x61, 0xdc, 0xab, 0xc8, 0x17, 0x5c, 0x4e, 0x2f, 0xec, 0x94, 0x19, 0x14, 0xdb, 0x29, + 0xe1, 0x24, 0x65, 0xa4, 0x44, 0x70, 0xb0, 0x2a, 0x77, 0xed, 0x5d, 0x2a, 0xcd, 0x54, 0x41, 0x95, + 0xf7, 0xed, 0x5d, 0x4a, 0x38, 0x3d, 0xe3, 0xdb, 0x31, 0xfd, 0x1d, 0x69, 0xa1, 0x0a, 0xf8, 0xd6, + 0x4c, 0x7f, 0x87, 0x70, 0x7a, 0xc6, 0xe7, 0xb0, 0x23, 0x61, 0x63, 0x12, 0x3e, 0x76, 0x52, 0x24, + 0x9c, 0x9e, 0xf1, 0xf9, 0xf6, 0x57, 0xa8, 0xb4, 0x49, 0x05, 0x7c, 0x9b, 0xf6, 0x57, 0x28, 0xe1, + 0xf4, 0xb1, 0x09, 0x6f, 0x4d, 0x36, 0x34, 0x8a, 0x09, 0x7f, 0x08, 0x73, 0x81, 0x16, 0xb9, 0x92, + 0x17, 0x4f, 0xce, 0x17, 0xcc, 0x8b, 0xc6, 0x43, 0x12, 0x18, 0x4c, 0x09, 0xf8, 0x01, 0x38, 0x5b, + 0x09, 0x5e, 0x82, 0xfa, 0x67, 0x6c, 0x2b, 0xd8, 0xd1, 0x8b, 0xeb, 0x9a, 0xc9, 0x63, 0xd3, 0x36, + 0x95, 0xc9, 0x53, 0x67, 0x5d, 0xe0, 0xac, 0x40, 0x8d, 0x89, 0xcf, 0x74, 0x72, 0x1c, 0x4b, 0xdd, + 0x47, 0x32, 0xc0, 0xea, 0x40, 0x0b, 0x9c, 0x13, 0x50, 0x63, 0x12, 0x92, 0x33, 0x24, 0x27, 0xa0, + 0xc6, 0xe4, 0x2e, 0xbf, 0x94, 0xcd, 0xb6, 0x5e, 0x5a, 0x0d, 0x4b, 0xcf, 0xc2, 0x9c, 0x3e, 0x1d, + 0x39, 0x28, 0xdf, 0x6b, 0x42, 0x8d, 0x5f, 0xa0, 0x49, 0x6a, 0xe4, 0xa7, 0xe1, 0x90, 0x98, 0xbf, + 0x25, 0xb9, 0x05, 0xaf, 0x64, 0xde, 0x9f, 0xd3, 0xaf, 0xe5, 0x48, 0x11, 0x90, 0x2c, 0x44, 0x47, + 0x98, 0x7c, 0x53, 0xc1, 0xa1, 0x34, 0x89, 0x7c, 0x37, 0xda, 0xbc, 0xd6, 0x0a, 0x6e, 0x6f, 0x71, + 0x5e, 0xb1, 0x05, 0x0e, 0x77, 0xb2, 0x68, 0x09, 0x5a, 0x6c, 0x69, 0x65, 0xc3, 0x25, 0xd5, 0xf6, + 0xec, 0x78, 0xfe, 0x9e, 0xa4, 0x26, 0x11, 0x1f, 0x5b, 0xd8, 0xfb, 0xa6, 0x67, 0xf1, 0x56, 0x49, + 0x1d, 0x7e, 0x6d, 0x3c, 0xc8, 0x72, 0x48, 0x4e, 0x62, 0x4e, 0x74, 0x17, 0x66, 0x2c, 0x1a, 0xf9, + 0x09, 0xa4, 0x52, 0x7f, 0x62, 0x3c, 0xd0, 0x4a, 0xcc, 0x40, 0x54, 0x6e, 0xd6, 0xa6, 0xf0, 0x6c, + 0xe8, 0x17, 0x6e, 0x36, 0x38, 0x54, 0x7c, 0x4b, 0x36, 0xe6, 0xc4, 0x67, 0xe0, 0x90, 0x36, 0x6f, + 0x1f, 0xeb, 0xae, 0x43, 0x9d, 0x4b, 0x81, 0xb3, 0x10, 0x1d, 0x51, 0xde, 0xd4, 0xb7, 0x1d, 0xb9, + 0x27, 0x12, 0xc9, 0x78, 0x0f, 0x5a, 0xe1, 0xc4, 0xa0, 0x5b, 0x7a, 0x1b, 0x5e, 0x2f, 0x6e, 0x43, + 0x34, 0xa7, 0x12, 0x6d, 0x1d, 0xda, 0xd1, 0x0c, 0xa1, 0x45, 0x1d, 0xee, 0x8d, 0x62, 0xb8, 0x78, + 0x76, 0x25, 0x1e, 0x81, 0x19, 0x65, 0xa2, 0xd0, 0xb2, 0x8e, 0xf8, 0x66, 0x31, 0xa2, 0x3a, 0xcd, + 0xf1, 0xae, 0x27, 0x9a, 0x31, 0x75, 0x56, 0xaa, 0xf1, 0xac, 0xfc, 0x71, 0x13, 0x5a, 0xd1, 0xa5, + 0xb5, 0x8c, 0x33, 0xe6, 0x9e, 0x37, 0x2c, 0x3c, 0x63, 0x86, 0xfc, 0xdd, 0x47, 0xde, 0x90, 0x30, + 0x0e, 0x36, 0xc5, 0x81, 0x1d, 0x44, 0xaa, 0xfa, 0x5a, 0x31, 0xeb, 0x43, 0x46, 0x4e, 0x04, 0x17, + 0x7a, 0xa0, 0x4b, 0x79, 0x6d, 0xcc, 0xa5, 0x06, 0x0d, 0x24, 0x57, 0xd2, 0x7b, 0xd0, 0xb6, 0xd9, + 0xd6, 0x6f, 0x2d, 0x5e, 0x79, 0xdf, 0x28, 0x86, 0xeb, 0x85, 0x2c, 0x24, 0xe6, 0x66, 0x6d, 0xdb, + 0x36, 0xf7, 0x99, 0x5e, 0x73, 0xb0, 0xc6, 0xa4, 0x6d, 0xbb, 0x1d, 0x33, 0x11, 0x15, 0x01, 0x5d, + 0x93, 0x7b, 0x97, 0x66, 0x81, 0x65, 0x89, 0x87, 0x2a, 0xde, 0xbf, 0xbc, 0x9f, 0x5a, 0x69, 0x85, + 0x1a, 0x5f, 0x9c, 0x00, 0x65, 0xec, 0x6a, 0xcb, 0x66, 0x50, 0xec, 0x8c, 0xda, 0x93, 0xce, 0xa0, + 0xba, 0x3b, 0xc2, 0x2f, 0x42, 0xf5, 0x91, 0x37, 0xcc, 0x5f, 0xab, 0xf9, 0x74, 0xe7, 0x14, 0xbf, + 0xaa, 0x6b, 0x42, 0xfe, 0x86, 0x3e, 0x9a, 0x93, 0x5c, 0x1c, 0x65, 0xd0, 0x73, 0x88, 0xae, 0xcb, + 0x05, 0xfd, 0x6d, 0x5d, 0xdf, 0x5e, 0x4e, 0xe8, 0x1b, 0xd3, 0xb0, 0x0d, 0x8f, 0x8a, 0x7b, 0x3b, + 0xca, 0x4a, 0x3e, 0xe9, 0x3a, 0x79, 0x27, 0xdc, 0x7f, 0x4c, 0x65, 0x29, 0x92, 0x63, 0x2b, 0xb0, + 0x7e, 0xb1, 0x0c, 0xad, 0xe8, 0x4e, 0x62, 0xda, 0x3b, 0xdf, 0xb2, 0xfd, 0x35, 0x6a, 0x5a, 0xd4, + 0x93, 0x7a, 0xfb, 0x7a, 0xe1, 0x65, 0xc7, 0x6e, 0x4f, 0x72, 0x90, 0x88, 0x17, 0x9f, 0x82, 0x56, + 0x98, 0x9b, 0x73, 0x28, 0xfb, 0x51, 0x05, 0x1a, 0xf2, 0x36, 0x63, 0xb2, 0x11, 0x37, 0xa0, 0x31, + 0x34, 0x0f, 0xdc, 0xbd, 0xf0, 0xc8, 0x74, 0xb6, 0xe0, 0x82, 0x64, 0xf7, 0x1e, 0xa7, 0x26, 0x92, + 0x0b, 0x7d, 0x0a, 0xea, 0x43, 0x7b, 0xd7, 0x0e, 0xa4, 0xf9, 0x38, 0x53, 0xc8, 0xce, 0xef, 0x3d, + 0x08, 0x1e, 0x56, 0x39, 0xbf, 0xc4, 0x14, 0x5e, 0x41, 0x2f, 0xac, 0xfc, 0x31, 0xa7, 0x26, 0x92, + 0x0b, 0xdf, 0x81, 0x86, 0x68, 0xce, 0x74, 0x8b, 0x84, 0xde, 0x93, 0x58, 0xd2, 0x79, 0xdb, 0x72, + 0x76, 0xa5, 0x27, 0xa1, 0x21, 0x2a, 0xcf, 0x91, 0x9a, 0x1f, 0xbe, 0xc0, 0xcf, 0x3b, 0x43, 0x7c, + 0x2f, 0x0e, 0xfe, 0x7d, 0xf4, 0x58, 0x06, 0x7e, 0x08, 0x87, 0x57, 0xcc, 0xc0, 0xdc, 0x32, 0x7d, + 0x4a, 0x68, 0xdf, 0xf5, 0xac, 0x4c, 0x54, 0x4f, 0x14, 0x49, 0x0f, 0x75, 0x3e, 0xaa, 0xa4, 0xfb, + 0xb9, 0xeb, 0xf0, 0x7f, 0x8e, 0xeb, 0xf0, 0x4f, 0x6b, 0x39, 0xfe, 0xbc, 0x49, 0x3c, 0x19, 0x4c, + 0xe0, 0x52, 0x0e, 0xbd, 0x6b, 0xfa, 0xde, 0xfb, 0x74, 0x01, 0xa7, 0xb6, 0xf9, 0xbe, 0xa6, 0x7b, + 0xf4, 0x8a, 0x78, 0x35, 0x97, 0xde, 0xad, 0xa4, 0x4b, 0xef, 0x6c, 0x01, 0x77, 0xca, 0xa7, 0x77, + 0x4d, 0xf7, 0xe9, 0x15, 0xd5, 0xae, 0x3a, 0xf5, 0xfe, 0x8f, 0xb9, 0xd1, 0x7e, 0x3b, 0xc7, 0xed, + 0xf3, 0x49, 0xdd, 0xed, 0x33, 0x46, 0x6a, 0x7e, 0x56, 0x7e, 0x9f, 0xdf, 0x69, 0xe4, 0xf8, 0x7d, + 0x16, 0x34, 0xbf, 0xcf, 0x98, 0x96, 0x25, 0x1d, 0x3f, 0xd7, 0x74, 0xc7, 0xcf, 0xe9, 0x02, 0x4e, + 0xcd, 0xf3, 0xb3, 0xa0, 0x79, 0x7e, 0x8a, 0x2a, 0x55, 0x5c, 0x3f, 0x0b, 0x9a, 0xeb, 0xa7, 0x88, + 0x51, 0xf1, 0xfd, 0x2c, 0x68, 0xbe, 0x9f, 0x22, 0x46, 0xc5, 0xf9, 0xb3, 0xa0, 0x39, 0x7f, 0x8a, + 0x18, 0x15, 0xef, 0xcf, 0x35, 0xdd, 0xfb, 0x53, 0x3c, 0x3e, 0xca, 0xa4, 0xff, 0xdc, 0x51, 0xf3, + 0x5f, 0xe8, 0xa8, 0xf9, 0xb5, 0x6a, 0x8e, 0x03, 0x86, 0x64, 0x3b, 0x60, 0xce, 0xe7, 0xcf, 0x64, + 0xb1, 0x07, 0x66, 0xf2, 0x55, 0x20, 0xed, 0x82, 0xb9, 0x9e, 0x70, 0xc1, 0x9c, 0x29, 0x60, 0xd6, + 0x7d, 0x30, 0xff, 0x6b, 0x9c, 0x0c, 0x7f, 0xd4, 0x18, 0x73, 0x9e, 0x7e, 0x47, 0x3d, 0x4f, 0x8f, + 0x59, 0xc9, 0xd2, 0x07, 0xea, 0x1b, 0xfa, 0x81, 0xfa, 0xdc, 0x04, 0xbc, 0xda, 0x89, 0x7a, 0x23, + 0xeb, 0x44, 0xdd, 0x9d, 0x00, 0x25, 0xf7, 0x48, 0x7d, 0x27, 0x7d, 0xa4, 0x3e, 0x3f, 0x01, 0x5e, + 0xe6, 0x99, 0x7a, 0x23, 0xeb, 0x4c, 0x3d, 0x49, 0xeb, 0x72, 0x0f, 0xd5, 0x9f, 0xd2, 0x0e, 0xd5, + 0xaf, 0x4d, 0x32, 0x5c, 0xf1, 0xe2, 0xf0, 0xd9, 0x9c, 0x53, 0xf5, 0x5b, 0x93, 0xc0, 0x8c, 0x77, + 0x62, 0xff, 0xfc, 0x5c, 0xac, 0x57, 0xf3, 0x87, 0x2f, 0x43, 0x2b, 0xbc, 0x68, 0x83, 0xbf, 0x0c, + 0xcd, 0xf0, 0x13, 0xb6, 0xa4, 0xe6, 0x1c, 0x8f, 0x0e, 0x75, 0x62, 0xf7, 0x2c, 0x53, 0xe8, 0x06, + 0xd4, 0xd8, 0x3f, 0xa9, 0x16, 0xaf, 0x4f, 0x76, 0xa1, 0x87, 0x55, 0x42, 0x38, 0x1f, 0xfe, 0xd7, + 0x63, 0x00, 0xca, 0x97, 0x3d, 0x93, 0x56, 0xfb, 0x1e, 0x33, 0x66, 0xc3, 0x80, 0x7a, 0xfc, 0x22, + 0x57, 0xe1, 0x97, 0x2f, 0x71, 0x0d, 0x4c, 0x5a, 0x02, 0xea, 0x11, 0xc9, 0x8e, 0xee, 0x43, 0x2b, + 0x74, 0xa4, 0x1a, 0x35, 0x0e, 0xf5, 0xd6, 0xc4, 0x50, 0xa1, 0x6b, 0x8f, 0x44, 0x10, 0x68, 0x11, + 0x6a, 0xbe, 0xeb, 0x05, 0x46, 0x9d, 0x43, 0xbd, 0x39, 0x31, 0xd4, 0xa6, 0xeb, 0x05, 0x84, 0xb3, + 0x8a, 0xae, 0x29, 0x1f, 0x4e, 0x4f, 0xd3, 0x35, 0xcd, 0x62, 0xff, 0x4b, 0x35, 0xb2, 0xa1, 0xcb, + 0x52, 0x1b, 0x85, 0x0c, 0x5d, 0x98, 0x7c, 0x96, 0x54, 0xad, 0x44, 0x72, 0x13, 0x24, 0x66, 0x42, + 0xec, 0x6f, 0x5e, 0x87, 0x4e, 0xdf, 0xdd, 0xa7, 0x1e, 0x89, 0xaf, 0x38, 0xc9, 0x5b, 0x68, 0xa9, + 0x7c, 0x84, 0xa1, 0xb5, 0x63, 0x5b, 0xb4, 0xd7, 0x97, 0xf6, 0xaf, 0x45, 0xa2, 0x34, 0xba, 0x0b, + 0x2d, 0xee, 0x63, 0x0f, 0x3d, 0xfc, 0xd3, 0x35, 0x52, 0xb8, 0xfa, 0x43, 0x00, 0x56, 0x11, 0xaf, + 0xfc, 0xb6, 0x1d, 0xf0, 0x31, 0x6c, 0x91, 0x28, 0xcd, 0x1a, 0xcc, 0xef, 0x91, 0xa9, 0x0d, 0x6e, + 0x8a, 0x06, 0x27, 0xf3, 0xd1, 0x15, 0x78, 0x8e, 0xe7, 0x25, 0x8e, 0x98, 0xc2, 0x55, 0xdf, 0x22, + 0xd9, 0x85, 0xfc, 0xde, 0x9c, 0x39, 0x10, 0x9f, 0x49, 0x70, 0xe7, 0x5d, 0x9d, 0xc4, 0x19, 0xe8, + 0x3c, 0x1c, 0xb1, 0xe8, 0xb6, 0xb9, 0x37, 0x0c, 0x1e, 0xd2, 0xdd, 0xd1, 0xd0, 0x0c, 0x68, 0xcf, + 0xe2, 0xdf, 0x6e, 0xb7, 0x49, 0xba, 0x00, 0x5d, 0x84, 0xa3, 0x32, 0x53, 0xa8, 0x31, 0x9b, 0x8d, + 0x9e, 0xc5, 0x3f, 0x65, 0x6e, 0x93, 0xac, 0x22, 0xfc, 0xc3, 0x1a, 0x9b, 0x74, 0x2e, 0xda, 0xef, + 0x41, 0xd5, 0xb4, 0x2c, 0xb9, 0x6c, 0x5e, 0x9e, 0x52, 0x41, 0xe4, 0xdd, 0x7b, 0x86, 0x80, 0x36, + 0xa2, 0x2b, 0x77, 0x62, 0xe1, 0xbc, 0x3a, 0x2d, 0x56, 0xf4, 0xa4, 0x84, 0xc4, 0x61, 0x88, 0x7b, + 0xe2, 0x16, 0x7f, 0xf5, 0xa7, 0x43, 0x8c, 0x2e, 0xf8, 0x4b, 0x1c, 0x74, 0x07, 0x6a, 0xbc, 0x85, + 0x62, 0x61, 0xbd, 0x32, 0x2d, 0xde, 0x7d, 0xd1, 0x3e, 0x8e, 0x81, 0xfb, 0xe2, 0xee, 0x9b, 0x72, + 0xe1, 0xb2, 0xac, 0x5f, 0xb8, 0x5c, 0x82, 0xba, 0x1d, 0xd0, 0xdd, 0xf4, 0xfd, 0xdb, 0xb1, 0xa2, + 0x2a, 0x2d, 0x8f, 0x60, 0x1d, 0x7b, 0x0f, 0xf0, 0x83, 0xdc, 0xdb, 0xf7, 0xb7, 0xa0, 0xc6, 0xd8, + 0x53, 0x7b, 0xc9, 0x49, 0x2a, 0xe6, 0x9c, 0xf8, 0x12, 0xd4, 0x58, 0x67, 0xc7, 0xf4, 0x4e, 0xb6, + 0xa7, 0x12, 0xb5, 0x67, 0x69, 0x06, 0xda, 0xee, 0x88, 0x7a, 0x5c, 0x31, 0xf0, 0x3f, 0xd7, 0x94, + 0x4b, 0x71, 0x3d, 0x55, 0xc6, 0xde, 0x9e, 0xda, 0x72, 0xaa, 0x52, 0x46, 0x12, 0x52, 0xf6, 0xce, + 0xf4, 0x68, 0x29, 0x39, 0x23, 0x09, 0x39, 0xfb, 0x29, 0x30, 0x53, 0x92, 0x76, 0x4f, 0x93, 0xb4, + 0xab, 0xd3, 0x23, 0x6a, 0xb2, 0x46, 0x8b, 0x64, 0x6d, 0x45, 0x97, 0xb5, 0xee, 0x64, 0x53, 0x1e, + 0x2d, 0x4d, 0x13, 0x48, 0xdb, 0xe7, 0x73, 0xa5, 0x6d, 0x49, 0x93, 0xb6, 0x69, 0xab, 0xfe, 0x98, + 0xe4, 0xed, 0xef, 0x6a, 0x50, 0x63, 0xcb, 0x23, 0x5a, 0x55, 0x65, 0xed, 0xad, 0xa9, 0x96, 0x56, + 0x55, 0xce, 0xd6, 0x13, 0x72, 0x76, 0x65, 0x3a, 0xa4, 0x94, 0x8c, 0xad, 0x27, 0x64, 0x6c, 0x4a, + 0xbc, 0x94, 0x7c, 0xad, 0x69, 0xf2, 0x75, 0x69, 0x3a, 0x34, 0x4d, 0xb6, 0xcc, 0x22, 0xd9, 0xba, + 0xa5, 0xcb, 0xd6, 0x84, 0xbb, 0x37, 0xbe, 0x57, 0x99, 0x40, 0xae, 0xde, 0xcf, 0x95, 0xab, 0x1b, + 0x9a, 0x5c, 0x4d, 0x53, 0xed, 0xc7, 0x24, 0x53, 0x57, 0xc4, 0xa6, 0x33, 0xfb, 0xe3, 0xa7, 0xbc, + 0x4d, 0x27, 0x7e, 0x1b, 0xda, 0xf1, 0xd3, 0x08, 0x19, 0xd7, 0xf3, 0x05, 0x59, 0x58, 0x6b, 0x98, + 0xc4, 0x97, 0xa1, 0x1d, 0x3f, 0x77, 0x90, 0x51, 0x97, 0xcf, 0x0b, 0x25, 0x97, 0x4c, 0xe1, 0x55, + 0x38, 0x92, 0xfe, 0x18, 0x3b, 0xc3, 0x0f, 0xaf, 0xdc, 0x2d, 0x0f, 0x3f, 0x45, 0x51, 0xb2, 0xf0, + 0x53, 0x98, 0x4b, 0x7c, 0x5e, 0x3d, 0x35, 0x06, 0xba, 0xac, 0x6c, 0x91, 0xab, 0x89, 0x8f, 0xf5, + 0xf4, 0xdb, 0xf2, 0xf1, 0x46, 0x18, 0xaf, 0xc0, 0x5c, 0x41, 0xe3, 0x27, 0xb9, 0x2c, 0xff, 0x45, + 0x98, 0x19, 0xd7, 0xf6, 0x8f, 0xe1, 0x32, 0x7f, 0x00, 0x9d, 0xd4, 0xd3, 0x10, 0xc9, 0x6a, 0x36, + 0x00, 0x06, 0x11, 0x8d, 0x14, 0xda, 0x8b, 0x53, 0x7c, 0xba, 0xc0, 0xf9, 0x88, 0x82, 0x81, 0x7f, + 0xbf, 0x0c, 0x47, 0xd2, 0xef, 0x42, 0x4c, 0x7a, 0xf8, 0x31, 0xa0, 0xc9, 0xb1, 0xa2, 0x2f, 0x3e, + 0xc2, 0x24, 0xba, 0x0f, 0xb3, 0xfe, 0xd0, 0xee, 0xd3, 0xe5, 0x1d, 0xd3, 0x19, 0x50, 0x5f, 0x9e, + 0x68, 0x0a, 0xde, 0x76, 0xd8, 0x8c, 0x39, 0x88, 0xc6, 0x8e, 0x9f, 0xc2, 0x8c, 0x52, 0x88, 0xde, + 0x85, 0x8a, 0x3b, 0x4a, 0xdd, 0x6b, 0xcc, 0xc7, 0x7c, 0x10, 0xea, 0x1b, 0xa9, 0xb8, 0xa3, 0xb4, + 0x4a, 0xaa, 0xea, 0x5b, 0xd5, 0xd4, 0x17, 0xdf, 0x85, 0x23, 0xe9, 0xa7, 0x17, 0x92, 0xc3, 0x73, + 0x36, 0xe5, 0x25, 0x10, 0xc3, 0x94, 0x3c, 0xf2, 0x2f, 0xc0, 0xe1, 0xe4, 0x83, 0x0a, 0x19, 0x5f, + 0xe3, 0xc4, 0x1f, 0x35, 0x85, 0xee, 0xfa, 0xf9, 0x5f, 0x2d, 0xc3, 0x9c, 0xde, 0x11, 0x74, 0x1c, + 0x90, 0x9e, 0xb3, 0xee, 0x3a, 0xb4, 0x53, 0x42, 0xcf, 0xc1, 0x11, 0x3d, 0x7f, 0xd1, 0xb2, 0x3a, + 0xe5, 0x34, 0x39, 0x33, 0x5b, 0x9d, 0x0a, 0x32, 0xe0, 0x58, 0x62, 0x84, 0xb8, 0x11, 0xed, 0x54, + 0xd1, 0x0b, 0xf0, 0x5c, 0xb2, 0x64, 0x34, 0x34, 0xfb, 0xb4, 0x53, 0xc3, 0x3f, 0xa9, 0x40, 0xed, + 0x91, 0x4f, 0x3d, 0xfc, 0x8f, 0x95, 0xf0, 0x2b, 0x8d, 0x77, 0xa0, 0xc6, 0xdf, 0x3a, 0x50, 0xbe, + 0x66, 0x2c, 0x27, 0xbe, 0x66, 0xd4, 0xbe, 0x88, 0x8b, 0xbf, 0x66, 0x7c, 0x07, 0x6a, 0xfc, 0x75, + 0x83, 0xe9, 0x39, 0xbf, 0x55, 0x86, 0x76, 0xfc, 0xd2, 0xc0, 0xd4, 0xfc, 0xea, 0x57, 0x21, 0x15, + 0xfd, 0xab, 0x90, 0xd7, 0xa1, 0xee, 0xf1, 0xef, 0x37, 0x84, 0x95, 0x49, 0x7e, 0x6b, 0xc2, 0x2b, + 0x24, 0x82, 0x04, 0x53, 0x98, 0x51, 0xdf, 0x51, 0x98, 0xbe, 0x19, 0xa7, 0xe5, 0x23, 0x4a, 0x3d, + 0xcb, 0x5f, 0xf4, 0x3c, 0xf3, 0x40, 0x0a, 0xa6, 0x9e, 0x89, 0x4f, 0x40, 0x6d, 0xc3, 0x76, 0x06, + 0xd9, 0x1f, 0x91, 0xe2, 0xef, 0x96, 0xa1, 0x29, 0x2f, 0xef, 0xe2, 0x05, 0xa8, 0xae, 0xd3, 0xa7, + 0xac, 0x21, 0xf2, 0xda, 0x70, 0xaa, 0x21, 0xf7, 0x79, 0x2f, 0x24, 0x3d, 0x09, 0xc9, 0xf0, 0xb5, + 0x68, 0x99, 0x9c, 0x9e, 0xf7, 0x1d, 0xa8, 0xf1, 0xe7, 0x0f, 0xa6, 0xe7, 0xfc, 0xb3, 0x16, 0x34, + 0xc4, 0x97, 0x98, 0xf8, 0x3b, 0x2d, 0x68, 0x88, 0x27, 0x11, 0xd0, 0x0d, 0x68, 0xfa, 0x7b, 0xbb, + 0xbb, 0xa6, 0x77, 0x60, 0x64, 0xbf, 0xbf, 0xa9, 0xbd, 0xa0, 0xd0, 0xdd, 0x14, 0xb4, 0x24, 0x64, + 0x42, 0x6f, 0x43, 0xad, 0x6f, 0x6e, 0xd3, 0x54, 0x38, 0x37, 0x8b, 0x79, 0xd9, 0xdc, 0xa6, 0x84, + 0x93, 0xa3, 0x5b, 0xd0, 0x92, 0xd3, 0xe2, 0x4b, 0x7f, 0xce, 0xf8, 0x7a, 0xc3, 0xc9, 0x8c, 0xb8, + 0xf0, 0x1d, 0x68, 0xca, 0xc6, 0xa0, 0x9b, 0xd1, 0x77, 0xa8, 0x49, 0xcf, 0x73, 0x66, 0x17, 0xa2, + 0x6f, 0xe5, 0xa3, 0x2f, 0x52, 0xbf, 0x5f, 0x81, 0x1a, 0x6b, 0xdc, 0x47, 0x46, 0x42, 0x27, 0x01, + 0x86, 0xa6, 0x1f, 0x6c, 0xec, 0x0d, 0x87, 0xd4, 0x92, 0x5f, 0xd8, 0x29, 0x39, 0xe8, 0x1c, 0x1c, + 0x16, 0x29, 0x7f, 0x67, 0x73, 0xaf, 0xdf, 0xa7, 0xd1, 0x67, 0xa2, 0xc9, 0x6c, 0xb4, 0x08, 0x75, + 0xfe, 0x48, 0x9f, 0xdc, 0x15, 0xbe, 0x51, 0x38, 0xb2, 0xdd, 0x0d, 0xdb, 0x91, 0xad, 0x11, 0x9c, + 0xd8, 0x85, 0x76, 0x94, 0xc7, 0x94, 0x70, 0x64, 0x3b, 0x8e, 0xed, 0x0c, 0xa4, 0x44, 0x87, 0x49, + 0xb6, 0xe8, 0xb0, 0xbf, 0xb2, 0xbd, 0x75, 0x22, 0x53, 0x2c, 0x7f, 0xdb, 0xb4, 0x87, 0xb2, 0x89, + 0x75, 0x22, 0x53, 0x0c, 0x69, 0x4f, 0x3e, 0x24, 0x51, 0xe3, 0x1d, 0x0c, 0x93, 0xf8, 0xc3, 0x72, + 0xf4, 0x31, 0x76, 0xd6, 0xc7, 0x99, 0x29, 0x5f, 0xd2, 0x09, 0xd5, 0xa1, 0x2d, 0x16, 0x04, 0xc5, + 0x45, 0x7d, 0x1c, 0x1a, 0xae, 0x33, 0xb4, 0x1d, 0x2a, 0x7d, 0x47, 0x32, 0x95, 0x18, 0xe3, 0x7a, + 0x6a, 0x8c, 0x65, 0xf9, 0xaa, 0x65, 0xb3, 0x26, 0x36, 0xe2, 0x72, 0x91, 0x83, 0xae, 0x43, 0xd3, + 0xa2, 0xfb, 0x76, 0x9f, 0xfa, 0x46, 0x93, 0x8b, 0xde, 0xab, 0x63, 0xc7, 0x76, 0x85, 0xd3, 0x92, + 0x90, 0x07, 0x07, 0xd0, 0x10, 0x59, 0x51, 0x97, 0xca, 0x4a, 0x97, 0xe2, 0x46, 0x57, 0xc6, 0x34, + 0xba, 0x5a, 0xd0, 0xe8, 0x5a, 0xb2, 0xd1, 0xf3, 0x5f, 0x03, 0x88, 0xc5, 0x0d, 0xcd, 0x40, 0xf3, + 0x91, 0xf3, 0xc4, 0x71, 0x9f, 0x3a, 0x9d, 0x12, 0x4b, 0x3c, 0xd8, 0xde, 0x66, 0xb5, 0x74, 0xca, + 0x2c, 0xc1, 0xe8, 0x6c, 0x67, 0xd0, 0xa9, 0x20, 0x80, 0x06, 0x4b, 0x50, 0xab, 0x53, 0x65, 0xff, + 0x6f, 0xf3, 0xf9, 0xeb, 0xd4, 0xd0, 0xf3, 0x70, 0xb4, 0xe7, 0xf4, 0xdd, 0xdd, 0x91, 0x19, 0xd8, + 0x5b, 0x43, 0xfa, 0x98, 0x7a, 0xbe, 0xed, 0x3a, 0x9d, 0x3a, 0x5b, 0xbd, 0xd6, 0x69, 0xf0, 0xd4, + 0xf5, 0x9e, 0xac, 0x53, 0x6a, 0xc9, 0xf7, 0x1f, 0x3a, 0x0d, 0xfc, 0xef, 0x65, 0x11, 0x0d, 0xc6, + 0xb7, 0x60, 0x56, 0x7b, 0xf1, 0xc4, 0x80, 0x26, 0x7f, 0x80, 0x22, 0xde, 0x8f, 0xcb, 0x24, 0x97, + 0x1e, 0xf1, 0xb9, 0xbc, 0xdc, 0xca, 0x88, 0x14, 0xbe, 0x0d, 0xa0, 0xbc, 0x73, 0x72, 0x12, 0x60, + 0xeb, 0x20, 0xa0, 0xbe, 0x78, 0xe3, 0x84, 0x41, 0xd4, 0x88, 0x92, 0xa3, 0xe2, 0x57, 0x34, 0x7c, + 0x7c, 0x15, 0x40, 0x79, 0xe5, 0x84, 0xe9, 0x15, 0x4b, 0x2d, 0x25, 0xc1, 0x92, 0xd9, 0xb8, 0x2b, + 0x7b, 0x10, 0xbe, 0x67, 0x12, 0xb6, 0x40, 0x78, 0xef, 0xd4, 0x16, 0xf0, 0x1c, 0xbc, 0x0a, 0x10, + 0x3f, 0xe9, 0x81, 0x17, 0x22, 0xd3, 0xfd, 0x26, 0xd4, 0x2c, 0x33, 0x30, 0xa5, 0xd5, 0x7c, 0x21, + 0xb1, 0x72, 0xc5, 0x2c, 0x84, 0x93, 0xe1, 0x6f, 0x97, 0x61, 0x56, 0x7d, 0xbe, 0x04, 0xbf, 0x07, + 0x35, 0xfe, 0xfe, 0xc9, 0x4d, 0x98, 0x55, 0xdf, 0x2f, 0x49, 0x3d, 0x1f, 0x2d, 0xf0, 0x54, 0x56, + 0xa2, 0x31, 0xe0, 0x5e, 0xd4, 0xa4, 0x8f, 0x0c, 0x75, 0x11, 0x9a, 0xf2, 0x39, 0x14, 0x7c, 0x06, + 0xda, 0xf1, 0xeb, 0x27, 0xcc, 0x76, 0x88, 0xfc, 0x70, 0x96, 0x65, 0x12, 0xff, 0x53, 0x15, 0xea, + 0x7c, 0x3a, 0xf1, 0x37, 0x2a, 0xaa, 0x84, 0xe2, 0x9f, 0x94, 0x73, 0xcf, 0x82, 0x97, 0xb5, 0x67, + 0x03, 0xe6, 0x52, 0xaf, 0xfe, 0xc8, 0xc7, 0x4e, 0x74, 0xc3, 0x7a, 0x15, 0x9a, 0x8e, 0x90, 0x4c, + 0xae, 0x3c, 0x73, 0xe9, 0x97, 0x7e, 0x38, 0x97, 0x94, 0x5e, 0x12, 0x12, 0xa3, 0x2b, 0x50, 0xa7, + 0x9e, 0xe7, 0x7a, 0x5c, 0xa5, 0xe6, 0x52, 0xef, 0xe7, 0xc4, 0x0f, 0xab, 0xac, 0x32, 0x2a, 0x22, + 0x88, 0xd1, 0x15, 0x78, 0xce, 0x17, 0x5a, 0x24, 0xf6, 0x94, 0xbe, 0xfc, 0xae, 0x5a, 0x5a, 0x9b, + 0xec, 0xc2, 0xf9, 0x4f, 0x87, 0x0b, 0xac, 0xa2, 0x78, 0x25, 0x55, 0x23, 0xcb, 0xa8, 0x0d, 0x75, + 0x5e, 0x51, 0xa7, 0xa2, 0xaa, 0x6d, 0x35, 0x47, 0xf1, 0x6a, 0xf3, 0x97, 0xa1, 0x29, 0xf3, 0x19, + 0xfd, 0xa2, 0x68, 0x7b, 0xa7, 0x84, 0x66, 0xa1, 0xb5, 0x49, 0x87, 0xdb, 0x6b, 0xae, 0x1f, 0x74, + 0xca, 0xe8, 0x10, 0xb4, 0xb9, 0x2e, 0x3c, 0x70, 0x86, 0x07, 0x9d, 0xca, 0xfc, 0xfb, 0xd0, 0x8e, + 0x7a, 0x84, 0x5a, 0x50, 0x5b, 0xdf, 0x1b, 0x0e, 0x3b, 0x25, 0xbe, 0x35, 0x0d, 0x5c, 0x2f, 0x74, + 0x4c, 0xaf, 0x3e, 0x63, 0xeb, 0x4c, 0xa7, 0x9c, 0x67, 0x0d, 0x2a, 0xa8, 0x03, 0xb3, 0xb2, 0x72, + 0xd1, 0xe6, 0x2a, 0xfe, 0x87, 0x32, 0xb4, 0xa3, 0x17, 0x63, 0xd8, 0xbe, 0x30, 0x9c, 0xe3, 0x7c, + 0x3b, 0xb0, 0x90, 0x98, 0xed, 0xfc, 0x07, 0x68, 0x12, 0x33, 0x7e, 0x16, 0xe6, 0xa4, 0xc9, 0x0d, + 0x07, 0x5f, 0x58, 0xcd, 0x44, 0xee, 0xfc, 0x9d, 0x68, 0xd4, 0x3b, 0x5c, 0xc5, 0x96, 0x5d, 0xc7, + 0xa1, 0xfd, 0x80, 0x8f, 0xfd, 0x61, 0x98, 0x59, 0x77, 0x83, 0x0d, 0xd7, 0xf7, 0x59, 0xcf, 0xc4, + 0x48, 0xc5, 0xe5, 0x15, 0x34, 0x07, 0x10, 0xde, 0x35, 0x63, 0x46, 0x12, 0xff, 0x5e, 0x19, 0x1a, + 0xe2, 0x1d, 0x1b, 0xfc, 0x9b, 0x65, 0x68, 0xc8, 0xb7, 0x6b, 0x5e, 0x87, 0x8e, 0xe7, 0x32, 0xe0, + 0xf0, 0x40, 0xd1, 0x5b, 0x91, 0xbd, 0x4c, 0xe5, 0xb3, 0x33, 0xae, 0xab, 0x48, 0x85, 0xdc, 0x02, + 0x68, 0x79, 0xe8, 0x1a, 0x80, 0x78, 0x1b, 0xe7, 0xe1, 0xc1, 0x88, 0x4a, 0x71, 0x4e, 0x5e, 0x31, + 0x93, 0xaf, 0xe9, 0xf0, 0x60, 0x8c, 0x42, 0x3d, 0xff, 0x55, 0x38, 0x44, 0xa8, 0x3f, 0x72, 0x1d, + 0x9f, 0xfe, 0xac, 0xde, 0xca, 0xcf, 0x7d, 0xf5, 0x7e, 0xfe, 0xbb, 0x55, 0xa8, 0xf3, 0xdd, 0x25, + 0xfe, 0x4e, 0x35, 0xda, 0x07, 0x67, 0xdc, 0x3d, 0x8c, 0x6f, 0x08, 0xa9, 0xda, 0xad, 0xed, 0x4b, + 0xd5, 0x30, 0xd3, 0x25, 0xf5, 0x66, 0x90, 0xaa, 0xd9, 0x3a, 0x87, 0x76, 0x23, 0xe8, 0x53, 0xd0, + 0x1a, 0x79, 0xee, 0xc0, 0x63, 0x1b, 0xe0, 0x5a, 0xe2, 0x65, 0x23, 0x9d, 0x6d, 0x43, 0x92, 0x91, + 0x88, 0x01, 0xaf, 0x43, 0x2b, 0xcc, 0xcd, 0x79, 0x28, 0x01, 0x41, 0xcd, 0x72, 0xe5, 0x22, 0x5e, + 0x25, 0xfc, 0x3f, 0x1b, 0x17, 0xf5, 0xc5, 0x9d, 0x76, 0xf4, 0xd6, 0xcd, 0xfc, 0x17, 0x64, 0xe4, + 0xf6, 0x10, 0xb4, 0x57, 0x3c, 0x77, 0xc4, 0xbf, 0x88, 0xef, 0x94, 0x98, 0x15, 0x10, 0xd3, 0xd8, + 0x29, 0xb3, 0xff, 0xab, 0xcf, 0xf8, 0xff, 0x0a, 0x57, 0x5e, 0x73, 0x9f, 0x32, 0xb2, 0x4e, 0x15, + 0x21, 0x98, 0x23, 0x94, 0x47, 0xab, 0xe4, 0xd6, 0xa9, 0x53, 0x63, 0x40, 0xf7, 0xed, 0x81, 0x38, + 0x0e, 0x76, 0xea, 0xf3, 0x8b, 0xe1, 0x0d, 0x1d, 0xa6, 0xcc, 0xe2, 0xf8, 0x39, 0x03, 0x4d, 0xb2, + 0xc7, 0xf7, 0x6f, 0x9d, 0x32, 0xcb, 0x66, 0x87, 0x02, 0x01, 0xbd, 0x6c, 0x3a, 0x7d, 0x3a, 0xe4, + 0x6b, 0x7e, 0x64, 0x6d, 0x6a, 0x4b, 0x27, 0xfe, 0xf2, 0xc3, 0x93, 0xe5, 0x1f, 0x7c, 0x78, 0xb2, + 0xfc, 0xa3, 0x0f, 0x4f, 0x96, 0x7f, 0xe3, 0xc7, 0x27, 0x4b, 0x3f, 0xf8, 0xf1, 0xc9, 0xd2, 0xdf, + 0xff, 0xf8, 0x64, 0xe9, 0x83, 0xca, 0x68, 0x6b, 0xab, 0xc1, 0xaf, 0x56, 0x5c, 0xfe, 0xcf, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xd3, 0xba, 0xe9, 0xbf, 0xe9, 0x61, 0x00, 0x00, } func (m *Event) Marshal() (dAtA []byte, err error) { @@ -13667,6 +13984,98 @@ func (m *EventMessageValueOfBlockDataviewIsCollectionSet) MarshalToSizedBuffer(d } return len(dAtA) - i, nil } +func (m *EventMessageValueOfChatAdd) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventMessageValueOfChatAdd) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.ChatAdd != nil { + { + size, err := m.ChatAdd.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x8 + i-- + dAtA[i] = 0x82 + } + return len(dAtA) - i, nil +} +func (m *EventMessageValueOfChatUpdate) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventMessageValueOfChatUpdate) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.ChatUpdate != nil { + { + size, err := m.ChatUpdate.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x8 + i-- + dAtA[i] = 0x8a + } + return len(dAtA) - i, nil +} +func (m *EventMessageValueOfChatUpdateReactions) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventMessageValueOfChatUpdateReactions) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.ChatUpdateReactions != nil { + { + size, err := m.ChatUpdateReactions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x8 + i-- + dAtA[i] = 0x92 + } + return len(dAtA) - i, nil +} +func (m *EventMessageValueOfChatDelete) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventMessageValueOfChatDelete) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.ChatDelete != nil { + { + size, err := m.ChatDelete.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x8 + i-- + dAtA[i] = 0x9a + } + return len(dAtA) - i, nil +} func (m *EventMessageValueOfAccountDetails) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) @@ -13759,6 +14168,192 @@ func (m *EventMessageValueOfAccountLinkChallenge) MarshalToSizedBuffer(dAtA []by } return len(dAtA) - i, nil } +func (m *EventChat) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EventChat) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventChat) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *EventChatAdd) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EventChatAdd) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventChatAdd) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Message != nil { + { + size, err := m.Message.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if len(m.OrderId) > 0 { + i -= len(m.OrderId) + copy(dAtA[i:], m.OrderId) + i = encodeVarintEvents(dAtA, i, uint64(len(m.OrderId))) + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *EventChatDelete) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EventChatDelete) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventChatDelete) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *EventChatUpdate) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EventChatUpdate) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventChatUpdate) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Message != nil { + { + size, err := m.Message.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *EventChatUpdateReactions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EventChatUpdateReactions) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventChatUpdateReactions) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Reactions != nil { + { + size, err := m.Reactions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *EventAccount) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -14940,20 +15535,20 @@ func (m *EventBlockMarksInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if len(m.MarksInRange) > 0 { - dAtA84 := make([]byte, len(m.MarksInRange)*10) - var j83 int + dAtA91 := make([]byte, len(m.MarksInRange)*10) + var j90 int for _, num := range m.MarksInRange { for num >= 1<<7 { - dAtA84[j83] = uint8(uint64(num)&0x7f | 0x80) + dAtA91[j90] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j83++ + j90++ } - dAtA84[j83] = uint8(num) - j83++ + dAtA91[j90] = uint8(num) + j90++ } - i -= j83 - copy(dAtA[i:], dAtA84[:j83]) - i = encodeVarintEvents(dAtA, i, uint64(j83)) + i -= j90 + copy(dAtA[i:], dAtA91[:j90]) + i = encodeVarintEvents(dAtA, i, uint64(j90)) i-- dAtA[i] = 0xa } @@ -22423,6 +23018,54 @@ func (m *EventMessageValueOfBlockDataviewIsCollectionSet) Size() (n int) { } return n } +func (m *EventMessageValueOfChatAdd) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ChatAdd != nil { + l = m.ChatAdd.Size() + n += 2 + l + sovEvents(uint64(l)) + } + return n +} +func (m *EventMessageValueOfChatUpdate) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ChatUpdate != nil { + l = m.ChatUpdate.Size() + n += 2 + l + sovEvents(uint64(l)) + } + return n +} +func (m *EventMessageValueOfChatUpdateReactions) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ChatUpdateReactions != nil { + l = m.ChatUpdateReactions.Size() + n += 2 + l + sovEvents(uint64(l)) + } + return n +} +func (m *EventMessageValueOfChatDelete) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ChatDelete != nil { + l = m.ChatDelete.Size() + n += 2 + l + sovEvents(uint64(l)) + } + return n +} func (m *EventMessageValueOfAccountDetails) Size() (n int) { if m == nil { return 0 @@ -22471,6 +23114,83 @@ func (m *EventMessageValueOfAccountLinkChallenge) Size() (n int) { } return n } +func (m *EventChat) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *EventChatAdd) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + l = len(m.OrderId) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + if m.Message != nil { + l = m.Message.Size() + n += 1 + l + sovEvents(uint64(l)) + } + return n +} + +func (m *EventChatDelete) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + return n +} + +func (m *EventChatUpdate) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + if m.Message != nil { + l = m.Message.Size() + n += 1 + l + sovEvents(uint64(l)) + } + return n +} + +func (m *EventChatUpdateReactions) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + if m.Reactions != nil { + l = m.Reactions.Size() + n += 1 + l + sovEvents(uint64(l)) + } + return n +} + func (m *EventAccount) Size() (n int) { if m == nil { return 0 @@ -28319,6 +29039,146 @@ func (m *EventMessage) Unmarshal(dAtA []byte) error { } m.Value = &EventMessageValueOfBlockDataviewIsCollectionSet{v} iNdEx = postIndex + case 128: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChatAdd", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &EventChatAdd{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &EventMessageValueOfChatAdd{v} + iNdEx = postIndex + case 129: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChatUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &EventChatUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &EventMessageValueOfChatUpdate{v} + iNdEx = postIndex + case 130: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChatUpdateReactions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &EventChatUpdateReactions{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &EventMessageValueOfChatUpdateReactions{v} + iNdEx = postIndex + case 131: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChatDelete", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &EventChatDelete{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &EventMessageValueOfChatDelete{v} + iNdEx = postIndex case 201: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field AccountDetails", wireType) @@ -28480,6 +29340,524 @@ func (m *EventMessage) Unmarshal(dAtA []byte) error { } return nil } +func (m *EventChat) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Chat: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Chat: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EventChatAdd) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Add: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Add: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OrderId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OrderId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Message == nil { + m.Message = &model.ChatMessage{} + } + if err := m.Message.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EventChatDelete) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Delete: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Delete: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EventChatUpdate) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Update: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Update: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Message == nil { + m.Message = &model.ChatMessage{} + } + if err := m.Message.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EventChatUpdateReactions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UpdateReactions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdateReactions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reactions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Reactions == nil { + m.Reactions = &model.ChatMessageReactions{} + } + if err := m.Reactions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *EventAccount) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index 0642bc186..019992cf3 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -1592,6 +1592,28 @@ message Rpc { } } + message ChatAdd { + message Request { + string objectId = 1; + } + + message Response { + Error error = 1; + string chatId = 2; + + message Error { + Code code = 1; + string description = 2; + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + // ... + } + } + } + } + message BookmarkFetch { message Request { string contextId = 1; @@ -6429,6 +6451,7 @@ message Rpc { message AccountSelectTrace { message Request { option (no_auth) = true; + string dir = 1; // empty means using OS-provided temp dir } message Response { @@ -7256,6 +7279,198 @@ message Rpc { } } } + + message Chat { + message AddMessage { + message Request { + string chatObjectId = 1; + model.ChatMessage message = 2; + } + + message Response { + Error error = 1; + string messageId = 2; + ResponseEvent event = 3; + + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + // ... + } + } + } + } + message EditMessageContent { + message Request { + string chatObjectId = 1; + string messageId = 2; + model.ChatMessage editedMessage = 3; + } + + message Response { + Error error = 1; + + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + // ... + } + } + } + } + + message ToggleMessageReaction { + message Request { + string chatObjectId = 1; + string messageId = 2; + string emoji = 3; + } + + message Response { + Error error = 1; + + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + // ... + } + } + } + } + + message DeleteMessage { + message Request { + string chatObjectId = 1; + string messageId = 2; + } + + message Response { + Error error = 1; + + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + // ... + } + } + } + } + + message GetMessages { + message Request { + string chatObjectId = 1; + string beforeOrderId = 2; // OrderId of the message before which to get messages + int32 limit = 3; + } + + message Response { + Error error = 1; + repeated model.ChatMessage messages = 2; + + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + // ... + } + } + } + } + + message GetMessagesByIds { + message Request { + string chatObjectId = 1; + repeated string messageIds = 2; + } + + message Response { + Error error = 1; + repeated model.ChatMessage messages = 2; + + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + // ... + } + } + } + } + + message SubscribeLastMessages { + message Request { + string chatObjectId = 1; // Identifier for the chat + int32 limit = 2; // Number of max last messages to return and subscribe + } + + message Response { + Error error = 1; + repeated model.ChatMessage messages = 2; // List of messages + int32 numMessagesBefore = 3; // Number of messages before the returned messages + + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + // ... + } + } + } + } + + message Unsubscribe { + message Request { + string chatObjectId = 1; // Identifier for the chat + } + message Response { + Error error = 1; + + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + // ... + } + } + } + } + } } diff --git a/pb/protos/events.proto b/pb/protos/events.proto index b0f3c6b89..80dc4a0f0 100644 --- a/pb/protos/events.proto +++ b/pb/protos/events.proto @@ -110,6 +110,30 @@ message Event { P2PStatus.Update p2pStatusUpdate = 120; Import.Finish importFinish = 121; + + Chat.Add chatAdd = 128; + Chat.Update chatUpdate = 129; + Chat.UpdateReactions chatUpdateReactions = 130; + Chat.Delete chatDelete = 131; + } + } + + message Chat { + message Add { + string id = 1; + string orderId = 2; + model.ChatMessage message = 3; + } + message Delete { + string id = 1; + } + message Update { + string id = 1; + model.ChatMessage message = 2; + } + message UpdateReactions { + string id = 1; + model.ChatMessage.Reactions reactions = 2; } } @@ -1028,6 +1052,7 @@ message Event { Synced = 3; Failed = 4; IncompatibleVersion = 5; + NetworkNeedsUpdate = 6; } } } @@ -1113,6 +1138,7 @@ message Event { NotConnected = 0; NotPossible = 1; Connected = 2; + Restricted = 3; // only for ios for now, fallback to NotPossible if not implemented on client } } diff --git a/pb/protos/service/service.proto b/pb/protos/service/service.proto index af68b0c67..9055a9287 100644 --- a/pb/protos/service/service.proto +++ b/pb/protos/service/service.proto @@ -73,6 +73,7 @@ service ClientCommands { rpc ObjectCreate (anytype.Rpc.Object.Create.Request) returns (anytype.Rpc.Object.Create.Response); rpc ObjectCreateBookmark (anytype.Rpc.Object.CreateBookmark.Request) returns (anytype.Rpc.Object.CreateBookmark.Response); rpc ObjectCreateFromUrl (anytype.Rpc.Object.CreateFromUrl.Request) returns (anytype.Rpc.Object.CreateFromUrl.Response); + rpc ObjectChatAdd (anytype.Rpc.Object.ChatAdd.Request) returns (anytype.Rpc.Object.ChatAdd.Response); // ObjectCreateSet just creates the new set, without adding the link to it from some other page rpc ObjectCreateSet (anytype.Rpc.Object.CreateSet.Request) returns (anytype.Rpc.Object.CreateSet.Response); @@ -358,4 +359,14 @@ service ClientCommands { rpc DeviceSetName (anytype.Rpc.Device.SetName.Request) returns (anytype.Rpc.Device.SetName.Response); rpc DeviceList (anytype.Rpc.Device.List.Request) returns (anytype.Rpc.Device.List.Response); rpc DeviceNetworkStateSet (anytype.Rpc.Device.NetworkState.Set.Request) returns (anytype.Rpc.Device.NetworkState.Set.Response); + + // Chats dummy impl + rpc ChatAddMessage (anytype.Rpc.Chat.AddMessage.Request) returns (anytype.Rpc.Chat.AddMessage.Response); + rpc ChatEditMessageContent (anytype.Rpc.Chat.EditMessageContent.Request) returns (anytype.Rpc.Chat.EditMessageContent.Response); + rpc ChatToggleMessageReaction (anytype.Rpc.Chat.ToggleMessageReaction.Request) returns (anytype.Rpc.Chat.ToggleMessageReaction.Response); + rpc ChatDeleteMessage (anytype.Rpc.Chat.DeleteMessage.Request) returns (anytype.Rpc.Chat.DeleteMessage.Response); + rpc ChatGetMessages (anytype.Rpc.Chat.GetMessages.Request) returns (anytype.Rpc.Chat.GetMessages.Response); + rpc ChatGetMessagesByIds (anytype.Rpc.Chat.GetMessagesByIds.Request) returns (anytype.Rpc.Chat.GetMessagesByIds.Response); + rpc ChatSubscribeLastMessages (anytype.Rpc.Chat.SubscribeLastMessages.Request) returns (anytype.Rpc.Chat.SubscribeLastMessages.Response); + rpc ChatUnsubscribe (anytype.Rpc.Chat.Unsubscribe.Request) returns (anytype.Rpc.Chat.Unsubscribe.Response); } diff --git a/pb/service/service.pb.go b/pb/service/service.pb.go index 0028e30bb..69e398f3c 100644 --- a/pb/service/service.pb.go +++ b/pb/service/service.pb.go @@ -26,317 +26,327 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 4950 bytes of a gzipped FileDescriptorProto + // 5118 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdd, 0x6f, 0x24, 0x49, - 0x52, 0xc0, 0xb7, 0x5f, 0x58, 0xa8, 0xe3, 0x16, 0xa8, 0x85, 0x65, 0x6f, 0xb9, 0x9b, 0xef, 0x6f, - 0x8f, 0xdb, 0xb3, 0x33, 0xfb, 0x71, 0xec, 0x21, 0x21, 0x8f, 0x3d, 0xf6, 0x9a, 0xb3, 0x3d, 0xc6, - 0x6d, 0xcf, 0x48, 0x2b, 0x21, 0x51, 0x53, 0x1d, 0x6e, 0x17, 0xae, 0xae, 0xac, 0xab, 0xca, 0x6e, - 0x4f, 0x1f, 0x02, 0x81, 0x40, 0x20, 0x10, 0x88, 0x13, 0x5f, 0x2f, 0x3c, 0x20, 0xf1, 0xcf, 0xc0, - 0xe3, 0x3d, 0x22, 0x9e, 0xd0, 0xee, 0x3f, 0x72, 0xaa, 0xcc, 0xac, 0xfc, 0x88, 0xca, 0xc8, 0x2a, - 0xef, 0xd3, 0x8c, 0x3a, 0x7e, 0x11, 0x91, 0x59, 0x99, 0x19, 0x19, 0xf9, 0x51, 0xe5, 0xe8, 0x7a, - 0xf9, 0x66, 0xa3, 0xac, 0x18, 0x67, 0xf5, 0x46, 0x0d, 0xd5, 0x32, 0x4b, 0xa1, 0xfd, 0x77, 0x2c, - 0x7e, 0x8e, 0xdf, 0x4d, 0x8a, 0x15, 0x5f, 0x95, 0xf0, 0xd1, 0x87, 0x86, 0x4c, 0xd9, 0x7c, 0x9e, - 0x14, 0xd3, 0x5a, 0x22, 0x1f, 0x7d, 0x60, 0x24, 0xb0, 0x84, 0x82, 0xab, 0xdf, 0x9f, 0xfe, 0xf7, - 0xff, 0x8d, 0xa2, 0xf7, 0xb6, 0xf2, 0x0c, 0x0a, 0xbe, 0xa5, 0x34, 0xe2, 0xaf, 0xa2, 0xef, 0x6e, - 0x96, 0xe5, 0x2e, 0xf0, 0x57, 0x50, 0xd5, 0x19, 0x2b, 0xe2, 0xdb, 0x63, 0xe5, 0x60, 0x7c, 0x5c, - 0xa6, 0xe3, 0xcd, 0xb2, 0x1c, 0x1b, 0xe1, 0xf8, 0x18, 0x7e, 0xb2, 0x80, 0x9a, 0x7f, 0x74, 0x27, - 0x0c, 0xd5, 0x25, 0x2b, 0x6a, 0x88, 0xcf, 0xa2, 0xdf, 0xd8, 0x2c, 0xcb, 0x09, 0xf0, 0x6d, 0x68, - 0x2a, 0x30, 0xe1, 0x09, 0x87, 0xf8, 0x7e, 0x47, 0xd5, 0x05, 0xb4, 0x8f, 0x07, 0xfd, 0xa0, 0xf2, - 0x73, 0x12, 0x7d, 0xa7, 0xf1, 0x73, 0xbe, 0xe0, 0x53, 0x76, 0x59, 0xc4, 0x37, 0xbb, 0x8a, 0x4a, - 0xa4, 0x6d, 0xdf, 0x0a, 0x21, 0xca, 0xea, 0xeb, 0xe8, 0x57, 0x5f, 0x27, 0x79, 0x0e, 0x7c, 0xab, - 0x82, 0xa6, 0xe0, 0xae, 0x8e, 0x14, 0x8d, 0xa5, 0x4c, 0xdb, 0xbd, 0x1d, 0x64, 0x94, 0xe1, 0xaf, - 0xa2, 0xef, 0x4a, 0xc9, 0x31, 0xa4, 0x6c, 0x09, 0x55, 0xec, 0xd5, 0x52, 0x42, 0xe2, 0x91, 0x77, - 0x20, 0x6c, 0x7b, 0x8b, 0x15, 0x4b, 0xa8, 0xb8, 0xdf, 0xb6, 0x12, 0x86, 0x6d, 0x1b, 0x48, 0xd9, - 0xfe, 0xbb, 0x51, 0xf4, 0xfd, 0xcd, 0x34, 0x65, 0x8b, 0x82, 0xef, 0xb3, 0x34, 0xc9, 0xf7, 0xb3, - 0xe2, 0xe2, 0x10, 0x2e, 0xb7, 0xce, 0x1b, 0xbe, 0x98, 0x41, 0xfc, 0xcc, 0x7d, 0xaa, 0x12, 0x1d, - 0x6b, 0x76, 0x6c, 0xc3, 0xda, 0xf7, 0x27, 0x57, 0x53, 0x52, 0x65, 0xf9, 0xa7, 0x51, 0x74, 0x0d, - 0x97, 0x65, 0xc2, 0xf2, 0x25, 0x98, 0xd2, 0x7c, 0xda, 0x63, 0xd8, 0xc5, 0x75, 0x79, 0x3e, 0xbb, - 0xaa, 0x9a, 0x2a, 0x51, 0x1e, 0xbd, 0x6f, 0x77, 0x97, 0x09, 0xd4, 0x62, 0x38, 0x3d, 0xa4, 0x7b, - 0x84, 0x42, 0xb4, 0xe7, 0x47, 0x43, 0x50, 0xe5, 0x2d, 0x8b, 0x62, 0xe5, 0x2d, 0x67, 0xb5, 0x76, - 0xf6, 0xc0, 0x6b, 0xc1, 0x22, 0xb4, 0xaf, 0x87, 0x03, 0x48, 0xe5, 0xea, 0x8f, 0xa3, 0x5f, 0x7b, - 0xcd, 0xaa, 0x8b, 0xba, 0x4c, 0x52, 0x50, 0x43, 0xe1, 0xae, 0xab, 0xdd, 0x4a, 0xf1, 0x68, 0xb8, - 0xd7, 0x87, 0x59, 0x9d, 0xb6, 0x15, 0xbe, 0x2c, 0x01, 0xc7, 0x20, 0xa3, 0xd8, 0x08, 0xa9, 0x4e, - 0x8b, 0x21, 0x65, 0xfb, 0x22, 0x8a, 0x8d, 0xed, 0x37, 0x7f, 0x02, 0x29, 0xdf, 0x9c, 0x4e, 0x71, - 0xab, 0x18, 0x5d, 0x41, 0x8c, 0x37, 0xa7, 0x53, 0xaa, 0x55, 0xfc, 0xa8, 0x72, 0x76, 0x19, 0x7d, - 0x80, 0x9c, 0xed, 0x67, 0xb5, 0x70, 0xb8, 0x1e, 0xb6, 0xa2, 0x30, 0xed, 0x74, 0x3c, 0x14, 0x57, - 0x8e, 0xff, 0x62, 0x14, 0x7d, 0xcf, 0xe3, 0xf9, 0x18, 0xe6, 0x6c, 0x09, 0xf1, 0x93, 0x7e, 0x6b, - 0x92, 0xd4, 0xfe, 0x3f, 0xbe, 0x82, 0x86, 0xa7, 0x9b, 0x4c, 0x20, 0x87, 0x94, 0x93, 0xdd, 0x44, - 0x8a, 0x7b, 0xbb, 0x89, 0xc6, 0xac, 0x11, 0xd6, 0x0a, 0x77, 0x81, 0x6f, 0x2d, 0xaa, 0x0a, 0x0a, - 0x4e, 0xb6, 0xa5, 0x41, 0x7a, 0xdb, 0xd2, 0x41, 0x3d, 0xf5, 0xd9, 0x05, 0xbe, 0x99, 0xe7, 0x64, - 0x7d, 0xa4, 0xb8, 0xb7, 0x3e, 0x1a, 0x53, 0x1e, 0xd2, 0xe8, 0xd7, 0xad, 0x27, 0xc6, 0xf7, 0x8a, - 0x33, 0x16, 0xd3, 0xcf, 0x42, 0xc8, 0xb5, 0x8f, 0xfb, 0xbd, 0x9c, 0xa7, 0x1a, 0x2f, 0xde, 0x96, - 0xac, 0xa2, 0x9b, 0x45, 0x8a, 0x7b, 0xab, 0xa1, 0x31, 0xe5, 0xe1, 0x8f, 0xa2, 0xf7, 0x54, 0x94, - 0x6c, 0xe7, 0xb3, 0x3b, 0xde, 0x10, 0x8a, 0x27, 0xb4, 0xbb, 0x3d, 0x94, 0x09, 0x0e, 0x4a, 0xa6, - 0x82, 0xcf, 0x6d, 0xaf, 0x1e, 0x0a, 0x3d, 0x77, 0xc2, 0x50, 0xc7, 0xf6, 0x36, 0xe4, 0x40, 0xda, - 0x96, 0xc2, 0x1e, 0xdb, 0x1a, 0x52, 0xb6, 0xab, 0xe8, 0xb7, 0xf4, 0x63, 0x69, 0xe6, 0x51, 0x21, - 0x6f, 0x82, 0xf4, 0x1a, 0x51, 0x6f, 0x1b, 0xd2, 0xbe, 0x1e, 0x0f, 0x83, 0x3b, 0xf5, 0x51, 0x23, - 0xd0, 0x5f, 0x1f, 0x34, 0xfe, 0xee, 0x84, 0x21, 0x65, 0xfb, 0xef, 0x47, 0xd1, 0x0f, 0x94, 0xec, - 0x45, 0x91, 0xbc, 0xc9, 0x41, 0x4c, 0x89, 0x87, 0xc0, 0x2f, 0x59, 0x75, 0x31, 0x59, 0x15, 0x29, - 0x31, 0xfd, 0xfb, 0xe1, 0x9e, 0xe9, 0x9f, 0x54, 0xb2, 0x32, 0x3e, 0x55, 0x51, 0xce, 0x4a, 0x9c, - 0xf1, 0xb5, 0x35, 0xe0, 0xac, 0xa4, 0x32, 0x3e, 0x17, 0xe9, 0x58, 0x3d, 0x68, 0xc2, 0xa6, 0xdf, - 0xea, 0x81, 0x1d, 0x27, 0x6f, 0x85, 0x10, 0x13, 0xb6, 0xda, 0x0e, 0xcc, 0x8a, 0xb3, 0x6c, 0x76, - 0x5a, 0x4e, 0x9b, 0x6e, 0xfc, 0xd0, 0xdf, 0x43, 0x2d, 0x84, 0x08, 0x5b, 0x04, 0xaa, 0xbc, 0xfd, - 0xa3, 0x49, 0x8c, 0xd4, 0x50, 0xda, 0xa9, 0xd8, 0x7c, 0x1f, 0x66, 0x49, 0xba, 0x52, 0xe3, 0xff, - 0x93, 0xd0, 0xc0, 0xc3, 0xb4, 0x2e, 0xc4, 0xa7, 0x57, 0xd4, 0x52, 0xe5, 0xf9, 0xcf, 0x51, 0x74, - 0xa7, 0xad, 0xfe, 0x79, 0x52, 0xcc, 0x40, 0xb5, 0xa7, 0x2c, 0xfd, 0x66, 0x31, 0x3d, 0x86, 0x9a, - 0x27, 0x15, 0x8f, 0xbf, 0xf0, 0x57, 0x32, 0xa4, 0xa3, 0xcb, 0xf6, 0xa3, 0x6f, 0xa5, 0x6b, 0x5a, - 0x7d, 0xd2, 0x04, 0x36, 0x15, 0x02, 0xdc, 0x56, 0x17, 0x12, 0x1c, 0x00, 0x6e, 0x85, 0x10, 0xd3, - 0xea, 0x42, 0xb0, 0x57, 0x2c, 0x33, 0x0e, 0xbb, 0x50, 0x40, 0xd5, 0x6d, 0x75, 0xa9, 0xea, 0x22, - 0x44, 0xab, 0x13, 0xa8, 0x09, 0x36, 0x8e, 0x37, 0x3d, 0x39, 0xae, 0x05, 0x8c, 0x74, 0xa6, 0xc7, - 0xc7, 0xc3, 0x60, 0xb3, 0xba, 0xb3, 0x7c, 0x1e, 0xc3, 0x92, 0x5d, 0xe0, 0xd5, 0x9d, 0x6d, 0x42, - 0x02, 0xc4, 0xea, 0xce, 0x0b, 0x9a, 0x19, 0xcc, 0xf2, 0xf3, 0x2a, 0x83, 0x4b, 0x34, 0x83, 0xd9, - 0xca, 0x8d, 0x98, 0x98, 0xc1, 0x3c, 0x98, 0xf2, 0x70, 0x18, 0xfd, 0x8a, 0x10, 0xfe, 0x01, 0xcb, - 0x8a, 0xf8, 0xba, 0x47, 0xa9, 0x11, 0x68, 0xab, 0x37, 0x68, 0x00, 0x95, 0xb8, 0xf9, 0x75, 0x2b, - 0x29, 0x52, 0xc8, 0xbd, 0x25, 0x36, 0xe2, 0x60, 0x89, 0x1d, 0xcc, 0xa4, 0x0e, 0x42, 0xd8, 0xc4, - 0xaf, 0xc9, 0x79, 0x52, 0x65, 0xc5, 0x2c, 0xf6, 0xe9, 0x5a, 0x72, 0x22, 0x75, 0xf0, 0x71, 0xa8, - 0x0b, 0x2b, 0xc5, 0xcd, 0xb2, 0xac, 0x9a, 0xb0, 0xe8, 0xeb, 0xc2, 0x2e, 0x12, 0xec, 0xc2, 0x1d, - 0xd4, 0xef, 0x6d, 0x1b, 0xd2, 0x3c, 0x2b, 0x82, 0xde, 0x14, 0x32, 0xc4, 0x9b, 0x41, 0x51, 0xe7, - 0xdd, 0x87, 0x64, 0x09, 0x6d, 0xcd, 0x7c, 0x4f, 0xc6, 0x06, 0x82, 0x9d, 0x17, 0x81, 0x66, 0x9d, - 0x26, 0xc4, 0x07, 0xc9, 0x05, 0x34, 0x0f, 0x18, 0x9a, 0x79, 0x2d, 0xf6, 0xe9, 0x3b, 0x04, 0xb1, - 0x4e, 0xf3, 0x93, 0xca, 0xd5, 0x22, 0xfa, 0x40, 0xc8, 0x8f, 0x92, 0x8a, 0x67, 0x69, 0x56, 0x26, - 0x45, 0x9b, 0xff, 0xfb, 0xc6, 0x75, 0x87, 0xd2, 0x2e, 0xd7, 0x07, 0xd2, 0xca, 0xed, 0xbf, 0x8f, - 0xa2, 0x9b, 0xd8, 0xef, 0x11, 0x54, 0xf3, 0x4c, 0x2c, 0x23, 0x6b, 0x19, 0x84, 0xe3, 0xcf, 0xc3, - 0x46, 0x3b, 0x0a, 0xba, 0x34, 0x3f, 0xbc, 0xba, 0xa2, 0x2a, 0xd8, 0x1f, 0x46, 0x91, 0x5c, 0xae, - 0x88, 0x25, 0xa5, 0x3b, 0x6a, 0xd5, 0x3a, 0xc6, 0x59, 0x4f, 0xde, 0x0c, 0x10, 0x66, 0xaa, 0x90, - 0xbf, 0x8b, 0x95, 0x72, 0xec, 0xd5, 0x10, 0x22, 0x62, 0xaa, 0x40, 0x08, 0x2e, 0xe8, 0xe4, 0x9c, - 0x5d, 0xfa, 0x0b, 0xda, 0x48, 0xc2, 0x05, 0x55, 0x84, 0xd9, 0xbb, 0x52, 0x05, 0xf5, 0xed, 0x5d, - 0xb5, 0xc5, 0x08, 0xed, 0x5d, 0x61, 0x46, 0x19, 0x66, 0xd1, 0x6f, 0xda, 0x86, 0x9f, 0x33, 0x76, - 0x31, 0x4f, 0xaa, 0x8b, 0xf8, 0x11, 0xad, 0xdc, 0x32, 0xda, 0xd1, 0xda, 0x20, 0xd6, 0x84, 0x05, - 0xdb, 0x61, 0x93, 0x68, 0x9c, 0x56, 0x39, 0x0a, 0x0b, 0x8e, 0x0d, 0x85, 0x10, 0x61, 0x81, 0x40, - 0x4d, 0xe4, 0xb6, 0xbd, 0x4d, 0x00, 0xaf, 0x96, 0x1c, 0xf5, 0x09, 0x50, 0xab, 0x25, 0x0f, 0x86, - 0xbb, 0xd0, 0x6e, 0x95, 0x94, 0xe7, 0xfe, 0x2e, 0x24, 0x44, 0xe1, 0x2e, 0xd4, 0x22, 0xb8, 0xbd, - 0x27, 0x90, 0x54, 0xe9, 0xb9, 0xbf, 0xbd, 0xa5, 0x2c, 0xdc, 0xde, 0x9a, 0xc1, 0xed, 0x2d, 0x05, - 0xaf, 0x33, 0x7e, 0x7e, 0x00, 0x3c, 0xf1, 0xb7, 0xb7, 0xcb, 0x84, 0xdb, 0xbb, 0xc3, 0x9a, 0x4c, - 0xc6, 0x76, 0x38, 0x59, 0xbc, 0xa9, 0xd3, 0x2a, 0x7b, 0x03, 0x71, 0xc0, 0x8a, 0x86, 0x88, 0x4c, - 0x86, 0x84, 0x4d, 0x90, 0x56, 0x3e, 0x5b, 0xd9, 0xde, 0xb4, 0x46, 0x41, 0xba, 0xb5, 0x61, 0x11, - 0x44, 0x90, 0xf6, 0x93, 0xb8, 0x7a, 0xbb, 0x15, 0x5b, 0x94, 0x75, 0x4f, 0xf5, 0x10, 0x14, 0xae, - 0x5e, 0x17, 0x56, 0x3e, 0xdf, 0x46, 0xbf, 0x6d, 0x3f, 0xd2, 0xd3, 0xa2, 0xd6, 0x5e, 0xd7, 0xe9, - 0xe7, 0x64, 0x61, 0xc4, 0xb6, 0x54, 0x00, 0x37, 0x69, 0x4a, 0xeb, 0x99, 0x6f, 0x03, 0x4f, 0xb2, - 0xbc, 0x8e, 0xef, 0xf9, 0x6d, 0xb4, 0x72, 0x22, 0x4d, 0xf1, 0x71, 0x78, 0xcc, 0x6e, 0x2f, 0xca, - 0x3c, 0x4b, 0xbb, 0xfb, 0x93, 0x4a, 0x57, 0x8b, 0xc3, 0x63, 0xd6, 0xc6, 0x70, 0x0c, 0x9a, 0x00, - 0x97, 0xff, 0x39, 0x59, 0x95, 0xe0, 0x8f, 0x41, 0x0e, 0x12, 0x8e, 0x41, 0x18, 0xc5, 0xf5, 0x99, - 0x00, 0xdf, 0x4f, 0x56, 0x6c, 0x41, 0xc4, 0x20, 0x2d, 0x0e, 0xd7, 0xc7, 0xc6, 0x4c, 0xa6, 0xa0, - 0x3d, 0xec, 0x15, 0x1c, 0xaa, 0x22, 0xc9, 0x77, 0xf2, 0x64, 0x56, 0xc7, 0xc4, 0xb8, 0x71, 0x29, - 0x22, 0x53, 0xa0, 0x69, 0xcf, 0x63, 0xdc, 0xab, 0x77, 0x92, 0x25, 0xab, 0x32, 0x4e, 0x3f, 0x46, - 0x83, 0xf4, 0x3e, 0x46, 0x07, 0xf5, 0x7a, 0xdb, 0xac, 0xd2, 0xf3, 0x6c, 0x09, 0xd3, 0x80, 0xb7, - 0x16, 0x19, 0xe0, 0xcd, 0x42, 0x3d, 0x8d, 0x36, 0x61, 0x8b, 0x2a, 0x05, 0xb2, 0xd1, 0xa4, 0xb8, - 0xb7, 0xd1, 0x34, 0xa6, 0x3c, 0xfc, 0xf5, 0x28, 0xfa, 0x1d, 0x29, 0xb5, 0x37, 0x0d, 0xb7, 0x93, - 0xfa, 0xfc, 0x0d, 0x4b, 0xaa, 0x69, 0xfc, 0xb1, 0xcf, 0x8e, 0x17, 0xd5, 0xae, 0x9f, 0x5e, 0x45, - 0x05, 0x3f, 0xd6, 0xfd, 0xac, 0xb6, 0x46, 0x9c, 0xf7, 0xb1, 0x3a, 0x48, 0xf8, 0xb1, 0x62, 0x14, - 0x07, 0x10, 0x21, 0x97, 0x0b, 0xf4, 0x7b, 0xa4, 0xbe, 0xbb, 0x4a, 0xbf, 0xdf, 0xcb, 0xe1, 0xf8, - 0xd8, 0x08, 0xdd, 0xde, 0xb2, 0x4e, 0xd9, 0xf0, 0xf7, 0x98, 0xf1, 0x50, 0x9c, 0xf4, 0xac, 0x47, - 0x45, 0xd8, 0x73, 0x67, 0x64, 0x8c, 0x87, 0xe2, 0x84, 0x67, 0x2b, 0xac, 0x85, 0x3c, 0x7b, 0x42, - 0xdb, 0x78, 0x28, 0x8e, 0x33, 0x0a, 0xc5, 0xb4, 0xf3, 0xc2, 0xa3, 0x80, 0x1d, 0x3c, 0x37, 0xac, - 0x0d, 0x62, 0x95, 0xc3, 0xbf, 0x1d, 0x45, 0xdf, 0x37, 0x1e, 0x0f, 0xd8, 0x34, 0x3b, 0x5b, 0x49, - 0xe8, 0x55, 0x92, 0x2f, 0xa0, 0x8e, 0x9f, 0x52, 0xd6, 0xba, 0xac, 0x2e, 0xc1, 0xb3, 0x2b, 0xe9, - 0xe0, 0xb1, 0xb3, 0x59, 0x96, 0xf9, 0xea, 0x04, 0xe6, 0x65, 0x4e, 0x8e, 0x1d, 0x07, 0x09, 0x8f, - 0x1d, 0x8c, 0xe2, 0x4c, 0xf3, 0x84, 0x35, 0x79, 0xac, 0x37, 0xd3, 0x14, 0xa2, 0x70, 0xa6, 0xd9, - 0x22, 0x38, 0x57, 0x3a, 0x61, 0x5b, 0x2c, 0xcf, 0x21, 0xe5, 0xdd, 0x83, 0x47, 0xad, 0x69, 0x88, - 0x70, 0xae, 0x84, 0x48, 0xb3, 0x46, 0x6f, 0xd7, 0x45, 0x49, 0x05, 0xcf, 0x57, 0xfb, 0x59, 0x71, - 0x11, 0xfb, 0xd3, 0x02, 0x03, 0x10, 0x6b, 0x74, 0x2f, 0x88, 0xd7, 0x5f, 0xa7, 0xc5, 0x94, 0xf9, - 0xd7, 0x5f, 0x8d, 0x24, 0xbc, 0xfe, 0x52, 0x04, 0x36, 0x79, 0x0c, 0x94, 0xc9, 0x46, 0x12, 0x36, - 0xa9, 0x08, 0x5f, 0x28, 0x54, 0x3b, 0xb9, 0x64, 0x28, 0x44, 0x7b, 0xb7, 0xf7, 0x7b, 0x39, 0xdc, - 0x43, 0xdb, 0x85, 0xd8, 0x0e, 0xf0, 0xf4, 0xdc, 0xdf, 0x43, 0x1d, 0x24, 0xdc, 0x43, 0x31, 0x8a, - 0xab, 0x74, 0xc2, 0xf4, 0x42, 0xf2, 0x9e, 0xbf, 0x7f, 0x74, 0x16, 0x91, 0xf7, 0x7b, 0x39, 0xbc, - 0x34, 0xda, 0x9b, 0x8b, 0x67, 0xe6, 0xed, 0xe4, 0x52, 0x16, 0x5e, 0x1a, 0x69, 0x06, 0x97, 0x5e, - 0x0a, 0x9a, 0xc7, 0xe9, 0x2f, 0xbd, 0x91, 0x87, 0x4b, 0xef, 0x70, 0xca, 0xc9, 0xbf, 0x8e, 0xa2, - 0xeb, 0xb6, 0x97, 0x43, 0xd6, 0x8c, 0x91, 0x57, 0x49, 0x9e, 0x4d, 0x13, 0x0e, 0x27, 0xec, 0x02, - 0x0a, 0xb4, 0xb7, 0xe2, 0x96, 0x56, 0xf2, 0x63, 0x47, 0x81, 0xd8, 0x5b, 0x19, 0xa4, 0x88, 0xfb, - 0x89, 0xa4, 0x4f, 0x6b, 0xd8, 0x4a, 0x6a, 0x22, 0x92, 0x39, 0x48, 0xb8, 0x9f, 0x60, 0x14, 0xe7, - 0xab, 0x52, 0xfe, 0xe2, 0x6d, 0x09, 0x55, 0x06, 0x45, 0x0a, 0xfe, 0x7c, 0x15, 0x53, 0xe1, 0x7c, - 0xd5, 0x43, 0x77, 0xb6, 0x1e, 0x74, 0x70, 0xea, 0xde, 0x1d, 0xc0, 0x44, 0xe0, 0xee, 0x00, 0x81, - 0xe2, 0x4a, 0x1a, 0xc0, 0xbb, 0x7d, 0xd7, 0xb1, 0x12, 0xdc, 0xbe, 0xa3, 0xe9, 0xce, 0x86, 0x8e, - 0x66, 0x26, 0xcd, 0x30, 0xe9, 0x29, 0xfa, 0xc4, 0x1e, 0x2e, 0x6b, 0x83, 0x58, 0xff, 0x0e, 0xd2, - 0x31, 0xe4, 0x89, 0x98, 0x42, 0x02, 0xdb, 0x34, 0x2d, 0x33, 0x64, 0x07, 0xc9, 0x62, 0x95, 0xc3, - 0xbf, 0x1c, 0x45, 0x1f, 0xf9, 0x3c, 0xbe, 0x2c, 0x85, 0xdf, 0x27, 0xfd, 0xb6, 0x24, 0x49, 0x5c, - 0x8e, 0x08, 0x6b, 0xa8, 0x32, 0xfc, 0x69, 0xf4, 0x61, 0x2b, 0x32, 0x77, 0x27, 0x54, 0x01, 0xdc, - 0x04, 0x4a, 0x97, 0x1f, 0x73, 0xda, 0xfd, 0xc6, 0x60, 0xde, 0xac, 0x4d, 0xdc, 0x72, 0xd5, 0x68, - 0x6d, 0xa2, 0x6d, 0x28, 0x31, 0xb1, 0x36, 0xf1, 0x60, 0x66, 0x57, 0xc3, 0xae, 0xde, 0xeb, 0x8c, - 0x9f, 0x8b, 0xdc, 0x07, 0xed, 0x6a, 0x38, 0x65, 0xd5, 0x10, 0xb1, 0xab, 0x41, 0xc2, 0x38, 0x3b, - 0x68, 0xc1, 0x66, 0x6c, 0xfa, 0xe2, 0xaa, 0x36, 0x64, 0x8f, 0xcc, 0x07, 0xfd, 0x20, 0xee, 0xaf, - 0xad, 0x58, 0x2d, 0x43, 0x1e, 0x85, 0x2c, 0xa0, 0xa5, 0xc8, 0xda, 0x20, 0x56, 0x39, 0xfc, 0xf3, - 0xe8, 0x7b, 0x9d, 0x8a, 0xed, 0x40, 0xc2, 0x17, 0x15, 0x4c, 0xe3, 0x8d, 0x9e, 0x72, 0xb7, 0xa0, - 0x76, 0xfd, 0x64, 0xb8, 0x42, 0x27, 0x5f, 0x6e, 0x39, 0xd9, 0xad, 0x74, 0x19, 0x9e, 0x86, 0x4c, - 0xba, 0x6c, 0x30, 0x5f, 0xa6, 0x75, 0x3a, 0x4b, 0x5e, 0xbb, 0x77, 0x6d, 0x2e, 0x93, 0x2c, 0x17, - 0xc7, 0x28, 0x1f, 0x87, 0x8c, 0x3a, 0x68, 0x70, 0xc9, 0x4b, 0xaa, 0x74, 0x22, 0xb3, 0x18, 0xe3, - 0xd6, 0x52, 0xe9, 0x31, 0x1d, 0x09, 0x3c, 0x2b, 0xa5, 0xf5, 0x81, 0xb4, 0x72, 0xcb, 0xdb, 0xad, - 0xc2, 0xe6, 0x67, 0xbb, 0x93, 0xfb, 0xbc, 0x2a, 0x55, 0x4f, 0x4f, 0x5f, 0x1f, 0x48, 0x2b, 0xaf, - 0x7f, 0x16, 0x7d, 0xd8, 0xf5, 0xaa, 0x26, 0xa2, 0x8d, 0x5e, 0x53, 0x68, 0x2e, 0x7a, 0x32, 0x5c, - 0xc1, 0x2c, 0x2f, 0xbe, 0xcc, 0x6a, 0xce, 0xaa, 0xd5, 0xe4, 0x9c, 0x5d, 0xb6, 0x77, 0x92, 0xdd, - 0xd1, 0xaa, 0x80, 0xb1, 0x45, 0x10, 0xcb, 0x0b, 0x3f, 0xd9, 0x71, 0x65, 0xee, 0x2e, 0xd7, 0x84, - 0x2b, 0x8b, 0xe8, 0x71, 0xe5, 0x92, 0x26, 0x56, 0xb5, 0xb5, 0x32, 0x17, 0xad, 0xef, 0xfb, 0x8b, - 0xda, 0xbd, 0x6c, 0xfd, 0xa0, 0x1f, 0x34, 0x19, 0x8b, 0x12, 0x6f, 0x67, 0x67, 0x67, 0xba, 0x4e, - 0xfe, 0x92, 0xda, 0x08, 0x91, 0xb1, 0x10, 0xa8, 0x49, 0x80, 0x77, 0xb2, 0x1c, 0xc4, 0x99, 0xdc, - 0xcb, 0xb3, 0xb3, 0x9c, 0x25, 0x53, 0x94, 0x00, 0x37, 0xe2, 0xb1, 0x2d, 0x27, 0x12, 0x60, 0x1f, - 0x67, 0xae, 0x34, 0x35, 0xd2, 0x63, 0x48, 0x59, 0x91, 0x66, 0x39, 0xbe, 0xa2, 0x25, 0x34, 0xb5, - 0x90, 0xb8, 0xd2, 0xd4, 0x81, 0xcc, 0xc4, 0xd8, 0x88, 0x9a, 0x61, 0xdf, 0x96, 0xff, 0x6e, 0x57, - 0xd1, 0x12, 0x13, 0x13, 0xa3, 0x07, 0x33, 0xeb, 0xc0, 0x46, 0x78, 0x5a, 0x0a, 0xe3, 0x37, 0xba, - 0x5a, 0x52, 0x42, 0xac, 0x03, 0x5d, 0xc2, 0xac, 0x67, 0x9a, 0xdf, 0xb7, 0xd9, 0x65, 0x21, 0x8c, - 0xde, 0xea, 0xaa, 0xb4, 0x32, 0x62, 0x3d, 0x83, 0x19, 0x65, 0xf8, 0xc7, 0xd1, 0x2f, 0x0b, 0xc3, - 0x15, 0x2b, 0xe3, 0x6b, 0x1e, 0x85, 0xca, 0xba, 0x4d, 0x75, 0x9d, 0x94, 0x9b, 0x4b, 0x81, 0xba, - 0x6f, 0x9c, 0xd6, 0xc9, 0x0c, 0xe2, 0x3b, 0x44, 0x8b, 0x0b, 0x29, 0x71, 0x29, 0xb0, 0x4b, 0xb9, - 0xbd, 0xe2, 0x90, 0x4d, 0x95, 0x75, 0x4f, 0x0d, 0xb5, 0x30, 0xd4, 0x2b, 0x6c, 0xc8, 0x24, 0x33, - 0x87, 0xc9, 0x32, 0x9b, 0xe9, 0x09, 0x47, 0xc6, 0xad, 0x1a, 0x25, 0x33, 0x86, 0x19, 0x5b, 0x10, - 0x91, 0xcc, 0x90, 0xb0, 0xf2, 0xf9, 0x2f, 0xa3, 0xe8, 0x86, 0x61, 0x76, 0xdb, 0x9d, 0xb3, 0xbd, - 0xe2, 0x8c, 0x35, 0xa9, 0xcf, 0x7e, 0x56, 0x5c, 0xd4, 0xf1, 0x67, 0x94, 0x49, 0x3f, 0xaf, 0x8b, - 0xf2, 0xf9, 0x95, 0xf5, 0x4c, 0xd6, 0xda, 0x6e, 0x2b, 0x99, 0xf3, 0x52, 0xa9, 0x81, 0xb2, 0x56, - 0xbd, 0xfb, 0x84, 0x39, 0x22, 0x6b, 0x0d, 0xf1, 0xa6, 0x89, 0xb5, 0xf3, 0x9c, 0x15, 0xb8, 0x89, - 0x8d, 0x85, 0x46, 0x48, 0x34, 0x71, 0x07, 0x32, 0xf1, 0xb8, 0x15, 0xc9, 0x1d, 0x90, 0xcd, 0x3c, - 0x47, 0xf1, 0x58, 0xab, 0x6a, 0x80, 0x88, 0xc7, 0x5e, 0x50, 0xf9, 0x39, 0x8e, 0xbe, 0xd3, 0x3c, - 0xd2, 0xa3, 0x0a, 0x96, 0x19, 0xe0, 0xa3, 0x7d, 0x4b, 0x42, 0x8c, 0x7f, 0x97, 0x30, 0x23, 0xeb, - 0xb4, 0xa8, 0xcb, 0x3c, 0xa9, 0xcf, 0xd5, 0x61, 0xaf, 0x5b, 0xe7, 0x56, 0x88, 0x8f, 0x7b, 0xef, - 0xf6, 0x50, 0x26, 0xa8, 0xb7, 0x32, 0x1d, 0x62, 0xee, 0xf9, 0x55, 0x3b, 0x61, 0xe6, 0x7e, 0x2f, - 0x67, 0x76, 0x9f, 0x77, 0x93, 0x3c, 0x87, 0x6a, 0xd5, 0xca, 0x0e, 0x92, 0x22, 0x3b, 0x83, 0x9a, - 0xa3, 0xdd, 0x67, 0x45, 0x8d, 0x31, 0x46, 0xec, 0x3e, 0x07, 0x70, 0x93, 0xcd, 0x23, 0xcf, 0x7b, - 0xc5, 0x14, 0xde, 0xa2, 0x6c, 0x1e, 0xdb, 0x11, 0x0c, 0x91, 0xcd, 0x53, 0xac, 0xd9, 0x85, 0x7d, - 0x9e, 0xb3, 0xf4, 0x42, 0x4d, 0x01, 0x6e, 0x03, 0x0b, 0x09, 0x9e, 0x03, 0x6e, 0x85, 0x10, 0x33, - 0x09, 0x08, 0xc1, 0x31, 0x94, 0x79, 0x92, 0xe2, 0xfb, 0x1d, 0x52, 0x47, 0xc9, 0x88, 0x49, 0x00, - 0x33, 0xa8, 0xb8, 0xea, 0xde, 0x88, 0xaf, 0xb8, 0xe8, 0xda, 0xc8, 0xad, 0x10, 0x62, 0xa6, 0x41, - 0x21, 0x98, 0x94, 0x79, 0xc6, 0xd1, 0x30, 0x90, 0x1a, 0x42, 0x42, 0x0c, 0x03, 0x97, 0x40, 0x26, - 0x0f, 0xa0, 0x9a, 0x81, 0xd7, 0xa4, 0x90, 0x04, 0x4d, 0xb6, 0x84, 0xb9, 0x06, 0x28, 0xeb, 0xce, - 0xca, 0x15, 0xba, 0x06, 0xa8, 0xaa, 0xc5, 0xca, 0x15, 0x71, 0x0d, 0xd0, 0x01, 0x50, 0x11, 0x8f, - 0x92, 0x9a, 0xfb, 0x8b, 0x28, 0x24, 0xc1, 0x22, 0xb6, 0x84, 0x99, 0xa3, 0x65, 0x11, 0x17, 0x1c, - 0xcd, 0xd1, 0xaa, 0x00, 0xd6, 0x69, 0xf0, 0x75, 0x52, 0x6e, 0x22, 0x89, 0x6c, 0x15, 0xe0, 0x3b, - 0x19, 0xe4, 0xd3, 0x1a, 0x45, 0x12, 0xf5, 0xdc, 0x5b, 0x29, 0x11, 0x49, 0xba, 0x14, 0xea, 0x4a, - 0x6a, 0xaf, 0xda, 0x57, 0x3b, 0xb4, 0x4d, 0x7d, 0x2b, 0x84, 0x98, 0xf8, 0xd4, 0x16, 0x7a, 0x2b, - 0xa9, 0xaa, 0xac, 0x99, 0xfc, 0xef, 0xf9, 0x0b, 0xd4, 0xca, 0x89, 0xf8, 0xe4, 0xe3, 0xd0, 0xf0, - 0x6a, 0x03, 0xb7, 0xaf, 0x60, 0x38, 0x74, 0xdf, 0x0e, 0x32, 0x26, 0xe3, 0x14, 0x12, 0xeb, 0x38, - 0xd3, 0xf7, 0x34, 0x3d, 0xa7, 0x99, 0xf7, 0xfa, 0x30, 0xeb, 0x9a, 0xbe, 0x76, 0x71, 0xc0, 0x96, - 0x70, 0xc2, 0x5e, 0xbc, 0xcd, 0x6a, 0x9e, 0x15, 0x33, 0x35, 0x73, 0x3f, 0x23, 0x2c, 0xf9, 0x60, - 0xe2, 0x9a, 0x7e, 0xaf, 0x92, 0x49, 0x20, 0x50, 0x59, 0x0e, 0xe1, 0xd2, 0x9b, 0x40, 0x60, 0x8b, - 0x9a, 0x23, 0x12, 0x88, 0x10, 0x6f, 0xf6, 0x51, 0xb4, 0x73, 0xf5, 0x2e, 0xe3, 0x09, 0x6b, 0x73, - 0x39, 0xca, 0x1a, 0x06, 0x89, 0xa5, 0x6c, 0x50, 0xc1, 0xac, 0x2f, 0xb5, 0x7f, 0x33, 0xc4, 0x1e, - 0x10, 0x76, 0xba, 0xc3, 0xec, 0xe1, 0x00, 0xd2, 0xe3, 0xca, 0x9c, 0xc9, 0x53, 0xae, 0xba, 0x47, - 0xf2, 0x0f, 0x07, 0x90, 0xd6, 0x9e, 0x8c, 0x5d, 0xad, 0xe7, 0x49, 0x7a, 0x31, 0xab, 0xd8, 0xa2, - 0x98, 0x6e, 0xb1, 0x9c, 0x55, 0x68, 0x4f, 0xc6, 0x29, 0x35, 0x42, 0x89, 0x3d, 0x99, 0x1e, 0x15, - 0x93, 0xc1, 0xd9, 0xa5, 0xd8, 0xcc, 0xb3, 0x19, 0x5e, 0x51, 0x3b, 0x86, 0x04, 0x40, 0x64, 0x70, - 0x5e, 0xd0, 0xd3, 0x89, 0xe4, 0x8a, 0x9b, 0x67, 0x69, 0x92, 0x4b, 0x7f, 0x1b, 0xb4, 0x19, 0x07, - 0xec, 0xed, 0x44, 0x1e, 0x05, 0x4f, 0x3d, 0x4f, 0x16, 0x55, 0xb1, 0x57, 0x70, 0x46, 0xd6, 0xb3, - 0x05, 0x7a, 0xeb, 0x69, 0x81, 0x28, 0xac, 0x9e, 0xc0, 0xdb, 0xa6, 0x34, 0xcd, 0x3f, 0xbe, 0xb0, - 0xda, 0xfc, 0x3e, 0x56, 0xf2, 0x50, 0x58, 0x45, 0x1c, 0xaa, 0x8c, 0x72, 0x22, 0x3b, 0x4c, 0x40, - 0xdb, 0xed, 0x26, 0x0f, 0xfa, 0x41, 0xbf, 0x9f, 0x09, 0x5f, 0xe5, 0x10, 0xf2, 0x23, 0x80, 0x21, - 0x7e, 0x5a, 0xd0, 0x6c, 0xb7, 0x38, 0xf5, 0x39, 0x87, 0xf4, 0xa2, 0x73, 0xc5, 0xc8, 0x2d, 0xa8, - 0x44, 0x88, 0xed, 0x16, 0x02, 0xf5, 0x37, 0xd1, 0x5e, 0xca, 0x8a, 0x50, 0x13, 0x35, 0xf2, 0x21, - 0x4d, 0xa4, 0x38, 0xb3, 0xf8, 0xd5, 0x52, 0xd5, 0x33, 0x65, 0x33, 0xad, 0x11, 0x16, 0x6c, 0x88, - 0x58, 0xfc, 0x92, 0xb0, 0xc9, 0xc9, 0xb1, 0xcf, 0x83, 0xee, 0x9d, 0xe2, 0x8e, 0x95, 0x03, 0xfa, - 0x4e, 0x31, 0xc5, 0xd2, 0x95, 0x94, 0x7d, 0xa4, 0xc7, 0x8a, 0xdb, 0x4f, 0x1e, 0x0f, 0x83, 0xcd, - 0x92, 0xc7, 0xf1, 0xb9, 0x95, 0x43, 0x52, 0x49, 0xaf, 0xeb, 0x01, 0x43, 0x06, 0x23, 0x96, 0x3c, - 0x01, 0x1c, 0x85, 0x30, 0xc7, 0xf3, 0x16, 0x2b, 0x38, 0x14, 0xdc, 0x17, 0xc2, 0x5c, 0x63, 0x0a, - 0x0c, 0x85, 0x30, 0x4a, 0x01, 0xf5, 0x5b, 0xb1, 0x1f, 0x04, 0xfc, 0x30, 0x99, 0x7b, 0x33, 0x36, - 0xb9, 0xd7, 0x23, 0xe5, 0xa1, 0x7e, 0x8b, 0x38, 0xeb, 0x90, 0xcf, 0xf6, 0x72, 0x92, 0x54, 0x33, - 0xbd, 0xbb, 0x31, 0x8d, 0x9f, 0xd0, 0x76, 0x5c, 0x92, 0x38, 0xe4, 0x0b, 0x6b, 0xa0, 0xb0, 0xb3, - 0x37, 0x4f, 0x66, 0xba, 0xa6, 0x9e, 0x1a, 0x08, 0x79, 0xa7, 0xaa, 0x0f, 0xfa, 0x41, 0xe4, 0xe7, - 0x55, 0x36, 0x05, 0x16, 0xf0, 0x23, 0xe4, 0x43, 0xfc, 0x60, 0x10, 0x65, 0x6f, 0x4d, 0xbd, 0xe5, - 0x8a, 0x6e, 0xb3, 0x98, 0xaa, 0x75, 0xec, 0x98, 0x78, 0x3c, 0x88, 0x0b, 0x65, 0x6f, 0x04, 0x8f, - 0xc6, 0x68, 0xbb, 0x41, 0x1b, 0x1a, 0xa3, 0x7a, 0xff, 0x75, 0xc8, 0x18, 0xf5, 0xc1, 0xca, 0xe7, - 0x4f, 0xd5, 0x18, 0xdd, 0x4e, 0x78, 0xd2, 0xe4, 0xed, 0xaf, 0x32, 0xb8, 0x54, 0x0b, 0x61, 0x4f, - 0x7d, 0x5b, 0x6a, 0x2c, 0x5e, 0x26, 0x43, 0xab, 0xe2, 0x8d, 0xc1, 0x7c, 0xc0, 0xb7, 0x5a, 0x21, - 0xf4, 0xfa, 0x46, 0x4b, 0x85, 0x8d, 0xc1, 0x7c, 0xc0, 0xb7, 0x7a, 0x4b, 0xb5, 0xd7, 0x37, 0x7a, - 0x55, 0x75, 0x63, 0x30, 0xaf, 0x7c, 0xff, 0x55, 0x3b, 0x70, 0x6d, 0xe7, 0x4d, 0x1e, 0x96, 0xf2, - 0x6c, 0x09, 0xbe, 0x74, 0xd2, 0xb5, 0xa7, 0xd1, 0x50, 0x3a, 0x49, 0xab, 0x58, 0x9f, 0x36, 0xf1, - 0x95, 0xe2, 0x88, 0xd5, 0x99, 0x38, 0xa4, 0x7f, 0x36, 0xc0, 0x68, 0x0b, 0x87, 0x16, 0x4d, 0x21, - 0x25, 0x73, 0xdc, 0xe8, 0xa0, 0xe6, 0x46, 0xf1, 0xe3, 0x80, 0xbd, 0xee, 0xc5, 0xe2, 0xf5, 0x81, - 0xb4, 0x39, 0xf8, 0x73, 0x18, 0xfb, 0xc4, 0x31, 0xd4, 0xaa, 0xde, 0x43, 0xc7, 0x27, 0xc3, 0x15, - 0x94, 0xfb, 0xbf, 0x69, 0xd7, 0x15, 0xd8, 0xbf, 0x1a, 0x04, 0x4f, 0x87, 0x58, 0x44, 0x03, 0xe1, - 0xd9, 0x95, 0x74, 0x54, 0x41, 0xfe, 0x63, 0x14, 0xdd, 0xf2, 0x16, 0xc4, 0x3d, 0x7b, 0xfe, 0xdd, - 0x21, 0xb6, 0xfd, 0x67, 0xd0, 0x5f, 0x7c, 0x1b, 0x55, 0x55, 0xba, 0x7f, 0x68, 0x97, 0xf7, 0xad, - 0x86, 0x78, 0xeb, 0xe3, 0x65, 0x35, 0x85, 0x4a, 0x8d, 0xd8, 0x50, 0xa7, 0x33, 0x30, 0x1e, 0xb7, - 0x9f, 0x5e, 0x51, 0xcb, 0xfa, 0x0c, 0x8f, 0x03, 0xab, 0x37, 0xee, 0xac, 0xf2, 0x84, 0x2c, 0x5b, - 0x34, 0x2e, 0xd0, 0x67, 0x57, 0x55, 0xa3, 0x46, 0xb2, 0x05, 0x8b, 0xb7, 0xfa, 0x9f, 0x0d, 0x34, - 0xec, 0xbc, 0xe7, 0xff, 0xc9, 0xd5, 0x94, 0x54, 0x59, 0xfe, 0x6b, 0x14, 0xdd, 0x75, 0x58, 0x73, - 0xda, 0x81, 0xf6, 0x64, 0x7e, 0x14, 0xb0, 0x4f, 0x29, 0xe9, 0xc2, 0xfd, 0xde, 0xb7, 0x53, 0x36, - 0xdf, 0xac, 0x71, 0x54, 0x76, 0xb2, 0x9c, 0x43, 0xd5, 0xfd, 0x66, 0x8d, 0x6b, 0x57, 0x52, 0x63, - 0xfa, 0x9b, 0x35, 0x01, 0xdc, 0xfa, 0x66, 0x8d, 0xc7, 0xb3, 0xf7, 0x9b, 0x35, 0x5e, 0x6b, 0xc1, - 0x6f, 0xd6, 0x84, 0x35, 0xa8, 0xc9, 0xa7, 0x2d, 0x82, 0xdc, 0x55, 0x1f, 0x64, 0xd1, 0xdd, 0x64, - 0x7f, 0x7a, 0x15, 0x15, 0x62, 0xfa, 0x95, 0x9c, 0xb8, 0x85, 0x37, 0xe0, 0x99, 0x3a, 0x37, 0xf1, - 0x36, 0x06, 0xf3, 0xca, 0xf7, 0x4f, 0xd4, 0xda, 0x4b, 0x4f, 0x36, 0xac, 0x12, 0xdf, 0x2b, 0x5a, - 0x0b, 0x4d, 0x1e, 0x8d, 0x05, 0xbb, 0xe5, 0x1f, 0x0f, 0x83, 0x89, 0xea, 0x36, 0x84, 0x6a, 0xf4, - 0x71, 0x9f, 0x21, 0xd4, 0xe4, 0x1b, 0x83, 0x79, 0x62, 0x92, 0x93, 0xbe, 0x65, 0x6b, 0x0f, 0x30, - 0xe6, 0xb6, 0xf5, 0x93, 0xe1, 0x0a, 0xca, 0xfd, 0x52, 0x25, 0xb5, 0xb6, 0x7b, 0xd1, 0xce, 0xeb, - 0x7d, 0xa6, 0x26, 0x4e, 0x33, 0x8f, 0x87, 0xe2, 0xa1, 0xf4, 0xc6, 0x9e, 0xe0, 0xfb, 0xd2, 0x1b, - 0xef, 0x24, 0xff, 0xc9, 0xd5, 0x94, 0x54, 0x59, 0xfe, 0x79, 0x14, 0x5d, 0x27, 0xcb, 0xa2, 0xfa, - 0xc1, 0x67, 0x43, 0x2d, 0xa3, 0xfe, 0xf0, 0xf9, 0x95, 0xf5, 0x54, 0xa1, 0xfe, 0x6d, 0x14, 0xdd, - 0x08, 0x14, 0x4a, 0x76, 0x90, 0x2b, 0x58, 0x77, 0x3b, 0xca, 0x0f, 0xaf, 0xae, 0x48, 0x4d, 0xf7, - 0x36, 0x3e, 0xe9, 0x7e, 0xcc, 0x25, 0x60, 0x7b, 0x42, 0x7f, 0xcc, 0xa5, 0x5f, 0x0b, 0x6f, 0x41, - 0x35, 0x49, 0x89, 0x5a, 0x19, 0xf9, 0xb6, 0xa0, 0x44, 0xce, 0x82, 0x56, 0x44, 0xf7, 0x7b, 0x39, - 0x9f, 0x93, 0x17, 0x6f, 0xcb, 0xa4, 0x98, 0xd2, 0x4e, 0xa4, 0xbc, 0xdf, 0x89, 0xe6, 0xf0, 0xd6, - 0x5d, 0x23, 0x3d, 0x66, 0xed, 0x32, 0xef, 0x21, 0xa5, 0xaf, 0x91, 0xe0, 0xd6, 0x5d, 0x07, 0x25, - 0xbc, 0xa9, 0x9c, 0x36, 0xe4, 0x0d, 0xa5, 0xb2, 0x8f, 0x86, 0xa0, 0x68, 0x01, 0xa1, 0xbd, 0xe9, - 0x13, 0x81, 0xc7, 0x21, 0x2b, 0x9d, 0x53, 0x81, 0xf5, 0x81, 0x34, 0xe1, 0x76, 0x02, 0xfc, 0x4b, - 0x48, 0xa6, 0x50, 0x05, 0xdd, 0x6a, 0x6a, 0x90, 0x5b, 0x9b, 0xf6, 0xb9, 0xdd, 0x62, 0xf9, 0x62, - 0x5e, 0xa8, 0xc6, 0x24, 0xdd, 0xda, 0x54, 0xbf, 0x5b, 0x44, 0xe3, 0x4d, 0x4b, 0xe3, 0x56, 0xa4, - 0x97, 0x8f, 0xc2, 0x66, 0x9c, 0xac, 0x72, 0x6d, 0x10, 0x4b, 0xd7, 0x53, 0x75, 0xa3, 0x9e, 0x7a, - 0xa2, 0x9e, 0xb4, 0x3e, 0x90, 0xc6, 0xbb, 0x87, 0x96, 0x5b, 0xdd, 0x9f, 0x36, 0x7a, 0x6c, 0x75, - 0xba, 0xd4, 0x93, 0xe1, 0x0a, 0x78, 0xaf, 0x56, 0xf5, 0xaa, 0x66, 0x5d, 0xb4, 0x93, 0xe5, 0x79, - 0xbc, 0x16, 0xe8, 0x26, 0x2d, 0x14, 0xdc, 0xab, 0xf5, 0xc0, 0x44, 0x4f, 0x6e, 0xf7, 0x36, 0x8b, - 0xb8, 0xcf, 0x8e, 0xa0, 0x06, 0xf5, 0x64, 0x9b, 0x46, 0xfb, 0x6d, 0xd6, 0xa3, 0xd6, 0xb5, 0x1d, - 0x87, 0x1f, 0x5c, 0xa7, 0xc2, 0x1b, 0x83, 0x79, 0x74, 0x19, 0x40, 0x50, 0x62, 0x66, 0xb9, 0x43, - 0x99, 0x70, 0x66, 0x92, 0xbb, 0x3d, 0x14, 0xda, 0xb3, 0x94, 0xc3, 0xe8, 0x75, 0x36, 0x9d, 0x01, - 0xf7, 0x9e, 0x63, 0xd9, 0x40, 0xf0, 0x1c, 0x0b, 0x81, 0xa8, 0xe9, 0xe4, 0xef, 0x7a, 0xb3, 0x76, - 0x6f, 0xea, 0x6b, 0x3a, 0xa5, 0x6c, 0x51, 0xa1, 0xa6, 0xf3, 0xd2, 0x28, 0x1a, 0x68, 0xb7, 0xea, - 0xc5, 0xfd, 0x47, 0x21, 0x33, 0xe8, 0xed, 0xfd, 0xb5, 0x41, 0x2c, 0x9a, 0x51, 0x8c, 0xc3, 0x6c, - 0x9e, 0x71, 0xdf, 0x8c, 0x62, 0xd9, 0x68, 0x90, 0xd0, 0x8c, 0xd2, 0x45, 0xa9, 0xea, 0x35, 0x39, - 0xc2, 0xde, 0x34, 0x5c, 0x3d, 0xc9, 0x0c, 0xab, 0x9e, 0x66, 0x3b, 0xc7, 0xae, 0x85, 0xee, 0x32, - 0xfc, 0x5c, 0x2d, 0x96, 0x3d, 0x7d, 0x5b, 0xbc, 0xd0, 0x89, 0xc1, 0x50, 0xd4, 0xa1, 0x14, 0xf0, - 0x71, 0x42, 0xc3, 0xb5, 0x27, 0xc3, 0x65, 0x09, 0x49, 0x95, 0x14, 0xa9, 0x77, 0x71, 0x2a, 0x0c, - 0x76, 0xc8, 0xd0, 0xe2, 0x94, 0xd4, 0x40, 0x87, 0xfa, 0xee, 0xab, 0x98, 0x9e, 0xa1, 0xa0, 0xdf, - 0x79, 0x74, 0xdf, 0xc4, 0x7c, 0x38, 0x80, 0xc4, 0x87, 0xfa, 0x2d, 0xa0, 0xb7, 0xe5, 0xa5, 0xd3, - 0x8f, 0x03, 0xa6, 0x5c, 0x34, 0xb4, 0x10, 0xa6, 0x55, 0x50, 0xa7, 0xd6, 0x09, 0x2e, 0xf0, 0x1f, - 0xc3, 0xca, 0xd7, 0xa9, 0x4d, 0x7e, 0x2a, 0x90, 0x50, 0xa7, 0xee, 0xa2, 0x28, 0xcf, 0xb4, 0xd7, - 0x41, 0xf7, 0x02, 0xfa, 0xf6, 0xd2, 0xe7, 0x7e, 0x2f, 0x87, 0x46, 0xce, 0x76, 0xb6, 0x74, 0x4e, - 0x31, 0x3c, 0x05, 0xdd, 0xce, 0x96, 0xfe, 0x43, 0x8c, 0xb5, 0x41, 0x2c, 0xbe, 0x30, 0x90, 0x70, - 0x78, 0xdb, 0x9e, 0xe4, 0x7b, 0x8a, 0x2b, 0xe4, 0x9d, 0xa3, 0xfc, 0x07, 0xfd, 0xa0, 0xb9, 0x9e, - 0x7b, 0x54, 0xb1, 0x14, 0xea, 0x5a, 0x7d, 0xe1, 0xce, 0xbd, 0xff, 0xa4, 0x64, 0x63, 0xf4, 0x7d, - 0xbb, 0x3b, 0x61, 0x48, 0xd9, 0xfe, 0x32, 0x7a, 0x77, 0x9f, 0xcd, 0x26, 0x50, 0x4c, 0xe3, 0x1f, - 0xb8, 0x17, 0x62, 0xd9, 0x6c, 0xdc, 0xfc, 0xac, 0xed, 0x5d, 0xa3, 0xc4, 0xe6, 0x4a, 0xdf, 0x36, - 0xbc, 0x59, 0xcc, 0x26, 0x3c, 0xe1, 0xe8, 0x4a, 0x9f, 0xf8, 0x7d, 0xdc, 0x08, 0x88, 0x2b, 0x7d, - 0x0e, 0x80, 0xec, 0x9d, 0x54, 0x00, 0x5e, 0x7b, 0x8d, 0x20, 0x68, 0x4f, 0x01, 0x66, 0xd6, 0xd5, - 0xf6, 0x9a, 0xc4, 0x16, 0x5f, 0xc1, 0x33, 0x3a, 0x42, 0x4a, 0xcc, 0xba, 0x5d, 0xca, 0x74, 0x06, - 0x59, 0x7d, 0xf1, 0x3d, 0x8f, 0xc5, 0x7c, 0x9e, 0x54, 0x2b, 0xd4, 0x19, 0x54, 0x2d, 0x2d, 0x80, - 0xe8, 0x0c, 0x5e, 0xd0, 0xf4, 0xf2, 0xf6, 0x31, 0xa7, 0x17, 0xbb, 0xac, 0x62, 0x0b, 0x9e, 0x15, - 0x80, 0xbf, 0xe9, 0xa0, 0x1f, 0xa8, 0xcd, 0x10, 0xbd, 0x9c, 0x62, 0x4d, 0x56, 0x28, 0x08, 0x79, - 0x3b, 0x50, 0x7c, 0x27, 0xb6, 0xe6, 0xac, 0xc2, 0xa7, 0x83, 0xd2, 0x0a, 0x86, 0x88, 0xac, 0x90, - 0x84, 0x51, 0xdb, 0x1f, 0x65, 0xc5, 0xcc, 0xdb, 0xf6, 0x47, 0xf6, 0x57, 0x16, 0x6f, 0xd0, 0x80, - 0x89, 0xef, 0xf2, 0xa1, 0xc9, 0xef, 0x26, 0xa9, 0x37, 0x33, 0xbd, 0x0f, 0xdd, 0x26, 0x88, 0xf8, - 0xee, 0x27, 0x91, 0xab, 0x97, 0x25, 0x14, 0x30, 0x6d, 0xef, 0xc0, 0xf9, 0x5c, 0x39, 0x44, 0xd0, - 0x15, 0x26, 0x4d, 0x54, 0x15, 0xf2, 0xe3, 0x45, 0x71, 0x54, 0xb1, 0xb3, 0x2c, 0x87, 0x0a, 0x45, - 0x55, 0xa9, 0x6e, 0xc9, 0x89, 0xa8, 0xea, 0xe3, 0xcc, 0x65, 0x0a, 0x21, 0x75, 0x3e, 0x76, 0x7c, - 0x52, 0x25, 0x29, 0xbe, 0x4c, 0x21, 0x6d, 0x74, 0x31, 0x62, 0x27, 0x2d, 0x80, 0x9b, 0x9e, 0x7e, - 0x00, 0xbc, 0xca, 0xd2, 0x7a, 0x02, 0xfc, 0x28, 0xa9, 0x92, 0x39, 0x70, 0xa8, 0x70, 0x4f, 0x57, - 0xc8, 0xd8, 0x61, 0x88, 0x9e, 0x4e, 0xb1, 0xca, 0xe1, 0xef, 0x47, 0xef, 0x37, 0x81, 0x1e, 0x0a, - 0xf5, 0x5d, 0xfe, 0x17, 0xe2, 0x0f, 0x7a, 0xc4, 0x1f, 0x68, 0x1b, 0x13, 0x5e, 0x41, 0x32, 0x6f, - 0x6d, 0xbf, 0xa7, 0x7f, 0x17, 0xe0, 0x93, 0x51, 0xd3, 0x20, 0x87, 0x8c, 0x67, 0x67, 0xcd, 0xba, - 0x4a, 0x9d, 0x62, 0xa1, 0x06, 0xb1, 0xc5, 0xe3, 0xc0, 0x67, 0x0a, 0x7c, 0x9c, 0x09, 0x34, 0xb6, - 0xf4, 0x18, 0xca, 0x1c, 0x07, 0x1a, 0x47, 0x5b, 0x00, 0x44, 0xa0, 0xf1, 0x82, 0xa6, 0x77, 0xd9, - 0xe2, 0x13, 0x08, 0x57, 0xe6, 0x04, 0x86, 0x55, 0xe6, 0xc4, 0x79, 0x47, 0x20, 0x8f, 0xde, 0x3f, - 0x80, 0xf9, 0x1b, 0xa8, 0xea, 0xf3, 0xac, 0xdc, 0x6d, 0x66, 0xd8, 0x84, 0x2f, 0xf0, 0x5b, 0x74, - 0x86, 0x18, 0x6b, 0x84, 0x48, 0x43, 0x08, 0xd4, 0x84, 0x32, 0x03, 0xec, 0xd5, 0x87, 0xc9, 0x1c, - 0xc4, 0x47, 0x17, 0xe2, 0x35, 0xca, 0x88, 0x05, 0x11, 0xa1, 0x8c, 0x84, 0xad, 0xd7, 0x8d, 0x0c, - 0x73, 0x0c, 0xb3, 0xa6, 0x87, 0x55, 0x47, 0xc9, 0x6a, 0x0e, 0x05, 0x57, 0x26, 0xd1, 0x26, 0xac, - 0x65, 0xd2, 0xcf, 0x13, 0x9b, 0xb0, 0x43, 0xf4, 0xac, 0xa4, 0xdb, 0x79, 0xf0, 0x47, 0xac, 0xe2, - 0xf2, 0xaf, 0x6e, 0x9c, 0x56, 0x39, 0x4a, 0xba, 0xdd, 0x87, 0xea, 0x90, 0x44, 0xd2, 0x1d, 0xd6, - 0xb0, 0x3e, 0x57, 0xed, 0x94, 0xe1, 0x15, 0x54, 0xba, 0x9f, 0xbc, 0x98, 0x27, 0x59, 0xae, 0x7a, - 0xc3, 0x17, 0x01, 0xdb, 0x84, 0x0e, 0xf1, 0xb9, 0xea, 0xa1, 0xba, 0xd6, 0x07, 0xbe, 0xc3, 0x25, - 0x44, 0x7b, 0xc2, 0x3d, 0xf6, 0x89, 0x3d, 0xe1, 0x7e, 0x2d, 0xb3, 0x54, 0x33, 0xac, 0xe0, 0x56, - 0x82, 0xd8, 0x62, 0x53, 0xbc, 0x41, 0x64, 0xd9, 0x44, 0x20, 0xb1, 0x54, 0x0b, 0x2a, 0x98, 0xb9, - 0xcd, 0x60, 0x3b, 0x59, 0x91, 0xe4, 0xd9, 0x4f, 0xf1, 0xdd, 0x67, 0xcb, 0x4e, 0x4b, 0x10, 0x73, - 0x9b, 0x9f, 0xf4, 0xb9, 0xda, 0x05, 0x7e, 0x92, 0x35, 0xa1, 0xff, 0x41, 0xe0, 0xb9, 0x09, 0xa2, - 0xdf, 0x95, 0x45, 0x2a, 0x57, 0x3f, 0x1b, 0x45, 0xd7, 0xf1, 0x63, 0xdd, 0x2c, 0xcb, 0x49, 0x93, - 0x92, 0x1c, 0x43, 0x0a, 0x59, 0xc9, 0xe3, 0x4f, 0xc3, 0xcf, 0x0a, 0xe1, 0xc4, 0xc9, 0xfa, 0x00, - 0x35, 0xeb, 0xbc, 0xb6, 0x89, 0x25, 0x13, 0xf9, 0xe7, 0xa8, 0x4e, 0x6b, 0xa8, 0xd4, 0x4c, 0xb9, - 0x0b, 0x1c, 0x8d, 0x4e, 0x8b, 0x1b, 0x5b, 0x60, 0x53, 0x51, 0x62, 0x74, 0x86, 0x35, 0xcc, 0xee, - 0x8e, 0xc5, 0x1d, 0x43, 0xcd, 0xf2, 0x25, 0x88, 0xeb, 0x6f, 0x8f, 0x49, 0x63, 0x16, 0x45, 0xec, - 0xee, 0xd0, 0xb4, 0x49, 0x37, 0xba, 0x6e, 0x37, 0x8b, 0xd5, 0x1e, 0x3e, 0x23, 0xf7, 0x58, 0x12, - 0x18, 0x91, 0x6e, 0x04, 0x70, 0x6b, 0xf7, 0xb3, 0x62, 0xc9, 0x34, 0x4d, 0x6a, 0x7e, 0x94, 0xac, - 0x72, 0x96, 0x4c, 0xc5, 0xbc, 0x8e, 0x77, 0x3f, 0x5b, 0x66, 0x6c, 0x43, 0xd4, 0xee, 0x27, 0x05, - 0x9b, 0x95, 0x9d, 0xfa, 0x2b, 0x5b, 0xea, 0x6a, 0xe1, 0x6d, 0x94, 0x23, 0x89, 0xf2, 0xe2, 0x6b, - 0x85, 0x77, 0xc2, 0x90, 0x79, 0x25, 0x4a, 0x8a, 0x44, 0x1a, 0x72, 0xc3, 0xa7, 0xe3, 0x24, 0x20, - 0x37, 0x03, 0x84, 0xf9, 0x4c, 0x82, 0xfc, 0xbd, 0xfd, 0x43, 0x11, 0x5c, 0x7d, 0xb8, 0xf7, 0xb1, - 0x4f, 0xd7, 0x86, 0xc6, 0xf6, 0xb7, 0xcf, 0xd6, 0x07, 0xd2, 0xd2, 0xeb, 0xf3, 0x9b, 0xff, 0xf3, - 0xf5, 0xb5, 0xd1, 0xcf, 0xbf, 0xbe, 0x36, 0xfa, 0xff, 0xaf, 0xaf, 0x8d, 0x7e, 0xf6, 0xcd, 0xb5, - 0x77, 0x7e, 0xfe, 0xcd, 0xb5, 0x77, 0xfe, 0xf7, 0x9b, 0x6b, 0xef, 0x7c, 0xf5, 0xae, 0xfa, 0x73, - 0x6d, 0x6f, 0x7e, 0x49, 0xfc, 0xd1, 0xb5, 0x67, 0xbf, 0x08, 0x00, 0x00, 0xff, 0xff, 0x95, 0x20, - 0x7a, 0x41, 0xd2, 0x6d, 0x00, 0x00, + 0x52, 0xc0, 0xb7, 0x5f, 0x58, 0xa8, 0xe3, 0x16, 0xe8, 0x85, 0x65, 0x6f, 0xb9, 0x9b, 0xef, 0x19, + 0xcf, 0x8c, 0xed, 0xf6, 0xec, 0xcc, 0x7e, 0x1c, 0x7b, 0x48, 0xc8, 0x63, 0x8f, 0xbd, 0xe6, 0x6c, + 0x8f, 0x71, 0xb7, 0x67, 0xa4, 0x95, 0x90, 0xa8, 0xa9, 0x0e, 0xb7, 0x0b, 0x57, 0x57, 0xd6, 0x55, + 0x65, 0xb7, 0xa7, 0x0f, 0x81, 0x40, 0x20, 0x10, 0x08, 0xc4, 0x89, 0x8f, 0x7b, 0xe1, 0x01, 0x89, + 0xbf, 0x86, 0xc7, 0x7d, 0xe4, 0x11, 0xed, 0xfe, 0x23, 0xa8, 0x32, 0xb3, 0xf2, 0x23, 0x2a, 0x23, + 0xab, 0xbc, 0x4f, 0x33, 0xea, 0xf8, 0x45, 0x44, 0x66, 0x65, 0x64, 0x66, 0xe4, 0x47, 0x95, 0xa3, + 0x9b, 0xc5, 0x9b, 0xad, 0xa2, 0x64, 0x9c, 0x55, 0x5b, 0x15, 0x94, 0xcb, 0x34, 0x81, 0xe6, 0xdf, + 0x91, 0xf8, 0x79, 0xf8, 0x6e, 0x9c, 0xaf, 0xf8, 0xaa, 0x80, 0x8f, 0x3e, 0x34, 0x64, 0xc2, 0xe6, + 0xf3, 0x38, 0x9f, 0x56, 0x12, 0xf9, 0xe8, 0x03, 0x23, 0x81, 0x25, 0xe4, 0x5c, 0xfd, 0xfe, 0xf4, + 0x97, 0xdf, 0x0c, 0xa2, 0xf7, 0x76, 0xb2, 0x14, 0x72, 0xbe, 0xa3, 0x34, 0x86, 0x5f, 0x45, 0xdf, + 0xdf, 0x2e, 0x8a, 0x7d, 0xe0, 0xaf, 0xa0, 0xac, 0x52, 0x96, 0x0f, 0xef, 0x8e, 0x94, 0x83, 0xd1, + 0x69, 0x91, 0x8c, 0xb6, 0x8b, 0x62, 0x64, 0x84, 0xa3, 0x53, 0xf8, 0xd9, 0x02, 0x2a, 0xfe, 0xd1, + 0xbd, 0x30, 0x54, 0x15, 0x2c, 0xaf, 0x60, 0x78, 0x1e, 0xfd, 0xd6, 0x76, 0x51, 0x8c, 0x81, 0xef, + 0x42, 0x5d, 0x81, 0x31, 0x8f, 0x39, 0x0c, 0xd7, 0x5a, 0xaa, 0x2e, 0xa0, 0x7d, 0x3c, 0xec, 0x06, + 0x95, 0x9f, 0x49, 0xf4, 0xbd, 0xda, 0xcf, 0xc5, 0x82, 0x4f, 0xd9, 0x55, 0x3e, 0xbc, 0xdd, 0x56, + 0x54, 0x22, 0x6d, 0xfb, 0x4e, 0x08, 0x51, 0x56, 0x5f, 0x47, 0xbf, 0xfe, 0x3a, 0xce, 0x32, 0xe0, + 0x3b, 0x25, 0xd4, 0x05, 0x77, 0x75, 0xa4, 0x68, 0x24, 0x65, 0xda, 0xee, 0xdd, 0x20, 0xa3, 0x0c, + 0x7f, 0x15, 0x7d, 0x5f, 0x4a, 0x4e, 0x21, 0x61, 0x4b, 0x28, 0x87, 0x5e, 0x2d, 0x25, 0x24, 0x1e, + 0x79, 0x0b, 0xc2, 0xb6, 0x77, 0x58, 0xbe, 0x84, 0x92, 0xfb, 0x6d, 0x2b, 0x61, 0xd8, 0xb6, 0x81, + 0x94, 0xed, 0x7f, 0x18, 0x44, 0x3f, 0xdc, 0x4e, 0x12, 0xb6, 0xc8, 0xf9, 0x21, 0x4b, 0xe2, 0xec, + 0x30, 0xcd, 0x2f, 0x8f, 0xe1, 0x6a, 0xe7, 0xa2, 0xe6, 0xf3, 0x19, 0x0c, 0x9f, 0xb9, 0x4f, 0x55, + 0xa2, 0x23, 0xcd, 0x8e, 0x6c, 0x58, 0xfb, 0xfe, 0xe4, 0x7a, 0x4a, 0xaa, 0x2c, 0xff, 0x32, 0x88, + 0x6e, 0xe0, 0xb2, 0x8c, 0x59, 0xb6, 0x04, 0x53, 0x9a, 0x4f, 0x3b, 0x0c, 0xbb, 0xb8, 0x2e, 0xcf, + 0x67, 0xd7, 0x55, 0x53, 0x25, 0xca, 0xa2, 0xf7, 0xed, 0x70, 0x19, 0x43, 0x25, 0xba, 0xd3, 0x23, + 0x3a, 0x22, 0x14, 0xa2, 0x3d, 0x3f, 0xee, 0x83, 0x2a, 0x6f, 0x69, 0x34, 0x54, 0xde, 0x32, 0x56, + 0x69, 0x67, 0x0f, 0xbd, 0x16, 0x2c, 0x42, 0xfb, 0x7a, 0xd4, 0x83, 0x54, 0xae, 0xfe, 0x34, 0xfa, + 0x8d, 0xd7, 0xac, 0xbc, 0xac, 0x8a, 0x38, 0x01, 0xd5, 0x15, 0xee, 0xbb, 0xda, 0x8d, 0x14, 0xf7, + 0x86, 0x07, 0x5d, 0x98, 0x15, 0xb4, 0x8d, 0xf0, 0x65, 0x01, 0x78, 0x0c, 0x32, 0x8a, 0xb5, 0x90, + 0x0a, 0x5a, 0x0c, 0x29, 0xdb, 0x97, 0xd1, 0xd0, 0xd8, 0x7e, 0xf3, 0x67, 0x90, 0xf0, 0xed, 0xe9, + 0x14, 0xb7, 0x8a, 0xd1, 0x15, 0xc4, 0x68, 0x7b, 0x3a, 0xa5, 0x5a, 0xc5, 0x8f, 0x2a, 0x67, 0x57, + 0xd1, 0x07, 0xc8, 0xd9, 0x61, 0x5a, 0x09, 0x87, 0x9b, 0x61, 0x2b, 0x0a, 0xd3, 0x4e, 0x47, 0x7d, + 0x71, 0xe5, 0xf8, 0xaf, 0x06, 0xd1, 0x0f, 0x3c, 0x9e, 0x4f, 0x61, 0xce, 0x96, 0x30, 0x7c, 0xd2, + 0x6d, 0x4d, 0x92, 0xda, 0xff, 0xc7, 0xd7, 0xd0, 0xf0, 0x84, 0xc9, 0x18, 0x32, 0x48, 0x38, 0x19, + 0x26, 0x52, 0xdc, 0x19, 0x26, 0x1a, 0xb3, 0x7a, 0x58, 0x23, 0xdc, 0x07, 0xbe, 0xb3, 0x28, 0x4b, + 0xc8, 0x39, 0xd9, 0x96, 0x06, 0xe9, 0x6c, 0x4b, 0x07, 0xf5, 0xd4, 0x67, 0x1f, 0xf8, 0x76, 0x96, + 0x91, 0xf5, 0x91, 0xe2, 0xce, 0xfa, 0x68, 0x4c, 0x79, 0x48, 0xa2, 0xdf, 0xb4, 0x9e, 0x18, 0x3f, + 0xc8, 0xcf, 0xd9, 0x90, 0x7e, 0x16, 0x42, 0xae, 0x7d, 0xac, 0x75, 0x72, 0x9e, 0x6a, 0xbc, 0x78, + 0x5b, 0xb0, 0x92, 0x6e, 0x16, 0x29, 0xee, 0xac, 0x86, 0xc6, 0x94, 0x87, 0x3f, 0x89, 0xde, 0x53, + 0xa3, 0x64, 0x33, 0x9f, 0xdd, 0xf3, 0x0e, 0xa1, 0x78, 0x42, 0xbb, 0xdf, 0x41, 0x99, 0xc1, 0x41, + 0xc9, 0xd4, 0xe0, 0x73, 0xd7, 0xab, 0x87, 0x86, 0x9e, 0x7b, 0x61, 0xa8, 0x65, 0x7b, 0x17, 0x32, + 0x20, 0x6d, 0x4b, 0x61, 0x87, 0x6d, 0x0d, 0x29, 0xdb, 0x65, 0xf4, 0x3b, 0xfa, 0xb1, 0xd4, 0xf3, + 0xa8, 0x90, 0xd7, 0x83, 0xf4, 0x3a, 0x51, 0x6f, 0x1b, 0xd2, 0xbe, 0x36, 0xfa, 0xc1, 0xad, 0xfa, + 0xa8, 0x1e, 0xe8, 0xaf, 0x0f, 0xea, 0x7f, 0xf7, 0xc2, 0x90, 0xb2, 0xfd, 0x8f, 0x83, 0xe8, 0x47, + 0x4a, 0xf6, 0x22, 0x8f, 0xdf, 0x64, 0x20, 0xa6, 0xc4, 0x63, 0xe0, 0x57, 0xac, 0xbc, 0x1c, 0xaf, + 0xf2, 0x84, 0x98, 0xfe, 0xfd, 0x70, 0xc7, 0xf4, 0x4f, 0x2a, 0x59, 0x19, 0x9f, 0xaa, 0x28, 0x67, + 0x05, 0xce, 0xf8, 0x9a, 0x1a, 0x70, 0x56, 0x50, 0x19, 0x9f, 0x8b, 0xb4, 0xac, 0x1e, 0xd5, 0xc3, + 0xa6, 0xdf, 0xea, 0x91, 0x3d, 0x4e, 0xde, 0x09, 0x21, 0x66, 0xd8, 0x6a, 0x02, 0x98, 0xe5, 0xe7, + 0xe9, 0xec, 0xac, 0x98, 0xd6, 0x61, 0xfc, 0xc8, 0x1f, 0xa1, 0x16, 0x42, 0x0c, 0x5b, 0x04, 0xaa, + 0xbc, 0xfd, 0xb3, 0x49, 0x8c, 0x54, 0x57, 0xda, 0x2b, 0xd9, 0xfc, 0x10, 0x66, 0x71, 0xb2, 0x52, + 0xfd, 0xff, 0x93, 0x50, 0xc7, 0xc3, 0xb4, 0x2e, 0xc4, 0xa7, 0xd7, 0xd4, 0x52, 0xe5, 0xf9, 0xaf, + 0x41, 0x74, 0xaf, 0xa9, 0xfe, 0x45, 0x9c, 0xcf, 0x40, 0xb5, 0xa7, 0x2c, 0xfd, 0x76, 0x3e, 0x3d, + 0x85, 0x8a, 0xc7, 0x25, 0x1f, 0x7e, 0xe1, 0xaf, 0x64, 0x48, 0x47, 0x97, 0xed, 0x27, 0xdf, 0x49, + 0xd7, 0xb4, 0xfa, 0xb8, 0x1e, 0xd8, 0xd4, 0x10, 0xe0, 0xb6, 0xba, 0x90, 0xe0, 0x01, 0xe0, 0x4e, + 0x08, 0x31, 0xad, 0x2e, 0x04, 0x07, 0xf9, 0x32, 0xe5, 0xb0, 0x0f, 0x39, 0x94, 0xed, 0x56, 0x97, + 0xaa, 0x2e, 0x42, 0xb4, 0x3a, 0x81, 0x9a, 0xc1, 0xc6, 0xf1, 0xa6, 0x27, 0xc7, 0xf5, 0x80, 0x91, + 0xd6, 0xf4, 0xb8, 0xd1, 0x0f, 0x36, 0xab, 0x3b, 0xcb, 0xe7, 0x29, 0x2c, 0xd9, 0x25, 0x5e, 0xdd, + 0xd9, 0x26, 0x24, 0x40, 0xac, 0xee, 0xbc, 0xa0, 0x99, 0xc1, 0x2c, 0x3f, 0xaf, 0x52, 0xb8, 0x42, + 0x33, 0x98, 0xad, 0x5c, 0x8b, 0x89, 0x19, 0xcc, 0x83, 0x29, 0x0f, 0xc7, 0xd1, 0xaf, 0x09, 0xe1, + 0x1f, 0xb1, 0x34, 0x1f, 0xde, 0xf4, 0x28, 0xd5, 0x02, 0x6d, 0xf5, 0x16, 0x0d, 0xa0, 0x12, 0xd7, + 0xbf, 0xee, 0xc4, 0x79, 0x02, 0x99, 0xb7, 0xc4, 0x46, 0x1c, 0x2c, 0xb1, 0x83, 0x99, 0xd4, 0x41, + 0x08, 0xeb, 0xf1, 0x6b, 0x7c, 0x11, 0x97, 0x69, 0x3e, 0x1b, 0xfa, 0x74, 0x2d, 0x39, 0x91, 0x3a, + 0xf8, 0x38, 0x14, 0xc2, 0x4a, 0x71, 0xbb, 0x28, 0xca, 0x7a, 0x58, 0xf4, 0x85, 0xb0, 0x8b, 0x04, + 0x43, 0xb8, 0x85, 0xfa, 0xbd, 0xed, 0x42, 0x92, 0xa5, 0x79, 0xd0, 0x9b, 0x42, 0xfa, 0x78, 0x33, + 0x28, 0x0a, 0xde, 0x43, 0x88, 0x97, 0xd0, 0xd4, 0xcc, 0xf7, 0x64, 0x6c, 0x20, 0x18, 0xbc, 0x08, + 0x34, 0xeb, 0x34, 0x21, 0x3e, 0x8a, 0x2f, 0xa1, 0x7e, 0xc0, 0x50, 0xcf, 0x6b, 0x43, 0x9f, 0xbe, + 0x43, 0x10, 0xeb, 0x34, 0x3f, 0xa9, 0x5c, 0x2d, 0xa2, 0x0f, 0x84, 0xfc, 0x24, 0x2e, 0x79, 0x9a, + 0xa4, 0x45, 0x9c, 0x37, 0xf9, 0xbf, 0xaf, 0x5f, 0xb7, 0x28, 0xed, 0x72, 0xb3, 0x27, 0xad, 0xdc, + 0xfe, 0x72, 0x10, 0xdd, 0xc6, 0x7e, 0x4f, 0xa0, 0x9c, 0xa7, 0x62, 0x19, 0x59, 0xc9, 0x41, 0x78, + 0xf8, 0x79, 0xd8, 0x68, 0x4b, 0x41, 0x97, 0xe6, 0xc7, 0xd7, 0x57, 0x54, 0x05, 0xfb, 0xe3, 0x28, + 0x92, 0xcb, 0x15, 0xb1, 0xa4, 0x74, 0x7b, 0xad, 0x5a, 0xc7, 0x38, 0xeb, 0xc9, 0xdb, 0x01, 0xc2, + 0x4c, 0x15, 0xf2, 0x77, 0xb1, 0x52, 0x1e, 0x7a, 0x35, 0x84, 0x88, 0x98, 0x2a, 0x10, 0x82, 0x0b, + 0x3a, 0xbe, 0x60, 0x57, 0xfe, 0x82, 0xd6, 0x92, 0x70, 0x41, 0x15, 0x61, 0xf6, 0xae, 0x54, 0x41, + 0x7d, 0x7b, 0x57, 0x4d, 0x31, 0x42, 0x7b, 0x57, 0x98, 0x51, 0x86, 0x59, 0xf4, 0xdb, 0xb6, 0xe1, + 0xe7, 0x8c, 0x5d, 0xce, 0xe3, 0xf2, 0x72, 0xf8, 0x98, 0x56, 0x6e, 0x18, 0xed, 0x68, 0xbd, 0x17, + 0x6b, 0x86, 0x05, 0xdb, 0x61, 0x9d, 0x68, 0x9c, 0x95, 0x19, 0x1a, 0x16, 0x1c, 0x1b, 0x0a, 0x21, + 0x86, 0x05, 0x02, 0x35, 0x09, 0xb4, 0xf2, 0x76, 0x11, 0x8b, 0x75, 0xbb, 0xff, 0xa1, 0x48, 0x21, + 0x91, 0x40, 0xb7, 0x20, 0x33, 0x2b, 0xd8, 0x35, 0x19, 0x03, 0x5e, 0x89, 0x39, 0x45, 0x1b, 0x03, + 0xb5, 0x12, 0xf3, 0x60, 0x38, 0x3c, 0xf7, 0xcb, 0xb8, 0xb8, 0xf0, 0x87, 0xa7, 0x10, 0x85, 0xc3, + 0xb3, 0x41, 0x70, 0x2c, 0x8d, 0x21, 0x2e, 0x93, 0x0b, 0x7f, 0x2c, 0x49, 0x59, 0x38, 0x96, 0x34, + 0x83, 0x63, 0x49, 0x0a, 0x5e, 0xa7, 0xfc, 0xe2, 0x08, 0x78, 0xec, 0x8f, 0x25, 0x97, 0x09, 0xc7, + 0x52, 0x8b, 0x35, 0x59, 0x92, 0xed, 0x70, 0xbc, 0x78, 0x53, 0x25, 0x65, 0xfa, 0x06, 0x86, 0x01, + 0x2b, 0x1a, 0x22, 0xb2, 0x24, 0x12, 0x36, 0x13, 0x80, 0xf2, 0xd9, 0xc8, 0x0e, 0xa6, 0x15, 0x9a, + 0x00, 0x1a, 0x1b, 0x16, 0x41, 0x4c, 0x00, 0x7e, 0x12, 0x57, 0x6f, 0xbf, 0x64, 0x8b, 0xa2, 0xea, + 0xa8, 0x1e, 0x82, 0xc2, 0xd5, 0x6b, 0xc3, 0xca, 0xe7, 0xdb, 0xe8, 0x77, 0xed, 0x47, 0x7a, 0x96, + 0x57, 0xda, 0xeb, 0x26, 0xfd, 0x9c, 0x2c, 0x8c, 0xd8, 0xf2, 0x0a, 0xe0, 0x26, 0x05, 0x6a, 0x3c, + 0xf3, 0x5d, 0xe0, 0x71, 0x9a, 0x55, 0xc3, 0x07, 0x7e, 0x1b, 0x8d, 0x9c, 0x48, 0x81, 0x7c, 0x1c, + 0xee, 0xb3, 0xbb, 0x8b, 0x22, 0x4b, 0x93, 0xf6, 0xde, 0xa7, 0xd2, 0xd5, 0xe2, 0x70, 0x9f, 0xb5, + 0x31, 0x3c, 0xbe, 0x8d, 0x81, 0xcb, 0xff, 0x4c, 0x56, 0x05, 0xf8, 0xc7, 0x37, 0x07, 0x09, 0x8f, + 0x6f, 0x18, 0xc5, 0xf5, 0x19, 0x03, 0x3f, 0x8c, 0x57, 0x6c, 0x41, 0x8c, 0x41, 0x5a, 0x1c, 0xae, + 0x8f, 0x8d, 0x99, 0x2c, 0x44, 0x7b, 0x38, 0xc8, 0x39, 0x94, 0x79, 0x9c, 0xed, 0x65, 0xf1, 0xac, + 0x1a, 0x12, 0xfd, 0xc6, 0xa5, 0x88, 0x2c, 0x84, 0xa6, 0x3d, 0x8f, 0xf1, 0xa0, 0xda, 0x8b, 0x97, + 0xac, 0x4c, 0x39, 0xfd, 0x18, 0x0d, 0xd2, 0xf9, 0x18, 0x1d, 0xd4, 0xeb, 0x6d, 0xbb, 0x4c, 0x2e, + 0xd2, 0x25, 0x4c, 0x03, 0xde, 0x1a, 0xa4, 0x87, 0x37, 0x0b, 0xf5, 0x34, 0xda, 0x98, 0x2d, 0xca, + 0x04, 0xc8, 0x46, 0x93, 0xe2, 0xce, 0x46, 0xd3, 0x98, 0xf2, 0xf0, 0xb7, 0x83, 0xe8, 0xf7, 0xa4, + 0xd4, 0xde, 0x90, 0xdc, 0x8d, 0xab, 0x8b, 0x37, 0x2c, 0x2e, 0xa7, 0xc3, 0x8f, 0x7d, 0x76, 0xbc, + 0xa8, 0x76, 0xfd, 0xf4, 0x3a, 0x2a, 0xf8, 0xb1, 0x1e, 0xa6, 0x95, 0xd5, 0xe3, 0xbc, 0x8f, 0xd5, + 0x41, 0xc2, 0x8f, 0x15, 0xa3, 0x78, 0x00, 0x11, 0x72, 0xb9, 0xf8, 0x7f, 0x40, 0xea, 0xbb, 0x3b, + 0x00, 0x6b, 0x9d, 0x1c, 0x1e, 0x1f, 0x6b, 0xa1, 0x1b, 0x2d, 0x9b, 0x94, 0x0d, 0x7f, 0xc4, 0x8c, + 0xfa, 0xe2, 0xa4, 0x67, 0xdd, 0x2b, 0xc2, 0x9e, 0x5b, 0x3d, 0x63, 0xd4, 0x17, 0x27, 0x3c, 0x5b, + 0xc3, 0x5a, 0xc8, 0xb3, 0x67, 0x68, 0x1b, 0xf5, 0xc5, 0x71, 0x46, 0xa1, 0x98, 0x66, 0x5e, 0x78, + 0x1c, 0xb0, 0x83, 0xe7, 0x86, 0xf5, 0x5e, 0xac, 0x72, 0xf8, 0xf7, 0x83, 0xe8, 0x87, 0xc6, 0xe3, + 0x11, 0x9b, 0xa6, 0xe7, 0x2b, 0x09, 0xbd, 0x8a, 0xb3, 0x05, 0x54, 0xc3, 0xa7, 0x94, 0xb5, 0x36, + 0xab, 0x4b, 0xf0, 0xec, 0x5a, 0x3a, 0xb8, 0xef, 0x6c, 0x17, 0x45, 0xb6, 0x9a, 0xc0, 0xbc, 0xc8, + 0xc8, 0xbe, 0xe3, 0x20, 0xe1, 0xbe, 0x83, 0x51, 0x9c, 0x69, 0x4e, 0x58, 0x9d, 0xc7, 0x7a, 0x33, + 0x4d, 0x21, 0x0a, 0x67, 0x9a, 0x0d, 0x82, 0x73, 0xa5, 0x09, 0xdb, 0x61, 0x59, 0x06, 0x09, 0x6f, + 0x1f, 0x6a, 0x6a, 0x4d, 0x43, 0x84, 0x73, 0x25, 0x44, 0x9a, 0xf5, 0x7f, 0xb3, 0xe6, 0x8a, 0x4b, + 0x78, 0xbe, 0x3a, 0x4c, 0xf3, 0xcb, 0xa1, 0x3f, 0x2d, 0x30, 0x00, 0xb1, 0xfe, 0xf7, 0x82, 0x78, + 0x6d, 0x77, 0x96, 0x4f, 0x99, 0x7f, 0x6d, 0x57, 0x4b, 0xc2, 0x6b, 0x3b, 0x45, 0x60, 0x93, 0xa7, + 0x40, 0x99, 0xac, 0x25, 0x61, 0x93, 0x8a, 0xf0, 0x0d, 0x85, 0x6a, 0x97, 0x98, 0x1c, 0x0a, 0xd1, + 0xbe, 0xf0, 0x5a, 0x27, 0x87, 0x23, 0xb4, 0x59, 0xe4, 0xed, 0x01, 0x4f, 0x2e, 0xfc, 0x11, 0xea, + 0x20, 0xe1, 0x08, 0xc5, 0x28, 0xae, 0xd2, 0x84, 0xe9, 0x45, 0xea, 0x03, 0x7f, 0x7c, 0xb4, 0x16, + 0xa8, 0x6b, 0x9d, 0x1c, 0x5e, 0x1a, 0x1d, 0xcc, 0xc5, 0x33, 0xf3, 0x06, 0xb9, 0x94, 0x85, 0x97, + 0x46, 0x9a, 0xc1, 0xa5, 0x97, 0x82, 0xfa, 0x71, 0xfa, 0x4b, 0x6f, 0xe4, 0xe1, 0xd2, 0x3b, 0x9c, + 0x72, 0xf2, 0xef, 0x83, 0xe8, 0xa6, 0xed, 0xe5, 0x98, 0xd5, 0x7d, 0xe4, 0x55, 0x9c, 0xa5, 0xd3, + 0x98, 0xc3, 0x84, 0x5d, 0x42, 0x8e, 0xf6, 0x6d, 0xdc, 0xd2, 0x4a, 0x7e, 0xe4, 0x28, 0x10, 0xfb, + 0x36, 0xbd, 0x14, 0x71, 0x9c, 0x48, 0xfa, 0xac, 0x82, 0x9d, 0xb8, 0x22, 0x46, 0x32, 0x07, 0x09, + 0xc7, 0x09, 0x46, 0x71, 0xbe, 0x2a, 0xe5, 0x2f, 0xde, 0x16, 0x50, 0xa6, 0x90, 0x27, 0xe0, 0xcf, + 0x57, 0x31, 0x15, 0xce, 0x57, 0x3d, 0x74, 0x6b, 0x5b, 0x43, 0x0f, 0x4e, 0xed, 0x7b, 0x09, 0x98, + 0x08, 0xdc, 0x4b, 0x20, 0x50, 0x5c, 0x49, 0x03, 0x78, 0xb7, 0x06, 0x5b, 0x56, 0x82, 0x5b, 0x83, + 0x34, 0xdd, 0xda, 0x2c, 0xd2, 0xcc, 0xb8, 0xee, 0x26, 0x1d, 0x45, 0x1f, 0xdb, 0xdd, 0x65, 0xbd, + 0x17, 0xeb, 0xdf, 0x9d, 0x3a, 0x85, 0x2c, 0x16, 0x53, 0x48, 0x60, 0x0b, 0xa8, 0x61, 0xfa, 0xec, + 0x4e, 0x59, 0xac, 0x72, 0xf8, 0xd7, 0x83, 0xe8, 0x23, 0x9f, 0xc7, 0x97, 0x85, 0xf0, 0xfb, 0xa4, + 0xdb, 0x96, 0x24, 0x89, 0x8b, 0x17, 0x61, 0x0d, 0x55, 0x86, 0x3f, 0x8f, 0x3e, 0x6c, 0x44, 0xe6, + 0x5e, 0x86, 0x2a, 0x80, 0x9b, 0x40, 0xe9, 0xf2, 0x63, 0x4e, 0xbb, 0xdf, 0xea, 0xcd, 0x9b, 0xb5, + 0x89, 0x5b, 0xae, 0x0a, 0xad, 0x4d, 0xb4, 0x0d, 0x25, 0x26, 0xd6, 0x26, 0x1e, 0xcc, 0xec, 0x6a, + 0xd8, 0xd5, 0x7b, 0x9d, 0xf2, 0x0b, 0x91, 0xfb, 0xa0, 0x5d, 0x0d, 0xa7, 0xac, 0x1a, 0x22, 0x76, + 0x35, 0x48, 0x18, 0x67, 0x07, 0x0d, 0x58, 0xf7, 0x4d, 0xdf, 0xb8, 0xaa, 0x0d, 0xd9, 0x3d, 0xf3, + 0x61, 0x37, 0x88, 0xe3, 0xb5, 0x11, 0xab, 0x65, 0xc8, 0xe3, 0x90, 0x05, 0xb4, 0x14, 0x59, 0xef, + 0xc5, 0x2a, 0x87, 0x7f, 0x19, 0xfd, 0xa0, 0x55, 0xb1, 0x3d, 0x88, 0xf9, 0xa2, 0x84, 0xe9, 0x70, + 0xab, 0xa3, 0xdc, 0x0d, 0xa8, 0x5d, 0x3f, 0xe9, 0xaf, 0xd0, 0xca, 0x97, 0x1b, 0x4e, 0x86, 0x95, + 0x2e, 0xc3, 0xd3, 0x90, 0x49, 0x97, 0x0d, 0xe6, 0xcb, 0xb4, 0x4e, 0x6b, 0xc9, 0x6b, 0x47, 0xd7, + 0xf6, 0x32, 0x4e, 0x33, 0x71, 0x44, 0xf3, 0x71, 0xc8, 0xa8, 0x83, 0x06, 0x97, 0xbc, 0xa4, 0x4a, + 0x6b, 0x64, 0x16, 0x7d, 0xdc, 0x5a, 0x2a, 0x6d, 0xd0, 0x23, 0x81, 0x67, 0xa5, 0xb4, 0xd9, 0x93, + 0x56, 0x6e, 0x79, 0xb3, 0x55, 0x58, 0xff, 0x6c, 0x07, 0xb9, 0xcf, 0xab, 0x52, 0xf5, 0x44, 0xfa, + 0x66, 0x4f, 0x5a, 0x79, 0xfd, 0x8b, 0xe8, 0xc3, 0xb6, 0x57, 0x35, 0x11, 0x6d, 0x75, 0x9a, 0x42, + 0x73, 0xd1, 0x93, 0xfe, 0x0a, 0x66, 0x79, 0xf1, 0x65, 0x5a, 0x71, 0x56, 0xae, 0xc6, 0x17, 0xec, + 0xaa, 0xb9, 0xef, 0xec, 0xf6, 0x56, 0x05, 0x8c, 0x2c, 0x82, 0x58, 0x5e, 0xf8, 0xc9, 0x96, 0x2b, + 0x73, 0x2f, 0xba, 0x22, 0x5c, 0x59, 0x44, 0x87, 0x2b, 0x97, 0x34, 0x63, 0x55, 0x53, 0x2b, 0x73, + 0x89, 0x7b, 0xcd, 0x5f, 0xd4, 0xf6, 0x45, 0xee, 0x87, 0xdd, 0xa0, 0xc9, 0x58, 0x94, 0x78, 0x37, + 0x3d, 0x3f, 0xd7, 0x75, 0xf2, 0x97, 0xd4, 0x46, 0x88, 0x8c, 0x85, 0x40, 0x4d, 0x02, 0xbc, 0x97, + 0x66, 0x20, 0xce, 0xfb, 0x5e, 0x9e, 0x9f, 0x67, 0x2c, 0x9e, 0xa2, 0x04, 0xb8, 0x16, 0x8f, 0x6c, + 0x39, 0x91, 0x00, 0xfb, 0x38, 0x73, 0xda, 0x53, 0x4b, 0x4f, 0x21, 0x61, 0x79, 0x92, 0x66, 0xf8, + 0xfa, 0x97, 0xd0, 0xd4, 0x42, 0xe2, 0xb4, 0xa7, 0x05, 0x99, 0x89, 0xb1, 0x16, 0xd5, 0xdd, 0xbe, + 0x29, 0xff, 0xfd, 0xb6, 0xa2, 0x25, 0x26, 0x26, 0x46, 0x0f, 0x66, 0xd6, 0x81, 0xb5, 0xf0, 0xac, + 0x10, 0xc6, 0x6f, 0xb5, 0xb5, 0xa4, 0x84, 0x58, 0x07, 0xba, 0x84, 0x59, 0xcf, 0xd4, 0xbf, 0xef, + 0xb2, 0xab, 0x5c, 0x18, 0xbd, 0xd3, 0x56, 0x69, 0x64, 0xc4, 0x7a, 0x06, 0x33, 0xca, 0xf0, 0x4f, + 0xa3, 0x5f, 0x15, 0x86, 0x4b, 0x56, 0x0c, 0x6f, 0x78, 0x14, 0x4a, 0xeb, 0xa6, 0xd6, 0x4d, 0x52, + 0x6e, 0x2e, 0x1c, 0xea, 0xd8, 0x38, 0xab, 0xe2, 0x19, 0x0c, 0xef, 0x11, 0x2d, 0x2e, 0xa4, 0xc4, + 0x85, 0xc3, 0x36, 0xe5, 0x46, 0xc5, 0x31, 0x9b, 0x2a, 0xeb, 0x9e, 0x1a, 0x6a, 0x61, 0x28, 0x2a, + 0x6c, 0xc8, 0x24, 0x33, 0xc7, 0xf1, 0x32, 0x9d, 0xe9, 0x09, 0x47, 0x8e, 0x5b, 0x15, 0x4a, 0x66, + 0x0c, 0x33, 0xb2, 0x20, 0x22, 0x99, 0x21, 0x61, 0xe5, 0xf3, 0xdf, 0x06, 0xd1, 0x2d, 0xc3, 0xec, + 0x37, 0x3b, 0x67, 0x07, 0xf9, 0x39, 0xab, 0x53, 0x9f, 0xc3, 0x34, 0xbf, 0xac, 0x86, 0x9f, 0x51, + 0x26, 0xfd, 0xbc, 0x2e, 0xca, 0xe7, 0xd7, 0xd6, 0x33, 0x59, 0x6b, 0xb3, 0xad, 0x64, 0xce, 0x62, + 0xa5, 0x06, 0xca, 0x5a, 0xf5, 0xee, 0x13, 0xe6, 0x88, 0xac, 0x35, 0xc4, 0x9b, 0x26, 0xd6, 0xce, + 0x33, 0x96, 0xe3, 0x26, 0x36, 0x16, 0x6a, 0x21, 0xd1, 0xc4, 0x2d, 0xc8, 0x8c, 0xc7, 0x8d, 0x48, + 0xee, 0x80, 0x6c, 0x67, 0x19, 0x1a, 0x8f, 0xb5, 0xaa, 0x06, 0x88, 0xf1, 0xd8, 0x0b, 0x2a, 0x3f, + 0xa7, 0xd1, 0xf7, 0xea, 0x47, 0x7a, 0x52, 0xc2, 0x32, 0x05, 0x7c, 0x6d, 0xc0, 0x92, 0x10, 0xfd, + 0xdf, 0x25, 0x4c, 0xcf, 0x3a, 0xcb, 0xab, 0x22, 0x8b, 0xab, 0x0b, 0x75, 0xd8, 0xeb, 0xd6, 0xb9, + 0x11, 0xe2, 0xe3, 0xde, 0xfb, 0x1d, 0x94, 0x19, 0xd4, 0x1b, 0x99, 0x1e, 0x62, 0x1e, 0xf8, 0x55, + 0x5b, 0xc3, 0xcc, 0x5a, 0x27, 0x67, 0x76, 0x9f, 0xf7, 0xe3, 0x2c, 0x83, 0x72, 0xd5, 0xc8, 0x8e, + 0xe2, 0x3c, 0x3d, 0x87, 0x8a, 0xa3, 0xdd, 0x67, 0x45, 0x8d, 0x30, 0x46, 0xec, 0x3e, 0x07, 0x70, + 0x93, 0xcd, 0x23, 0xcf, 0x07, 0xf9, 0x14, 0xde, 0xa2, 0x6c, 0x1e, 0xdb, 0x11, 0x0c, 0x91, 0xcd, + 0x53, 0xac, 0xd9, 0x85, 0x7d, 0x9e, 0xb1, 0xe4, 0x52, 0x4d, 0x01, 0x6e, 0x03, 0x0b, 0x09, 0x9e, + 0x03, 0xee, 0x84, 0x10, 0x33, 0x09, 0x08, 0xc1, 0x29, 0x14, 0x59, 0x9c, 0xe0, 0xbb, 0x23, 0x52, + 0x47, 0xc9, 0x88, 0x49, 0x00, 0x33, 0xa8, 0xb8, 0xea, 0x4e, 0x8a, 0xaf, 0xb8, 0xe8, 0x4a, 0xca, + 0x9d, 0x10, 0x62, 0xa6, 0x41, 0x21, 0x18, 0x17, 0x59, 0xca, 0x51, 0x37, 0x90, 0x1a, 0x42, 0x42, + 0x74, 0x03, 0x97, 0x40, 0x26, 0x8f, 0xa0, 0x9c, 0x81, 0xd7, 0xa4, 0x90, 0x04, 0x4d, 0x36, 0x84, + 0xb9, 0x62, 0x28, 0xeb, 0xce, 0x8a, 0x15, 0xba, 0x62, 0xa8, 0xaa, 0xc5, 0x8a, 0x15, 0x71, 0xc5, + 0xd0, 0x01, 0x50, 0x11, 0x4f, 0xe2, 0x8a, 0xfb, 0x8b, 0x28, 0x24, 0xc1, 0x22, 0x36, 0x84, 0x99, + 0xa3, 0x65, 0x11, 0x17, 0x1c, 0xcd, 0xd1, 0xaa, 0x00, 0xd6, 0x69, 0xf0, 0x4d, 0x52, 0x6e, 0x46, + 0x12, 0xd9, 0x2a, 0xc0, 0xf7, 0x52, 0xc8, 0xa6, 0x15, 0x1a, 0x49, 0xd4, 0x73, 0x6f, 0xa4, 0xc4, + 0x48, 0xd2, 0xa6, 0x50, 0x28, 0xa9, 0xbd, 0x6a, 0x5f, 0xed, 0xd0, 0x36, 0xf5, 0x9d, 0x10, 0x62, + 0xc6, 0xa7, 0xa6, 0xd0, 0x3b, 0x71, 0x59, 0xa6, 0xf5, 0xe4, 0xff, 0xc0, 0x5f, 0xa0, 0x46, 0x4e, + 0x8c, 0x4f, 0x3e, 0x0e, 0x75, 0xaf, 0x66, 0xe0, 0xf6, 0x15, 0x0c, 0x0f, 0xdd, 0x77, 0x83, 0x8c, + 0xc9, 0x38, 0x85, 0xc4, 0x3a, 0xce, 0xf4, 0x3d, 0x4d, 0xcf, 0x69, 0xe6, 0x83, 0x2e, 0xcc, 0x7a, + 0x05, 0x40, 0xbb, 0x38, 0x62, 0x4b, 0x98, 0xb0, 0x17, 0x6f, 0xd3, 0x8a, 0xa7, 0xf9, 0x4c, 0xcd, + 0xdc, 0xcf, 0x08, 0x4b, 0x3e, 0x98, 0x78, 0x05, 0xa0, 0x53, 0xc9, 0x24, 0x10, 0xa8, 0x2c, 0xc7, + 0x70, 0xe5, 0x4d, 0x20, 0xb0, 0x45, 0xcd, 0x11, 0x09, 0x44, 0x88, 0x37, 0xfb, 0x28, 0xda, 0xb9, + 0x7a, 0x4f, 0x72, 0xc2, 0x9a, 0x5c, 0x8e, 0xb2, 0x86, 0x41, 0x62, 0x29, 0x1b, 0x54, 0x30, 0xeb, + 0x4b, 0xed, 0xdf, 0x74, 0xb1, 0x87, 0x84, 0x9d, 0x76, 0x37, 0x7b, 0xd4, 0x83, 0xf4, 0xb8, 0x32, + 0x67, 0xf2, 0x94, 0xab, 0xf6, 0x91, 0xfc, 0xa3, 0x1e, 0xa4, 0xb5, 0x27, 0x63, 0x57, 0xeb, 0x79, + 0x9c, 0x5c, 0xce, 0x4a, 0xb6, 0xc8, 0xa7, 0x3b, 0x2c, 0x63, 0x25, 0xda, 0x93, 0x71, 0x4a, 0x8d, + 0x50, 0x62, 0x4f, 0xa6, 0x43, 0xc5, 0x64, 0x70, 0x76, 0x29, 0xb6, 0xb3, 0x74, 0x86, 0x57, 0xd4, + 0x8e, 0x21, 0x01, 0x10, 0x19, 0x9c, 0x17, 0xf4, 0x04, 0x91, 0x5c, 0x71, 0xf3, 0x34, 0x89, 0x33, + 0xe9, 0x6f, 0x8b, 0x36, 0xe3, 0x80, 0x9d, 0x41, 0xe4, 0x51, 0xf0, 0xd4, 0x73, 0xb2, 0x28, 0xf3, + 0x83, 0x9c, 0x33, 0xb2, 0x9e, 0x0d, 0xd0, 0x59, 0x4f, 0x0b, 0x44, 0xc3, 0xea, 0x04, 0xde, 0xd6, + 0xa5, 0xa9, 0xff, 0xf1, 0x0d, 0xab, 0xf5, 0xef, 0x23, 0x25, 0x0f, 0x0d, 0xab, 0x88, 0x43, 0x95, + 0x51, 0x4e, 0x64, 0xc0, 0x04, 0xb4, 0xdd, 0x30, 0x79, 0xd8, 0x0d, 0xfa, 0xfd, 0x8c, 0xf9, 0x2a, + 0x83, 0x90, 0x1f, 0x01, 0xf4, 0xf1, 0xd3, 0x80, 0x66, 0xbb, 0xc5, 0xa9, 0xcf, 0x05, 0x24, 0x97, + 0xad, 0x2b, 0x46, 0x6e, 0x41, 0x25, 0x42, 0x6c, 0xb7, 0x10, 0xa8, 0xbf, 0x89, 0x0e, 0x12, 0x96, + 0x87, 0x9a, 0xa8, 0x96, 0xf7, 0x69, 0x22, 0xc5, 0x99, 0xc5, 0xaf, 0x96, 0xaa, 0xc8, 0x94, 0xcd, + 0xb4, 0x4e, 0x58, 0xb0, 0x21, 0x62, 0xf1, 0x4b, 0xc2, 0x26, 0x27, 0xc7, 0x3e, 0x8f, 0xda, 0xf7, + 0x95, 0x5b, 0x56, 0x8e, 0xe8, 0xfb, 0xca, 0x14, 0x4b, 0x57, 0x52, 0xc6, 0x48, 0x87, 0x15, 0x37, + 0x4e, 0x36, 0xfa, 0xc1, 0x66, 0xc9, 0xe3, 0xf8, 0xdc, 0xc9, 0x20, 0x2e, 0xa5, 0xd7, 0xcd, 0x80, + 0x21, 0x83, 0x11, 0x4b, 0x9e, 0x00, 0x8e, 0x86, 0x30, 0xc7, 0xf3, 0x0e, 0xcb, 0x39, 0xe4, 0xdc, + 0x37, 0x84, 0xb9, 0xc6, 0x14, 0x18, 0x1a, 0xc2, 0x28, 0x05, 0x14, 0xb7, 0x62, 0x3f, 0x08, 0xf8, + 0x71, 0x3c, 0xf7, 0x66, 0x6c, 0x72, 0xaf, 0x47, 0xca, 0x43, 0x71, 0x8b, 0x38, 0xeb, 0x90, 0xcf, + 0xf6, 0x32, 0x89, 0xcb, 0x99, 0xde, 0xdd, 0x98, 0x0e, 0x9f, 0xd0, 0x76, 0x5c, 0x92, 0x38, 0xe4, + 0x0b, 0x6b, 0xa0, 0x61, 0xe7, 0x60, 0x1e, 0xcf, 0x74, 0x4d, 0x3d, 0x35, 0x10, 0xf2, 0x56, 0x55, + 0x1f, 0x76, 0x83, 0xc8, 0xcf, 0xab, 0x74, 0x0a, 0x2c, 0xe0, 0x47, 0xc8, 0xfb, 0xf8, 0xc1, 0x20, + 0xca, 0xde, 0xea, 0x7a, 0xcb, 0x15, 0xdd, 0x76, 0x3e, 0x55, 0xeb, 0xd8, 0x11, 0xf1, 0x78, 0x10, + 0x17, 0xca, 0xde, 0x08, 0x1e, 0xf5, 0xd1, 0x66, 0x83, 0x36, 0xd4, 0x47, 0xf5, 0xfe, 0x6b, 0x9f, + 0x3e, 0xea, 0x83, 0x95, 0xcf, 0x9f, 0xab, 0x3e, 0xba, 0x1b, 0xf3, 0xb8, 0xce, 0xdb, 0x5f, 0xa5, + 0x70, 0xa5, 0x16, 0xc2, 0x9e, 0xfa, 0x36, 0xd4, 0x48, 0xbc, 0xa8, 0x86, 0x56, 0xc5, 0x5b, 0xbd, + 0xf9, 0x80, 0x6f, 0xb5, 0x42, 0xe8, 0xf4, 0x8d, 0x96, 0x0a, 0x5b, 0xbd, 0xf9, 0x80, 0x6f, 0xf5, + 0x06, 0x6c, 0xa7, 0x6f, 0xf4, 0x1a, 0xec, 0x56, 0x6f, 0x5e, 0xf9, 0xfe, 0x9b, 0xa6, 0xe3, 0xda, + 0xce, 0xeb, 0x3c, 0x2c, 0xe1, 0xe9, 0x12, 0x7c, 0xe9, 0xa4, 0x6b, 0x4f, 0xa3, 0xa1, 0x74, 0x92, + 0x56, 0xb1, 0x3e, 0x9b, 0xe2, 0x2b, 0xc5, 0x09, 0xab, 0x52, 0x71, 0x48, 0xff, 0xac, 0x87, 0xd1, + 0x06, 0x0e, 0x2d, 0x9a, 0x42, 0x4a, 0xe6, 0xb8, 0xd1, 0x41, 0xcd, 0x8d, 0xe2, 0x8d, 0x80, 0xbd, + 0xf6, 0xc5, 0xe2, 0xcd, 0x9e, 0xb4, 0x39, 0xf8, 0x73, 0x18, 0xfb, 0xc4, 0x31, 0xd4, 0xaa, 0xde, + 0x43, 0xc7, 0x27, 0xfd, 0x15, 0x94, 0xfb, 0xbf, 0x6b, 0xd6, 0x15, 0xd8, 0xbf, 0xea, 0x04, 0x4f, + 0xfb, 0x58, 0x44, 0x1d, 0xe1, 0xd9, 0xb5, 0x74, 0x54, 0x41, 0xfe, 0x73, 0x10, 0xdd, 0xf1, 0x16, + 0xc4, 0x3d, 0x7b, 0xfe, 0xfd, 0x3e, 0xb6, 0xfd, 0x67, 0xd0, 0x5f, 0x7c, 0x17, 0x55, 0x55, 0xba, + 0x7f, 0x6a, 0x96, 0xf7, 0x8d, 0x86, 0x78, 0xeb, 0xe3, 0x65, 0x39, 0x85, 0x52, 0xf5, 0xd8, 0x50, + 0xd0, 0x19, 0x18, 0xf7, 0xdb, 0x4f, 0xaf, 0xa9, 0x65, 0x7d, 0xe2, 0xc7, 0x81, 0xd5, 0xdb, 0x7c, + 0x56, 0x79, 0x42, 0x96, 0x2d, 0x1a, 0x17, 0xe8, 0xb3, 0xeb, 0xaa, 0x51, 0x3d, 0xd9, 0x82, 0xc5, + 0x17, 0x03, 0x9e, 0xf5, 0x34, 0xec, 0x7c, 0x43, 0xe0, 0x93, 0xeb, 0x29, 0xa9, 0xb2, 0xfc, 0xf7, + 0x20, 0xba, 0xef, 0xb0, 0xe6, 0xb4, 0x03, 0xed, 0xc9, 0xfc, 0x24, 0x60, 0x9f, 0x52, 0xd2, 0x85, + 0xfb, 0x83, 0xef, 0xa6, 0x6c, 0xbe, 0x87, 0xe3, 0xa8, 0xec, 0xa5, 0x19, 0x87, 0xb2, 0xfd, 0x3d, + 0x1c, 0xd7, 0xae, 0xa4, 0x46, 0xf4, 0xf7, 0x70, 0x02, 0xb8, 0xf5, 0x3d, 0x1c, 0x8f, 0x67, 0xef, + 0xf7, 0x70, 0xbc, 0xd6, 0x82, 0xdf, 0xc3, 0x09, 0x6b, 0x50, 0x93, 0x4f, 0x53, 0x04, 0xb9, 0xab, + 0xde, 0xcb, 0xa2, 0xbb, 0xc9, 0xfe, 0xf4, 0x3a, 0x2a, 0xc4, 0xf4, 0x2b, 0x39, 0x71, 0x0b, 0xaf, + 0xc7, 0x33, 0x75, 0x6e, 0xe2, 0x6d, 0xf5, 0xe6, 0x95, 0xef, 0x9f, 0xa9, 0xb5, 0x97, 0x9e, 0x6c, + 0x58, 0x29, 0xde, 0xa9, 0x5c, 0x0f, 0x4d, 0x1e, 0xb5, 0x05, 0xbb, 0xe5, 0x37, 0xfa, 0xc1, 0x44, + 0x75, 0x6b, 0x42, 0x35, 0xfa, 0xa8, 0xcb, 0x10, 0x6a, 0xf2, 0xad, 0xde, 0x3c, 0x31, 0xc9, 0x49, + 0xdf, 0xb2, 0xb5, 0x7b, 0x18, 0x73, 0xdb, 0xfa, 0x49, 0x7f, 0x05, 0xe5, 0x7e, 0xa9, 0x92, 0x5a, + 0xdb, 0xbd, 0x68, 0xe7, 0xcd, 0x2e, 0x53, 0x63, 0xa7, 0x99, 0x47, 0x7d, 0xf1, 0x50, 0x7a, 0x63, + 0x4f, 0xf0, 0x5d, 0xe9, 0x8d, 0x77, 0x92, 0xff, 0xe4, 0x7a, 0x4a, 0xaa, 0x2c, 0xff, 0x3a, 0x88, + 0x6e, 0x92, 0x65, 0x51, 0x71, 0xf0, 0x59, 0x5f, 0xcb, 0x28, 0x1e, 0x3e, 0xbf, 0xb6, 0x9e, 0x2a, + 0xd4, 0x7f, 0x0c, 0xa2, 0x5b, 0x81, 0x42, 0xc9, 0x00, 0xb9, 0x86, 0x75, 0x37, 0x50, 0x7e, 0x7c, + 0x7d, 0x45, 0x6a, 0xba, 0xb7, 0xf1, 0x71, 0xfb, 0x43, 0x31, 0x01, 0xdb, 0x63, 0xfa, 0x43, 0x31, + 0xdd, 0x5a, 0x78, 0x0b, 0xaa, 0x4e, 0x4a, 0xd4, 0xca, 0xc8, 0xb7, 0x05, 0x25, 0x72, 0x16, 0xb4, + 0x22, 0x5a, 0xeb, 0xe4, 0x7c, 0x4e, 0x5e, 0xbc, 0x2d, 0xe2, 0x7c, 0x4a, 0x3b, 0x91, 0xf2, 0x6e, + 0x27, 0x9a, 0xc3, 0x5b, 0x77, 0xb5, 0xf4, 0x94, 0x35, 0xcb, 0xbc, 0x47, 0x94, 0xbe, 0x46, 0x82, + 0x5b, 0x77, 0x2d, 0x94, 0xf0, 0xa6, 0x72, 0xda, 0x90, 0x37, 0x94, 0xca, 0x3e, 0xee, 0x83, 0xa2, + 0x05, 0x84, 0xf6, 0xa6, 0x4f, 0x04, 0x36, 0x42, 0x56, 0x5a, 0xa7, 0x02, 0x9b, 0x3d, 0x69, 0xc2, + 0xed, 0x18, 0xf8, 0x97, 0x10, 0x4f, 0xa1, 0x0c, 0xba, 0xd5, 0x54, 0x2f, 0xb7, 0x36, 0xed, 0x73, + 0xbb, 0xc3, 0xb2, 0xc5, 0x3c, 0x57, 0x8d, 0x49, 0xba, 0xb5, 0xa9, 0x6e, 0xb7, 0x88, 0xc6, 0x9b, + 0x96, 0xc6, 0xad, 0x48, 0x2f, 0x1f, 0x87, 0xcd, 0x38, 0x59, 0xe5, 0x7a, 0x2f, 0x96, 0xae, 0xa7, + 0x0a, 0xa3, 0x8e, 0x7a, 0xa2, 0x48, 0xda, 0xec, 0x49, 0xe3, 0xdd, 0x43, 0xcb, 0xad, 0x8e, 0xa7, + 0xad, 0x0e, 0x5b, 0xad, 0x90, 0x7a, 0xd2, 0x5f, 0x01, 0xef, 0xd5, 0xaa, 0xa8, 0xaa, 0xd7, 0x45, + 0x7b, 0x69, 0x96, 0x0d, 0xd7, 0x03, 0x61, 0xd2, 0x40, 0xc1, 0xbd, 0x5a, 0x0f, 0x4c, 0x44, 0x72, + 0xb3, 0xb7, 0x99, 0x0f, 0xbb, 0xec, 0x08, 0xaa, 0x57, 0x24, 0xdb, 0x34, 0xda, 0x6f, 0xb3, 0x1e, + 0xb5, 0xae, 0xed, 0x28, 0xfc, 0xe0, 0x5a, 0x15, 0xde, 0xea, 0xcd, 0xa3, 0xcb, 0x00, 0x82, 0x12, + 0x33, 0xcb, 0x3d, 0xca, 0x84, 0x33, 0x93, 0xdc, 0xef, 0xa0, 0xd0, 0x9e, 0xa5, 0xec, 0x46, 0xaf, + 0xd3, 0xe9, 0x0c, 0xb8, 0xf7, 0x1c, 0xcb, 0x06, 0x82, 0xe7, 0x58, 0x08, 0x44, 0x4d, 0x27, 0x7f, + 0xd7, 0x9b, 0xb5, 0x07, 0x53, 0x5f, 0xd3, 0x29, 0x65, 0x8b, 0x0a, 0x35, 0x9d, 0x97, 0x46, 0xa3, + 0x81, 0x76, 0xab, 0x5e, 0xdc, 0x7f, 0x1c, 0x32, 0x83, 0xde, 0xde, 0x5f, 0xef, 0xc5, 0xa2, 0x19, + 0xc5, 0x38, 0x4c, 0xe7, 0x29, 0xf7, 0xcd, 0x28, 0x96, 0x8d, 0x1a, 0x09, 0xcd, 0x28, 0x6d, 0x94, + 0xaa, 0x5e, 0x9d, 0x23, 0x1c, 0x4c, 0xc3, 0xd5, 0x93, 0x4c, 0xbf, 0xea, 0x69, 0xb6, 0x75, 0xec, + 0x9a, 0xeb, 0x90, 0xe1, 0x17, 0x6a, 0xb1, 0xec, 0x89, 0x6d, 0xf1, 0x42, 0x27, 0x06, 0x43, 0xa3, + 0x0e, 0xa5, 0x80, 0x8f, 0x13, 0x6a, 0xae, 0x39, 0x19, 0x2e, 0x0a, 0x88, 0xcb, 0x38, 0x4f, 0xbc, + 0x8b, 0x53, 0x61, 0xb0, 0x45, 0x86, 0x16, 0xa7, 0xa4, 0x06, 0x3a, 0xd4, 0x77, 0x5f, 0xc5, 0xf4, + 0x74, 0x05, 0xfd, 0xce, 0xa3, 0xfb, 0x26, 0xe6, 0xa3, 0x1e, 0x24, 0x3e, 0xd4, 0x6f, 0x00, 0xbd, + 0x2d, 0x2f, 0x9d, 0x7e, 0x1c, 0x30, 0xe5, 0xa2, 0xa1, 0x85, 0x30, 0xad, 0x82, 0x82, 0x5a, 0x27, + 0xb8, 0xc0, 0x7f, 0x0a, 0x2b, 0x5f, 0x50, 0x9b, 0xfc, 0x54, 0x20, 0xa1, 0xa0, 0x6e, 0xa3, 0x28, + 0xcf, 0xb4, 0xd7, 0x41, 0x0f, 0x02, 0xfa, 0xf6, 0xd2, 0x67, 0xad, 0x93, 0x43, 0x3d, 0x67, 0x37, + 0x5d, 0x3a, 0xa7, 0x18, 0x9e, 0x82, 0xee, 0xa6, 0x4b, 0xff, 0x21, 0xc6, 0x7a, 0x2f, 0x16, 0x5f, + 0x18, 0x88, 0x39, 0xbc, 0x6d, 0x4e, 0xf2, 0x3d, 0xc5, 0x15, 0xf2, 0xd6, 0x51, 0xfe, 0xc3, 0x6e, + 0xd0, 0x5c, 0xcf, 0x3d, 0x29, 0x59, 0x02, 0x55, 0xa5, 0xbe, 0x9e, 0xe7, 0xde, 0x7f, 0x52, 0xb2, + 0x11, 0xfa, 0x76, 0xde, 0xbd, 0x30, 0xa4, 0x6c, 0x7f, 0x19, 0xbd, 0x7b, 0xc8, 0x66, 0x63, 0xc8, + 0xa7, 0xc3, 0x1f, 0xb9, 0x17, 0x62, 0xd9, 0x6c, 0x54, 0xff, 0xac, 0xed, 0xdd, 0xa0, 0xc4, 0xe6, + 0x4a, 0xdf, 0x2e, 0xbc, 0x59, 0xcc, 0xc6, 0x3c, 0xe6, 0xe8, 0x4a, 0x9f, 0xf8, 0x7d, 0x54, 0x0b, + 0x88, 0x2b, 0x7d, 0x0e, 0x80, 0xec, 0x4d, 0x4a, 0x00, 0xaf, 0xbd, 0x5a, 0x10, 0xb4, 0xa7, 0x00, + 0x33, 0xeb, 0x6a, 0x7b, 0x75, 0x62, 0x8b, 0xaf, 0xe0, 0x19, 0x1d, 0x21, 0x25, 0x66, 0xdd, 0x36, + 0x65, 0x82, 0x41, 0x56, 0x5f, 0x7c, 0xcf, 0x63, 0x31, 0x9f, 0xc7, 0xe5, 0x0a, 0x05, 0x83, 0xaa, + 0xa5, 0x05, 0x10, 0xc1, 0xe0, 0x05, 0x4d, 0x94, 0x37, 0x8f, 0x39, 0xb9, 0xdc, 0x67, 0x25, 0x5b, + 0xf0, 0x34, 0x07, 0xfc, 0x4d, 0x07, 0xfd, 0x40, 0x6d, 0x86, 0x88, 0x72, 0x8a, 0x35, 0x59, 0xa1, + 0x20, 0xe4, 0xed, 0x40, 0xf1, 0x0d, 0xda, 0x8a, 0xb3, 0x12, 0x9f, 0x0e, 0x4a, 0x2b, 0x18, 0x22, + 0xb2, 0x42, 0x12, 0x46, 0x6d, 0x7f, 0x92, 0xe6, 0x33, 0x6f, 0xdb, 0x9f, 0xd8, 0x5f, 0x70, 0xbc, + 0x45, 0x03, 0x66, 0x7c, 0x97, 0x0f, 0x4d, 0x7e, 0x37, 0x49, 0xbd, 0x99, 0xe9, 0x7d, 0xe8, 0x36, + 0x41, 0x8c, 0xef, 0x7e, 0x12, 0xb9, 0x7a, 0x59, 0x40, 0x0e, 0xd3, 0xe6, 0x0e, 0x9c, 0xcf, 0x95, + 0x43, 0x04, 0x5d, 0x61, 0xd2, 0x8c, 0xaa, 0x42, 0x7e, 0xba, 0xc8, 0x4f, 0x4a, 0x76, 0x9e, 0x66, + 0x50, 0xa2, 0x51, 0x55, 0xaa, 0x5b, 0x72, 0x62, 0x54, 0xf5, 0x71, 0xe6, 0x32, 0x85, 0x90, 0x3a, + 0x1f, 0x52, 0x9e, 0x94, 0x71, 0x82, 0x2f, 0x53, 0x48, 0x1b, 0x6d, 0x8c, 0xd8, 0x49, 0x0b, 0xe0, + 0x26, 0xd2, 0x8f, 0x80, 0x97, 0x69, 0x52, 0x8d, 0x81, 0x9f, 0xc4, 0x65, 0x3c, 0x07, 0x0e, 0x25, + 0x8e, 0x74, 0x85, 0x8c, 0x1c, 0x86, 0x88, 0x74, 0x8a, 0x55, 0x0e, 0xff, 0x30, 0x7a, 0xbf, 0x1e, + 0xe8, 0x21, 0x57, 0xdf, 0xfc, 0x7f, 0x21, 0xfe, 0x58, 0xc8, 0xf0, 0x03, 0x6d, 0x63, 0xcc, 0x4b, + 0x88, 0xe7, 0x8d, 0xed, 0xf7, 0xf4, 0xef, 0x02, 0x7c, 0x32, 0xa8, 0x1b, 0xe4, 0x98, 0xf1, 0xf4, + 0xbc, 0x5e, 0x57, 0xa9, 0x53, 0x2c, 0xd4, 0x20, 0xb6, 0x78, 0x14, 0xf8, 0x4c, 0x81, 0x8f, 0x33, + 0x03, 0x8d, 0x2d, 0x3d, 0x85, 0x22, 0xc3, 0x03, 0x8d, 0xa3, 0x2d, 0x00, 0x62, 0xa0, 0xf1, 0x82, + 0x26, 0xba, 0x6c, 0xf1, 0x04, 0xc2, 0x95, 0x99, 0x40, 0xbf, 0xca, 0x4c, 0x9c, 0x77, 0x04, 0xb2, + 0xe8, 0xfd, 0x23, 0x98, 0xbf, 0x81, 0xb2, 0xba, 0x48, 0x8b, 0xfd, 0x7a, 0x86, 0x8d, 0xf9, 0x02, + 0xbf, 0x45, 0x67, 0x88, 0x91, 0x46, 0x88, 0x34, 0x84, 0x40, 0xcd, 0x50, 0x66, 0x80, 0x83, 0xea, + 0x38, 0x9e, 0x83, 0xf8, 0xe8, 0xc2, 0x70, 0x9d, 0x32, 0x62, 0x41, 0xc4, 0x50, 0x46, 0xc2, 0xd6, + 0xeb, 0x46, 0x86, 0x39, 0x85, 0x59, 0x1d, 0x61, 0xe5, 0x49, 0xbc, 0x9a, 0x43, 0xce, 0x95, 0x49, + 0xb4, 0x09, 0x6b, 0x99, 0xf4, 0xf3, 0xc4, 0x26, 0x6c, 0x1f, 0x3d, 0x2b, 0xe9, 0x76, 0x1e, 0xfc, + 0x09, 0x2b, 0xb9, 0xfc, 0x8b, 0x1e, 0x67, 0x65, 0x86, 0x92, 0x6e, 0xf7, 0xa1, 0x3a, 0x24, 0x91, + 0x74, 0x87, 0x35, 0xac, 0x4f, 0x61, 0x3b, 0x65, 0x78, 0x05, 0xa5, 0x8e, 0x93, 0x17, 0xf3, 0x38, + 0xcd, 0x54, 0x34, 0x7c, 0x11, 0xb0, 0x4d, 0xe8, 0x10, 0x9f, 0xc2, 0xee, 0xab, 0x6b, 0x7d, 0x3c, + 0x3c, 0x5c, 0x42, 0xb4, 0x27, 0xdc, 0x61, 0x9f, 0xd8, 0x13, 0xee, 0xd6, 0x32, 0x4b, 0x35, 0xc3, + 0x0a, 0x6e, 0x25, 0x88, 0x1d, 0x36, 0xc5, 0x1b, 0x44, 0x96, 0x4d, 0x04, 0x12, 0x4b, 0xb5, 0xa0, + 0x82, 0x99, 0xdb, 0x0c, 0xb6, 0x97, 0xe6, 0x71, 0x96, 0xfe, 0x1c, 0xdf, 0x7d, 0xb6, 0xec, 0x34, + 0x04, 0x31, 0xb7, 0xf9, 0x49, 0x9f, 0xab, 0x7d, 0xe0, 0x93, 0xb4, 0x1e, 0xfa, 0x1f, 0x06, 0x9e, + 0x9b, 0x20, 0xba, 0x5d, 0x59, 0xa4, 0x72, 0xf5, 0x8b, 0x41, 0x74, 0x13, 0x3f, 0xd6, 0xed, 0xa2, + 0x18, 0xd7, 0x29, 0xc9, 0x29, 0x24, 0x90, 0x16, 0x7c, 0xf8, 0x69, 0xf8, 0x59, 0x21, 0x9c, 0x38, + 0x59, 0xef, 0xa1, 0x66, 0x9d, 0xd7, 0xd6, 0x63, 0xc9, 0x58, 0xfe, 0xa9, 0xab, 0xb3, 0x0a, 0x4a, + 0x35, 0x53, 0xee, 0x03, 0x47, 0xbd, 0xd3, 0xe2, 0x46, 0x16, 0x58, 0x57, 0x94, 0xe8, 0x9d, 0x61, + 0x0d, 0xb3, 0xbb, 0x63, 0x71, 0xa7, 0x50, 0xb1, 0x6c, 0x09, 0xe2, 0xfa, 0xdb, 0x06, 0x69, 0xcc, + 0xa2, 0x88, 0xdd, 0x1d, 0x9a, 0x36, 0xe9, 0x46, 0xdb, 0xed, 0x76, 0xbe, 0x3a, 0xc0, 0x67, 0xe4, + 0x1e, 0x4b, 0x02, 0x23, 0xd2, 0x8d, 0x00, 0x6e, 0xed, 0x7e, 0x96, 0x2c, 0x9e, 0x26, 0x71, 0xc5, + 0x4f, 0xe2, 0x55, 0xc6, 0xe2, 0xa9, 0x98, 0xd7, 0xf1, 0xee, 0x67, 0xc3, 0x8c, 0x6c, 0x88, 0xda, + 0xfd, 0xa4, 0x60, 0xb3, 0xb2, 0x53, 0x7f, 0xc1, 0x4b, 0x5d, 0x2d, 0xbc, 0x8b, 0x72, 0x24, 0x51, + 0x5e, 0x7c, 0xad, 0xf0, 0x5e, 0x18, 0x32, 0xaf, 0x44, 0x49, 0x91, 0x48, 0x43, 0x6e, 0xf9, 0x74, + 0x9c, 0x04, 0xe4, 0x76, 0x80, 0x30, 0x9f, 0x49, 0x90, 0xbf, 0x37, 0x7f, 0x84, 0x82, 0xab, 0x0f, + 0xf7, 0x6e, 0xf8, 0x74, 0x6d, 0x68, 0x64, 0x7f, 0xfb, 0x6c, 0xb3, 0x27, 0x6d, 0x16, 0x6e, 0xea, + 0xe3, 0xc1, 0x47, 0x50, 0x79, 0xde, 0x6f, 0xae, 0x85, 0x23, 0x23, 0x25, 0x16, 0x6e, 0x6d, 0xca, + 0x04, 0x7a, 0x2d, 0x7b, 0x31, 0x4d, 0xb9, 0x92, 0x35, 0x17, 0x76, 0x37, 0xda, 0x06, 0xda, 0x14, + 0x51, 0x2b, 0x9a, 0x36, 0x63, 0x79, 0xcd, 0x4c, 0xd8, 0x6c, 0x96, 0x81, 0x82, 0x4e, 0x21, 0x96, + 0xdf, 0x78, 0xdb, 0x6a, 0xdb, 0xf2, 0x82, 0xc4, 0x58, 0x1e, 0x54, 0x30, 0x69, 0x64, 0x8d, 0xc9, + 0x33, 0x88, 0xe6, 0xc1, 0xae, 0xb5, 0xcd, 0x38, 0x00, 0x91, 0x46, 0x7a, 0x41, 0xf3, 0x1a, 0x56, + 0x2d, 0xde, 0x87, 0xe6, 0x49, 0xe0, 0x2f, 0xe2, 0x08, 0x65, 0x4b, 0x4c, 0xbc, 0x86, 0xe5, 0xc1, + 0xcc, 0x3a, 0x01, 0x79, 0x78, 0xbe, 0x3a, 0x98, 0xe2, 0x75, 0x02, 0xd6, 0x17, 0x0c, 0xb1, 0x4e, + 0xa0, 0x58, 0xb7, 0xe9, 0xf4, 0xe7, 0x7f, 0x0f, 0xe3, 0xca, 0x54, 0xce, 0xd3, 0x74, 0x5e, 0x30, + 0xd4, 0x74, 0x94, 0x82, 0xfb, 0x48, 0xed, 0x8f, 0x0b, 0x7b, 0x1e, 0xa9, 0xef, 0xa3, 0xc2, 0x0f, + 0xba, 0x30, 0xe9, 0xe1, 0xf9, 0xed, 0xff, 0xf9, 0xe6, 0xc6, 0xe0, 0xeb, 0x6f, 0x6e, 0x0c, 0xfe, + 0xef, 0x9b, 0x1b, 0x83, 0x5f, 0x7c, 0x7b, 0xe3, 0x9d, 0xaf, 0xbf, 0xbd, 0xf1, 0xce, 0xff, 0x7e, + 0x7b, 0xe3, 0x9d, 0xaf, 0xde, 0x55, 0x7f, 0x7d, 0xf1, 0xcd, 0xaf, 0x88, 0xbf, 0xa1, 0xf8, 0xec, + 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x4f, 0x9f, 0x53, 0xa1, 0x71, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -413,6 +423,7 @@ type ClientCommandsClient interface { ObjectCreate(ctx context.Context, in *pb.RpcObjectCreateRequest, opts ...grpc.CallOption) (*pb.RpcObjectCreateResponse, error) ObjectCreateBookmark(ctx context.Context, in *pb.RpcObjectCreateBookmarkRequest, opts ...grpc.CallOption) (*pb.RpcObjectCreateBookmarkResponse, error) ObjectCreateFromUrl(ctx context.Context, in *pb.RpcObjectCreateFromUrlRequest, opts ...grpc.CallOption) (*pb.RpcObjectCreateFromUrlResponse, error) + ObjectChatAdd(ctx context.Context, in *pb.RpcObjectChatAddRequest, opts ...grpc.CallOption) (*pb.RpcObjectChatAddResponse, error) // ObjectCreateSet just creates the new set, without adding the link to it from some other page ObjectCreateSet(ctx context.Context, in *pb.RpcObjectCreateSetRequest, opts ...grpc.CallOption) (*pb.RpcObjectCreateSetResponse, error) ObjectGraph(ctx context.Context, in *pb.RpcObjectGraphRequest, opts ...grpc.CallOption) (*pb.RpcObjectGraphResponse, error) @@ -663,6 +674,15 @@ type ClientCommandsClient interface { DeviceSetName(ctx context.Context, in *pb.RpcDeviceSetNameRequest, opts ...grpc.CallOption) (*pb.RpcDeviceSetNameResponse, error) DeviceList(ctx context.Context, in *pb.RpcDeviceListRequest, opts ...grpc.CallOption) (*pb.RpcDeviceListResponse, error) DeviceNetworkStateSet(ctx context.Context, in *pb.RpcDeviceNetworkStateSetRequest, opts ...grpc.CallOption) (*pb.RpcDeviceNetworkStateSetResponse, error) + // Chats dummy impl + ChatAddMessage(ctx context.Context, in *pb.RpcChatAddMessageRequest, opts ...grpc.CallOption) (*pb.RpcChatAddMessageResponse, error) + ChatEditMessageContent(ctx context.Context, in *pb.RpcChatEditMessageContentRequest, opts ...grpc.CallOption) (*pb.RpcChatEditMessageContentResponse, error) + ChatToggleMessageReaction(ctx context.Context, in *pb.RpcChatToggleMessageReactionRequest, opts ...grpc.CallOption) (*pb.RpcChatToggleMessageReactionResponse, error) + ChatDeleteMessage(ctx context.Context, in *pb.RpcChatDeleteMessageRequest, opts ...grpc.CallOption) (*pb.RpcChatDeleteMessageResponse, error) + ChatGetMessages(ctx context.Context, in *pb.RpcChatGetMessagesRequest, opts ...grpc.CallOption) (*pb.RpcChatGetMessagesResponse, error) + ChatGetMessagesByIds(ctx context.Context, in *pb.RpcChatGetMessagesByIdsRequest, opts ...grpc.CallOption) (*pb.RpcChatGetMessagesByIdsResponse, error) + ChatSubscribeLastMessages(ctx context.Context, in *pb.RpcChatSubscribeLastMessagesRequest, opts ...grpc.CallOption) (*pb.RpcChatSubscribeLastMessagesResponse, error) + ChatUnsubscribe(ctx context.Context, in *pb.RpcChatUnsubscribeRequest, opts ...grpc.CallOption) (*pb.RpcChatUnsubscribeResponse, error) } type clientCommandsClient struct { @@ -1132,6 +1152,15 @@ func (c *clientCommandsClient) ObjectCreateFromUrl(ctx context.Context, in *pb.R return out, nil } +func (c *clientCommandsClient) ObjectChatAdd(ctx context.Context, in *pb.RpcObjectChatAddRequest, opts ...grpc.CallOption) (*pb.RpcObjectChatAddResponse, error) { + out := new(pb.RpcObjectChatAddResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ObjectChatAdd", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *clientCommandsClient) ObjectCreateSet(ctx context.Context, in *pb.RpcObjectCreateSetRequest, opts ...grpc.CallOption) (*pb.RpcObjectCreateSetResponse, error) { out := new(pb.RpcObjectCreateSetResponse) err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ObjectCreateSet", in, out, opts...) @@ -2964,6 +2993,78 @@ func (c *clientCommandsClient) DeviceNetworkStateSet(ctx context.Context, in *pb return out, nil } +func (c *clientCommandsClient) ChatAddMessage(ctx context.Context, in *pb.RpcChatAddMessageRequest, opts ...grpc.CallOption) (*pb.RpcChatAddMessageResponse, error) { + out := new(pb.RpcChatAddMessageResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ChatAddMessage", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientCommandsClient) ChatEditMessageContent(ctx context.Context, in *pb.RpcChatEditMessageContentRequest, opts ...grpc.CallOption) (*pb.RpcChatEditMessageContentResponse, error) { + out := new(pb.RpcChatEditMessageContentResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ChatEditMessageContent", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientCommandsClient) ChatToggleMessageReaction(ctx context.Context, in *pb.RpcChatToggleMessageReactionRequest, opts ...grpc.CallOption) (*pb.RpcChatToggleMessageReactionResponse, error) { + out := new(pb.RpcChatToggleMessageReactionResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ChatToggleMessageReaction", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientCommandsClient) ChatDeleteMessage(ctx context.Context, in *pb.RpcChatDeleteMessageRequest, opts ...grpc.CallOption) (*pb.RpcChatDeleteMessageResponse, error) { + out := new(pb.RpcChatDeleteMessageResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ChatDeleteMessage", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientCommandsClient) ChatGetMessages(ctx context.Context, in *pb.RpcChatGetMessagesRequest, opts ...grpc.CallOption) (*pb.RpcChatGetMessagesResponse, error) { + out := new(pb.RpcChatGetMessagesResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ChatGetMessages", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientCommandsClient) ChatGetMessagesByIds(ctx context.Context, in *pb.RpcChatGetMessagesByIdsRequest, opts ...grpc.CallOption) (*pb.RpcChatGetMessagesByIdsResponse, error) { + out := new(pb.RpcChatGetMessagesByIdsResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ChatGetMessagesByIds", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientCommandsClient) ChatSubscribeLastMessages(ctx context.Context, in *pb.RpcChatSubscribeLastMessagesRequest, opts ...grpc.CallOption) (*pb.RpcChatSubscribeLastMessagesResponse, error) { + out := new(pb.RpcChatSubscribeLastMessagesResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ChatSubscribeLastMessages", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientCommandsClient) ChatUnsubscribe(ctx context.Context, in *pb.RpcChatUnsubscribeRequest, opts ...grpc.CallOption) (*pb.RpcChatUnsubscribeResponse, error) { + out := new(pb.RpcChatUnsubscribeResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ChatUnsubscribe", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ClientCommandsServer is the server API for ClientCommands service. type ClientCommandsServer interface { AppGetVersion(context.Context, *pb.RpcAppGetVersionRequest) *pb.RpcAppGetVersionResponse @@ -3028,6 +3129,7 @@ type ClientCommandsServer interface { ObjectCreate(context.Context, *pb.RpcObjectCreateRequest) *pb.RpcObjectCreateResponse ObjectCreateBookmark(context.Context, *pb.RpcObjectCreateBookmarkRequest) *pb.RpcObjectCreateBookmarkResponse ObjectCreateFromUrl(context.Context, *pb.RpcObjectCreateFromUrlRequest) *pb.RpcObjectCreateFromUrlResponse + ObjectChatAdd(context.Context, *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse // ObjectCreateSet just creates the new set, without adding the link to it from some other page ObjectCreateSet(context.Context, *pb.RpcObjectCreateSetRequest) *pb.RpcObjectCreateSetResponse ObjectGraph(context.Context, *pb.RpcObjectGraphRequest) *pb.RpcObjectGraphResponse @@ -3278,6 +3380,15 @@ type ClientCommandsServer interface { DeviceSetName(context.Context, *pb.RpcDeviceSetNameRequest) *pb.RpcDeviceSetNameResponse DeviceList(context.Context, *pb.RpcDeviceListRequest) *pb.RpcDeviceListResponse DeviceNetworkStateSet(context.Context, *pb.RpcDeviceNetworkStateSetRequest) *pb.RpcDeviceNetworkStateSetResponse + // Chats dummy impl + ChatAddMessage(context.Context, *pb.RpcChatAddMessageRequest) *pb.RpcChatAddMessageResponse + ChatEditMessageContent(context.Context, *pb.RpcChatEditMessageContentRequest) *pb.RpcChatEditMessageContentResponse + ChatToggleMessageReaction(context.Context, *pb.RpcChatToggleMessageReactionRequest) *pb.RpcChatToggleMessageReactionResponse + ChatDeleteMessage(context.Context, *pb.RpcChatDeleteMessageRequest) *pb.RpcChatDeleteMessageResponse + ChatGetMessages(context.Context, *pb.RpcChatGetMessagesRequest) *pb.RpcChatGetMessagesResponse + ChatGetMessagesByIds(context.Context, *pb.RpcChatGetMessagesByIdsRequest) *pb.RpcChatGetMessagesByIdsResponse + ChatSubscribeLastMessages(context.Context, *pb.RpcChatSubscribeLastMessagesRequest) *pb.RpcChatSubscribeLastMessagesResponse + ChatUnsubscribe(context.Context, *pb.RpcChatUnsubscribeRequest) *pb.RpcChatUnsubscribeResponse } // UnimplementedClientCommandsServer can be embedded to have forward compatible implementations. @@ -3437,6 +3548,9 @@ func (*UnimplementedClientCommandsServer) ObjectCreateBookmark(ctx context.Conte func (*UnimplementedClientCommandsServer) ObjectCreateFromUrl(ctx context.Context, req *pb.RpcObjectCreateFromUrlRequest) *pb.RpcObjectCreateFromUrlResponse { return nil } +func (*UnimplementedClientCommandsServer) ObjectChatAdd(ctx context.Context, req *pb.RpcObjectChatAddRequest) *pb.RpcObjectChatAddResponse { + return nil +} func (*UnimplementedClientCommandsServer) ObjectCreateSet(ctx context.Context, req *pb.RpcObjectCreateSetRequest) *pb.RpcObjectCreateSetResponse { return nil } @@ -4040,6 +4154,30 @@ func (*UnimplementedClientCommandsServer) DeviceList(ctx context.Context, req *p func (*UnimplementedClientCommandsServer) DeviceNetworkStateSet(ctx context.Context, req *pb.RpcDeviceNetworkStateSetRequest) *pb.RpcDeviceNetworkStateSetResponse { return nil } +func (*UnimplementedClientCommandsServer) ChatAddMessage(ctx context.Context, req *pb.RpcChatAddMessageRequest) *pb.RpcChatAddMessageResponse { + return nil +} +func (*UnimplementedClientCommandsServer) ChatEditMessageContent(ctx context.Context, req *pb.RpcChatEditMessageContentRequest) *pb.RpcChatEditMessageContentResponse { + return nil +} +func (*UnimplementedClientCommandsServer) ChatToggleMessageReaction(ctx context.Context, req *pb.RpcChatToggleMessageReactionRequest) *pb.RpcChatToggleMessageReactionResponse { + return nil +} +func (*UnimplementedClientCommandsServer) ChatDeleteMessage(ctx context.Context, req *pb.RpcChatDeleteMessageRequest) *pb.RpcChatDeleteMessageResponse { + return nil +} +func (*UnimplementedClientCommandsServer) ChatGetMessages(ctx context.Context, req *pb.RpcChatGetMessagesRequest) *pb.RpcChatGetMessagesResponse { + return nil +} +func (*UnimplementedClientCommandsServer) ChatGetMessagesByIds(ctx context.Context, req *pb.RpcChatGetMessagesByIdsRequest) *pb.RpcChatGetMessagesByIdsResponse { + return nil +} +func (*UnimplementedClientCommandsServer) ChatSubscribeLastMessages(ctx context.Context, req *pb.RpcChatSubscribeLastMessagesRequest) *pb.RpcChatSubscribeLastMessagesResponse { + return nil +} +func (*UnimplementedClientCommandsServer) ChatUnsubscribe(ctx context.Context, req *pb.RpcChatUnsubscribeRequest) *pb.RpcChatUnsubscribeResponse { + return nil +} func RegisterClientCommandsServer(s *grpc.Server, srv ClientCommandsServer) { s.RegisterService(&_ClientCommands_serviceDesc, srv) @@ -4963,6 +5101,24 @@ func _ClientCommands_ObjectCreateFromUrl_Handler(srv interface{}, ctx context.Co return interceptor(ctx, in, info, handler) } +func _ClientCommands_ObjectChatAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcObjectChatAddRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).ObjectChatAdd(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/ObjectChatAdd", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).ObjectChatAdd(ctx, req.(*pb.RpcObjectChatAddRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + func _ClientCommands_ObjectCreateSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(pb.RpcObjectCreateSetRequest) if err := dec(in); err != nil { @@ -8585,6 +8741,150 @@ func _ClientCommands_DeviceNetworkStateSet_Handler(srv interface{}, ctx context. return interceptor(ctx, in, info, handler) } +func _ClientCommands_ChatAddMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcChatAddMessageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).ChatAddMessage(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/ChatAddMessage", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).ChatAddMessage(ctx, req.(*pb.RpcChatAddMessageRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + +func _ClientCommands_ChatEditMessageContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcChatEditMessageContentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).ChatEditMessageContent(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/ChatEditMessageContent", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).ChatEditMessageContent(ctx, req.(*pb.RpcChatEditMessageContentRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + +func _ClientCommands_ChatToggleMessageReaction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcChatToggleMessageReactionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).ChatToggleMessageReaction(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/ChatToggleMessageReaction", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).ChatToggleMessageReaction(ctx, req.(*pb.RpcChatToggleMessageReactionRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + +func _ClientCommands_ChatDeleteMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcChatDeleteMessageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).ChatDeleteMessage(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/ChatDeleteMessage", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).ChatDeleteMessage(ctx, req.(*pb.RpcChatDeleteMessageRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + +func _ClientCommands_ChatGetMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcChatGetMessagesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).ChatGetMessages(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/ChatGetMessages", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).ChatGetMessages(ctx, req.(*pb.RpcChatGetMessagesRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + +func _ClientCommands_ChatGetMessagesByIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcChatGetMessagesByIdsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).ChatGetMessagesByIds(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/ChatGetMessagesByIds", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).ChatGetMessagesByIds(ctx, req.(*pb.RpcChatGetMessagesByIdsRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + +func _ClientCommands_ChatSubscribeLastMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcChatSubscribeLastMessagesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).ChatSubscribeLastMessages(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/ChatSubscribeLastMessages", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).ChatSubscribeLastMessages(ctx, req.(*pb.RpcChatSubscribeLastMessagesRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + +func _ClientCommands_ChatUnsubscribe_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcChatUnsubscribeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).ChatUnsubscribe(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/ChatUnsubscribe", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).ChatUnsubscribe(ctx, req.(*pb.RpcChatUnsubscribeRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + var _ClientCommands_serviceDesc = grpc.ServiceDesc{ ServiceName: "anytype.ClientCommands", HandlerType: (*ClientCommandsServer)(nil), @@ -8793,6 +9093,10 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{ MethodName: "ObjectCreateFromUrl", Handler: _ClientCommands_ObjectCreateFromUrl_Handler, }, + { + MethodName: "ObjectChatAdd", + Handler: _ClientCommands_ObjectChatAdd_Handler, + }, { MethodName: "ObjectCreateSet", Handler: _ClientCommands_ObjectCreateSet_Handler, @@ -9593,6 +9897,38 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{ MethodName: "DeviceNetworkStateSet", Handler: _ClientCommands_DeviceNetworkStateSet_Handler, }, + { + MethodName: "ChatAddMessage", + Handler: _ClientCommands_ChatAddMessage_Handler, + }, + { + MethodName: "ChatEditMessageContent", + Handler: _ClientCommands_ChatEditMessageContent_Handler, + }, + { + MethodName: "ChatToggleMessageReaction", + Handler: _ClientCommands_ChatToggleMessageReaction_Handler, + }, + { + MethodName: "ChatDeleteMessage", + Handler: _ClientCommands_ChatDeleteMessage_Handler, + }, + { + MethodName: "ChatGetMessages", + Handler: _ClientCommands_ChatGetMessages_Handler, + }, + { + MethodName: "ChatGetMessagesByIds", + Handler: _ClientCommands_ChatGetMessagesByIds_Handler, + }, + { + MethodName: "ChatSubscribeLastMessages", + Handler: _ClientCommands_ChatSubscribeLastMessages_Handler, + }, + { + MethodName: "ChatUnsubscribe", + Handler: _ClientCommands_ChatUnsubscribe_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/pkg/lib/localstore/objectstore/objects.go b/pkg/lib/localstore/objectstore/objects.go index 474713ebd..ab0c56fde 100644 --- a/pkg/lib/localstore/objectstore/objects.go +++ b/pkg/lib/localstore/objectstore/objects.go @@ -127,10 +127,15 @@ type VirtualSpacesStore interface { DeleteVirtualSpace(spaceID string) error } +type configProvider interface { + GetAnyStoreConfig() *anystore.Config +} + type dsObjectStore struct { oldStore oldstore.Service repoPath string + anyStoreConfig *anystore.Config sourceService SourceDetailsFromID anyStore anystore.DB objects anystore.Collection @@ -181,6 +186,7 @@ func (s *dsObjectStore) Init(a *app.App) (err error) { } s.arenaPool = &fastjson.ArenaPool{} s.repoPath = app.MustComponent[wallet.Wallet](a).RepoPath() + s.anyStoreConfig = app.MustComponent[configProvider](a).GetAnyStoreConfig() s.oldStore = app.MustComponent[oldstore.Service](a) return nil @@ -203,7 +209,7 @@ func (s *dsObjectStore) Run(ctx context.Context) error { } func (s *dsObjectStore) runDatabase(ctx context.Context, path string) error { - store, err := anystore.Open(ctx, path, nil) + store, err := anystore.Open(ctx, path, s.anyStoreConfig) if err != nil { return fmt.Errorf("open database: %w", err) } diff --git a/pkg/lib/pb/model/models.pb.go b/pkg/lib/pb/model/models.pb.go index 16430e03c..4449f3cd7 100644 --- a/pkg/lib/pb/model/models.pb.go +++ b/pkg/lib/pb/model/models.pb.go @@ -51,6 +51,8 @@ const ( SmartBlockType_FileObject SmartBlockType = 533 SmartBlockType_NotificationObject SmartBlockType = 535 SmartBlockType_DevicesObject SmartBlockType = 536 + SmartBlockType_ChatObject SmartBlockType = 537 + SmartBlockType_ChatDerivedObject SmartBlockType = 544 ) var SmartBlockType_name = map[int32]string{ @@ -79,6 +81,8 @@ var SmartBlockType_name = map[int32]string{ 533: "FileObject", 535: "NotificationObject", 536: "DevicesObject", + 537: "ChatObject", + 544: "ChatDerivedObject", } var SmartBlockType_value = map[string]int32{ @@ -107,6 +111,8 @@ var SmartBlockType_value = map[string]int32{ "FileObject": 533, "NotificationObject": 535, "DevicesObject": 536, + "ChatObject": 537, + "ChatDerivedObject": 544, } func (x SmartBlockType) String() string { @@ -1666,6 +1672,8 @@ const ( ObjectType_spaceView ObjectTypeLayout = 18 ObjectType_participant ObjectTypeLayout = 19 ObjectType_pdf ObjectTypeLayout = 20 + ObjectType_chat ObjectTypeLayout = 21 + ObjectType_chatDerived ObjectTypeLayout = 22 ) var ObjectTypeLayout_name = map[int32]string{ @@ -1690,6 +1698,8 @@ var ObjectTypeLayout_name = map[int32]string{ 18: "spaceView", 19: "participant", 20: "pdf", + 21: "chat", + 22: "chatDerived", } var ObjectTypeLayout_value = map[string]int32{ @@ -1714,6 +1724,8 @@ var ObjectTypeLayout_value = map[string]int32{ "spaceView": 18, "participant": 19, "pdf": 20, + "chat": 21, + "chatDerived": 22, } func (x ObjectTypeLayout) String() string { @@ -2171,6 +2183,34 @@ func (MembershipTierDataPeriodType) EnumDescriptor() ([]byte, []int) { return fileDescriptor_98a910b73321e591, []int{31, 0} } +type ChatMessageAttachmentAttachmentType int32 + +const ( + ChatMessageAttachment_FILE ChatMessageAttachmentAttachmentType = 0 + ChatMessageAttachment_IMAGE ChatMessageAttachmentAttachmentType = 1 + ChatMessageAttachment_LINK ChatMessageAttachmentAttachmentType = 2 +) + +var ChatMessageAttachmentAttachmentType_name = map[int32]string{ + 0: "FILE", + 1: "IMAGE", + 2: "LINK", +} + +var ChatMessageAttachmentAttachmentType_value = map[string]int32{ + "FILE": 0, + "IMAGE": 1, + "LINK": 2, +} + +func (x ChatMessageAttachmentAttachmentType) String() string { + return proto.EnumName(ChatMessageAttachmentAttachmentType_name, int32(x)) +} + +func (ChatMessageAttachmentAttachmentType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_98a910b73321e591, []int{34, 1, 0} +} + type SmartBlockSnapshotBase struct { Blocks []*Block `protobuf:"bytes,1,rep,name=blocks,proto3" json:"blocks,omitempty"` Details *types.Struct `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"` @@ -2496,6 +2536,7 @@ type Block struct { // *BlockContentOfTableColumn // *BlockContentOfTableRow // *BlockContentOfWidget + // *BlockContentOfChat Content IsBlockContent `protobuf_oneof:"content"` } @@ -2589,6 +2630,9 @@ type BlockContentOfTableRow struct { type BlockContentOfWidget struct { Widget *BlockContentWidget `protobuf:"bytes,29,opt,name=widget,proto3,oneof" json:"widget,omitempty"` } +type BlockContentOfChat struct { + Chat *BlockContentChat `protobuf:"bytes,30,opt,name=chat,proto3,oneof" json:"chat,omitempty"` +} func (*BlockContentOfSmartblock) IsBlockContent() {} func (*BlockContentOfText) IsBlockContent() {} @@ -2607,6 +2651,7 @@ func (*BlockContentOfTable) IsBlockContent() {} func (*BlockContentOfTableColumn) IsBlockContent() {} func (*BlockContentOfTableRow) IsBlockContent() {} func (*BlockContentOfWidget) IsBlockContent() {} +func (*BlockContentOfChat) IsBlockContent() {} func (m *Block) GetContent() IsBlockContent { if m != nil { @@ -2783,6 +2828,13 @@ func (m *Block) GetWidget() *BlockContentWidget { return nil } +func (m *Block) GetChat() *BlockContentChat { + if x, ok := m.GetContent().(*BlockContentOfChat); ok { + return x.Chat + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*Block) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -2803,6 +2855,7 @@ func (*Block) XXX_OneofWrappers() []interface{} { (*BlockContentOfTableColumn)(nil), (*BlockContentOfTableRow)(nil), (*BlockContentOfWidget)(nil), + (*BlockContentOfChat)(nil), } } @@ -4960,6 +5013,42 @@ func (m *BlockContentWidget) GetViewId() string { return "" } +type BlockContentChat struct { +} + +func (m *BlockContentChat) Reset() { *m = BlockContentChat{} } +func (m *BlockContentChat) String() string { return proto.CompactTextString(m) } +func (*BlockContentChat) ProtoMessage() {} +func (*BlockContentChat) Descriptor() ([]byte, []int) { + return fileDescriptor_98a910b73321e591, []int{2, 1, 17} +} +func (m *BlockContentChat) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BlockContentChat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BlockContentChat.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *BlockContentChat) XXX_Merge(src proto.Message) { + xxx_messageInfo_BlockContentChat.Merge(m, src) +} +func (m *BlockContentChat) XXX_Size() int { + return m.Size() +} +func (m *BlockContentChat) XXX_DiscardUnknown() { + xxx_messageInfo_BlockContentChat.DiscardUnknown(m) +} + +var xxx_messageInfo_BlockContentChat proto.InternalMessageInfo + // Used to decode block meta only, without the content itself type BlockMetaOnly struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` @@ -8822,6 +8911,314 @@ func (m *DeviceInfo) GetIsConnected() bool { return false } +type ChatMessage struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + OrderId string `protobuf:"bytes,2,opt,name=orderId,proto3" json:"orderId,omitempty"` + Creator string `protobuf:"bytes,3,opt,name=creator,proto3" json:"creator,omitempty"` + CreatedAt int64 `protobuf:"varint,4,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + ModifiedAt int64 `protobuf:"varint,9,opt,name=modifiedAt,proto3" json:"modifiedAt,omitempty"` + ReplyToMessageId string `protobuf:"bytes,5,opt,name=replyToMessageId,proto3" json:"replyToMessageId,omitempty"` + Message *ChatMessageMessageContent `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` + Attachments []*ChatMessageAttachment `protobuf:"bytes,7,rep,name=attachments,proto3" json:"attachments,omitempty"` + Reactions *ChatMessageReactions `protobuf:"bytes,8,opt,name=reactions,proto3" json:"reactions,omitempty"` +} + +func (m *ChatMessage) Reset() { *m = ChatMessage{} } +func (m *ChatMessage) String() string { return proto.CompactTextString(m) } +func (*ChatMessage) ProtoMessage() {} +func (*ChatMessage) Descriptor() ([]byte, []int) { + return fileDescriptor_98a910b73321e591, []int{34} +} +func (m *ChatMessage) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ChatMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ChatMessage.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ChatMessage) XXX_Merge(src proto.Message) { + xxx_messageInfo_ChatMessage.Merge(m, src) +} +func (m *ChatMessage) XXX_Size() int { + return m.Size() +} +func (m *ChatMessage) XXX_DiscardUnknown() { + xxx_messageInfo_ChatMessage.DiscardUnknown(m) +} + +var xxx_messageInfo_ChatMessage proto.InternalMessageInfo + +func (m *ChatMessage) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *ChatMessage) GetOrderId() string { + if m != nil { + return m.OrderId + } + return "" +} + +func (m *ChatMessage) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *ChatMessage) GetCreatedAt() int64 { + if m != nil { + return m.CreatedAt + } + return 0 +} + +func (m *ChatMessage) GetModifiedAt() int64 { + if m != nil { + return m.ModifiedAt + } + return 0 +} + +func (m *ChatMessage) GetReplyToMessageId() string { + if m != nil { + return m.ReplyToMessageId + } + return "" +} + +func (m *ChatMessage) GetMessage() *ChatMessageMessageContent { + if m != nil { + return m.Message + } + return nil +} + +func (m *ChatMessage) GetAttachments() []*ChatMessageAttachment { + if m != nil { + return m.Attachments + } + return nil +} + +func (m *ChatMessage) GetReactions() *ChatMessageReactions { + if m != nil { + return m.Reactions + } + return nil +} + +type ChatMessageMessageContent struct { + Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` + Style BlockContentTextStyle `protobuf:"varint,2,opt,name=style,proto3,enum=anytype.model.BlockContentTextStyle" json:"style,omitempty"` + Marks []*BlockContentTextMark `protobuf:"bytes,3,rep,name=marks,proto3" json:"marks,omitempty"` +} + +func (m *ChatMessageMessageContent) Reset() { *m = ChatMessageMessageContent{} } +func (m *ChatMessageMessageContent) String() string { return proto.CompactTextString(m) } +func (*ChatMessageMessageContent) ProtoMessage() {} +func (*ChatMessageMessageContent) Descriptor() ([]byte, []int) { + return fileDescriptor_98a910b73321e591, []int{34, 0} +} +func (m *ChatMessageMessageContent) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ChatMessageMessageContent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ChatMessageMessageContent.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ChatMessageMessageContent) XXX_Merge(src proto.Message) { + xxx_messageInfo_ChatMessageMessageContent.Merge(m, src) +} +func (m *ChatMessageMessageContent) XXX_Size() int { + return m.Size() +} +func (m *ChatMessageMessageContent) XXX_DiscardUnknown() { + xxx_messageInfo_ChatMessageMessageContent.DiscardUnknown(m) +} + +var xxx_messageInfo_ChatMessageMessageContent proto.InternalMessageInfo + +func (m *ChatMessageMessageContent) GetText() string { + if m != nil { + return m.Text + } + return "" +} + +func (m *ChatMessageMessageContent) GetStyle() BlockContentTextStyle { + if m != nil { + return m.Style + } + return BlockContentText_Paragraph +} + +func (m *ChatMessageMessageContent) GetMarks() []*BlockContentTextMark { + if m != nil { + return m.Marks + } + return nil +} + +type ChatMessageAttachment struct { + Target string `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"` + Type ChatMessageAttachmentAttachmentType `protobuf:"varint,2,opt,name=type,proto3,enum=anytype.model.ChatMessageAttachmentAttachmentType" json:"type,omitempty"` +} + +func (m *ChatMessageAttachment) Reset() { *m = ChatMessageAttachment{} } +func (m *ChatMessageAttachment) String() string { return proto.CompactTextString(m) } +func (*ChatMessageAttachment) ProtoMessage() {} +func (*ChatMessageAttachment) Descriptor() ([]byte, []int) { + return fileDescriptor_98a910b73321e591, []int{34, 1} +} +func (m *ChatMessageAttachment) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ChatMessageAttachment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ChatMessageAttachment.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ChatMessageAttachment) XXX_Merge(src proto.Message) { + xxx_messageInfo_ChatMessageAttachment.Merge(m, src) +} +func (m *ChatMessageAttachment) XXX_Size() int { + return m.Size() +} +func (m *ChatMessageAttachment) XXX_DiscardUnknown() { + xxx_messageInfo_ChatMessageAttachment.DiscardUnknown(m) +} + +var xxx_messageInfo_ChatMessageAttachment proto.InternalMessageInfo + +func (m *ChatMessageAttachment) GetTarget() string { + if m != nil { + return m.Target + } + return "" +} + +func (m *ChatMessageAttachment) GetType() ChatMessageAttachmentAttachmentType { + if m != nil { + return m.Type + } + return ChatMessageAttachment_FILE +} + +type ChatMessageReactions struct { + Reactions map[string]*ChatMessageReactionsIdentityList `protobuf:"bytes,1,rep,name=reactions,proto3" json:"reactions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (m *ChatMessageReactions) Reset() { *m = ChatMessageReactions{} } +func (m *ChatMessageReactions) String() string { return proto.CompactTextString(m) } +func (*ChatMessageReactions) ProtoMessage() {} +func (*ChatMessageReactions) Descriptor() ([]byte, []int) { + return fileDescriptor_98a910b73321e591, []int{34, 2} +} +func (m *ChatMessageReactions) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ChatMessageReactions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ChatMessageReactions.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ChatMessageReactions) XXX_Merge(src proto.Message) { + xxx_messageInfo_ChatMessageReactions.Merge(m, src) +} +func (m *ChatMessageReactions) XXX_Size() int { + return m.Size() +} +func (m *ChatMessageReactions) XXX_DiscardUnknown() { + xxx_messageInfo_ChatMessageReactions.DiscardUnknown(m) +} + +var xxx_messageInfo_ChatMessageReactions proto.InternalMessageInfo + +func (m *ChatMessageReactions) GetReactions() map[string]*ChatMessageReactionsIdentityList { + if m != nil { + return m.Reactions + } + return nil +} + +type ChatMessageReactionsIdentityList struct { + Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` +} + +func (m *ChatMessageReactionsIdentityList) Reset() { *m = ChatMessageReactionsIdentityList{} } +func (m *ChatMessageReactionsIdentityList) String() string { return proto.CompactTextString(m) } +func (*ChatMessageReactionsIdentityList) ProtoMessage() {} +func (*ChatMessageReactionsIdentityList) Descriptor() ([]byte, []int) { + return fileDescriptor_98a910b73321e591, []int{34, 2, 1} +} +func (m *ChatMessageReactionsIdentityList) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ChatMessageReactionsIdentityList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ChatMessageReactionsIdentityList.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ChatMessageReactionsIdentityList) XXX_Merge(src proto.Message) { + xxx_messageInfo_ChatMessageReactionsIdentityList.Merge(m, src) +} +func (m *ChatMessageReactionsIdentityList) XXX_Size() int { + return m.Size() +} +func (m *ChatMessageReactionsIdentityList) XXX_DiscardUnknown() { + xxx_messageInfo_ChatMessageReactionsIdentityList.DiscardUnknown(m) +} + +var xxx_messageInfo_ChatMessageReactionsIdentityList proto.InternalMessageInfo + +func (m *ChatMessageReactionsIdentityList) GetIds() []string { + if m != nil { + return m.Ids + } + return nil +} + func init() { proto.RegisterEnum("anytype.model.SmartBlockType", SmartBlockType_name, SmartBlockType_value) proto.RegisterEnum("anytype.model.RelationFormat", RelationFormat_name, RelationFormat_value) @@ -8879,6 +9276,7 @@ func init() { proto.RegisterEnum("anytype.model.MembershipPaymentMethod", MembershipPaymentMethod_name, MembershipPaymentMethod_value) proto.RegisterEnum("anytype.model.MembershipEmailVerificationStatus", MembershipEmailVerificationStatus_name, MembershipEmailVerificationStatus_value) proto.RegisterEnum("anytype.model.MembershipTierDataPeriodType", MembershipTierDataPeriodType_name, MembershipTierDataPeriodType_value) + proto.RegisterEnum("anytype.model.ChatMessageAttachmentAttachmentType", ChatMessageAttachmentAttachmentType_name, ChatMessageAttachmentAttachmentType_value) proto.RegisterType((*SmartBlockSnapshotBase)(nil), "anytype.model.SmartBlockSnapshotBase") proto.RegisterType((*Search)(nil), "anytype.model.Search") proto.RegisterType((*SearchResult)(nil), "anytype.model.Search.Result") @@ -8917,6 +9315,7 @@ func init() { proto.RegisterType((*BlockContentTableColumn)(nil), "anytype.model.Block.Content.TableColumn") proto.RegisterType((*BlockContentTableRow)(nil), "anytype.model.Block.Content.TableRow") proto.RegisterType((*BlockContentWidget)(nil), "anytype.model.Block.Content.Widget") + proto.RegisterType((*BlockContentChat)(nil), "anytype.model.Block.Content.Chat") proto.RegisterType((*BlockMetaOnly)(nil), "anytype.model.BlockMetaOnly") proto.RegisterType((*Range)(nil), "anytype.model.Range") proto.RegisterType((*Account)(nil), "anytype.model.Account") @@ -8970,6 +9369,12 @@ func init() { proto.RegisterType((*MembershipTierData)(nil), "anytype.model.MembershipTierData") proto.RegisterType((*Detail)(nil), "anytype.model.Detail") proto.RegisterType((*DeviceInfo)(nil), "anytype.model.DeviceInfo") + proto.RegisterType((*ChatMessage)(nil), "anytype.model.ChatMessage") + proto.RegisterType((*ChatMessageMessageContent)(nil), "anytype.model.ChatMessage.MessageContent") + proto.RegisterType((*ChatMessageAttachment)(nil), "anytype.model.ChatMessage.Attachment") + proto.RegisterType((*ChatMessageReactions)(nil), "anytype.model.ChatMessage.Reactions") + proto.RegisterMapType((map[string]*ChatMessageReactionsIdentityList)(nil), "anytype.model.ChatMessage.Reactions.ReactionsEntry") + proto.RegisterType((*ChatMessageReactionsIdentityList)(nil), "anytype.model.ChatMessage.Reactions.IdentityList") } func init() { @@ -8977,524 +9382,545 @@ func init() { } var fileDescriptor_98a910b73321e591 = []byte{ - // 8268 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x4b, 0x8c, 0x24, 0x59, - 0x92, 0x50, 0xc6, 0x3f, 0xc2, 0x22, 0x23, 0xf3, 0xe5, 0xab, 0x5f, 0x4c, 0x4c, 0x6d, 0x6d, 0x8d, - 0xcf, 0x4c, 0x77, 0x4d, 0x4e, 0x4f, 0x56, 0x77, 0xf5, 0x77, 0x7a, 0xa7, 0xbb, 0x27, 0x3f, 0x91, - 0x95, 0xd1, 0x9d, 0x99, 0x91, 0xe3, 0x11, 0x55, 0x35, 0xd3, 0xda, 0xa5, 0xf0, 0x0c, 0x7f, 0x19, - 0xe1, 0x9d, 0x1e, 0xee, 0x31, 0xee, 0x2f, 0xf2, 0x33, 0x02, 0xb4, 0xc0, 0xb2, 0xcb, 0x1e, 0x90, - 0x86, 0x15, 0x0b, 0x5c, 0x80, 0xe5, 0x86, 0xb4, 0x23, 0x56, 0x48, 0x8c, 0x18, 0x24, 0xf6, 0x00, - 0xa7, 0x95, 0xb8, 0x0c, 0x9c, 0xe0, 0x04, 0x9a, 0x3e, 0xa2, 0x65, 0x25, 0x2e, 0xac, 0x10, 0x12, - 0xc8, 0xec, 0x3d, 0xff, 0xc4, 0x27, 0xb3, 0xa2, 0x7a, 0x17, 0xb4, 0xa7, 0x70, 0x33, 0x37, 0x33, - 0x7f, 0x1f, 0x7b, 0xf6, 0xcc, 0xec, 0xd9, 0x0b, 0xf8, 0xda, 0xe8, 0xb4, 0xff, 0xd0, 0x75, 0x8e, - 0x1f, 0x8e, 0x8e, 0x1f, 0x0e, 0x7d, 0x5b, 0xb8, 0x0f, 0x47, 0x81, 0x2f, 0xfd, 0x50, 0x01, 0xe1, - 0x06, 0x41, 0xbc, 0x66, 0x79, 0x97, 0xf2, 0x72, 0x24, 0x36, 0x08, 0xdb, 0xb8, 0xdb, 0xf7, 0xfd, - 0xbe, 0x2b, 0x14, 0xe9, 0xf1, 0xf8, 0xe4, 0x61, 0x28, 0x83, 0x71, 0x4f, 0x2a, 0x62, 0xe3, 0xe7, - 0x79, 0xb8, 0xdd, 0x19, 0x5a, 0x81, 0xdc, 0x72, 0xfd, 0xde, 0x69, 0xc7, 0xb3, 0x46, 0xe1, 0xc0, - 0x97, 0x5b, 0x56, 0x28, 0xf8, 0x6b, 0x50, 0x3c, 0x46, 0x64, 0x58, 0xcf, 0xdc, 0xcf, 0x3d, 0xa8, - 0x3e, 0xba, 0xb9, 0x31, 0x21, 0x78, 0x83, 0x38, 0x4c, 0x4d, 0xc3, 0xdf, 0x80, 0x92, 0x2d, 0xa4, - 0xe5, 0xb8, 0x61, 0x3d, 0x7b, 0x3f, 0xf3, 0xa0, 0xfa, 0xe8, 0xce, 0x86, 0xfa, 0xf0, 0x46, 0xf4, - 0xe1, 0x8d, 0x0e, 0x7d, 0xd8, 0x8c, 0xe8, 0xf8, 0xbb, 0x50, 0x3e, 0x71, 0x5c, 0xf1, 0x89, 0xb8, - 0x0c, 0xeb, 0xb9, 0x6b, 0x79, 0xb6, 0xb2, 0xf5, 0x8c, 0x19, 0x13, 0xf3, 0x6d, 0x58, 0x11, 0x17, - 0x32, 0xb0, 0x4c, 0xe1, 0x5a, 0xd2, 0xf1, 0xbd, 0xb0, 0x9e, 0xa7, 0x16, 0xde, 0x99, 0x6a, 0x61, - 0xf4, 0x9e, 0xd8, 0xa7, 0x58, 0xf8, 0x7d, 0xa8, 0xfa, 0xc7, 0x9f, 0x89, 0x9e, 0xec, 0x5e, 0x8e, - 0x44, 0x58, 0x2f, 0xdc, 0xcf, 0x3d, 0xa8, 0x98, 0x69, 0x14, 0xff, 0x36, 0x54, 0x7b, 0xbe, 0xeb, - 0x8a, 0x9e, 0xfa, 0x46, 0xf1, 0xfa, 0x6e, 0xa5, 0x69, 0xf9, 0x5b, 0x70, 0x2b, 0x10, 0x43, 0xff, - 0x4c, 0xd8, 0xdb, 0x31, 0x96, 0xfa, 0x59, 0xa6, 0xcf, 0xcc, 0x7f, 0xc9, 0x37, 0xa1, 0x16, 0xe8, - 0xf6, 0xed, 0x3b, 0xde, 0x69, 0x58, 0x2f, 0x51, 0xb7, 0xbe, 0x7c, 0x45, 0xb7, 0x90, 0xc6, 0x9c, - 0xe4, 0xe0, 0x0c, 0x72, 0xa7, 0xe2, 0xb2, 0x5e, 0xb9, 0x9f, 0x79, 0x50, 0x31, 0xf1, 0x91, 0xbf, - 0x0f, 0x75, 0x3f, 0x70, 0xfa, 0x8e, 0x67, 0xb9, 0xdb, 0x81, 0xb0, 0xa4, 0xb0, 0xbb, 0xce, 0x50, - 0x84, 0xd2, 0x1a, 0x8e, 0xea, 0x70, 0x3f, 0xf3, 0x20, 0x67, 0x5e, 0xf9, 0x9e, 0xbf, 0xa9, 0x66, - 0xa8, 0xe5, 0x9d, 0xf8, 0xf5, 0xaa, 0xee, 0xfe, 0x64, 0x5b, 0x76, 0xf5, 0x6b, 0x33, 0x26, 0x34, - 0xfe, 0x34, 0x0b, 0xc5, 0x8e, 0xb0, 0x82, 0xde, 0xa0, 0xf1, 0x5b, 0x19, 0x28, 0x9a, 0x22, 0x1c, - 0xbb, 0x92, 0x37, 0xa0, 0xac, 0xc6, 0xb6, 0x65, 0xd7, 0x33, 0xd4, 0xba, 0x18, 0xfe, 0x22, 0xba, - 0xb3, 0x01, 0xf9, 0xa1, 0x90, 0x56, 0x3d, 0x47, 0x23, 0xd4, 0x98, 0x6a, 0x95, 0xfa, 0xfc, 0xc6, - 0x81, 0x90, 0x96, 0x49, 0x74, 0x8d, 0xcf, 0x33, 0x90, 0x47, 0x90, 0xdf, 0x85, 0xca, 0xc0, 0xe9, - 0x0f, 0x5c, 0xa7, 0x3f, 0x90, 0xba, 0x21, 0x09, 0x82, 0x7f, 0x08, 0xab, 0x31, 0x60, 0x5a, 0x5e, - 0x5f, 0x60, 0x8b, 0xe6, 0x29, 0x3f, 0xbd, 0x34, 0xa7, 0x89, 0x79, 0x1d, 0x4a, 0xb4, 0x1e, 0x5a, - 0x36, 0x69, 0x74, 0xc5, 0x8c, 0x40, 0x54, 0xb7, 0x68, 0xa6, 0x3e, 0x11, 0x97, 0xf5, 0x3c, 0xbd, - 0x4d, 0xa3, 0xf8, 0x26, 0xac, 0x46, 0xe0, 0x8e, 0x1e, 0x8d, 0xc2, 0xf5, 0xa3, 0x31, 0x4d, 0x6f, - 0x7c, 0xbe, 0x07, 0x05, 0x5a, 0x96, 0x7c, 0x05, 0xb2, 0x4e, 0x34, 0xd0, 0x59, 0xc7, 0xe6, 0x0f, - 0xa1, 0x78, 0xe2, 0x08, 0xd7, 0x7e, 0xe1, 0x08, 0x6b, 0x32, 0xde, 0x84, 0xe5, 0x40, 0x84, 0x32, - 0x70, 0xb4, 0xf6, 0xab, 0x05, 0xfa, 0x95, 0x79, 0x36, 0x60, 0xc3, 0x4c, 0x11, 0x9a, 0x13, 0x6c, - 0xd8, 0xed, 0xde, 0xc0, 0x71, 0xed, 0x40, 0x78, 0x2d, 0x5b, 0xad, 0xd3, 0x8a, 0x99, 0x46, 0xf1, - 0x07, 0xb0, 0x7a, 0x6c, 0xf5, 0x4e, 0xfb, 0x81, 0x3f, 0xf6, 0x70, 0x41, 0xf8, 0x01, 0x75, 0xbb, - 0x62, 0x4e, 0xa3, 0xf9, 0xeb, 0x50, 0xb0, 0x5c, 0xa7, 0xef, 0xd1, 0x4a, 0x5c, 0x99, 0x99, 0x74, - 0xd5, 0x96, 0x4d, 0xa4, 0x30, 0x15, 0x21, 0xdf, 0x83, 0xda, 0x99, 0x08, 0xa4, 0xd3, 0xb3, 0x5c, - 0xc2, 0xd7, 0x4b, 0xc4, 0x69, 0xcc, 0xe5, 0x7c, 0x9a, 0xa6, 0x34, 0x27, 0x19, 0x79, 0x0b, 0x20, - 0x44, 0x33, 0x49, 0xd3, 0xa9, 0xd7, 0xc2, 0xab, 0x73, 0xc5, 0x6c, 0xfb, 0x9e, 0x14, 0x9e, 0xdc, - 0xe8, 0xc4, 0xe4, 0x7b, 0x4b, 0x66, 0x8a, 0x99, 0xbf, 0x0b, 0x79, 0x29, 0x2e, 0x64, 0x7d, 0xe5, - 0x9a, 0x11, 0x8d, 0x84, 0x74, 0xc5, 0x85, 0xdc, 0x5b, 0x32, 0x89, 0x01, 0x19, 0x71, 0x91, 0xd5, - 0x57, 0x17, 0x60, 0xc4, 0x75, 0x89, 0x8c, 0xc8, 0xc0, 0x3f, 0x80, 0xa2, 0x6b, 0x5d, 0xfa, 0x63, - 0x59, 0x67, 0xc4, 0xfa, 0xd5, 0x6b, 0x59, 0xf7, 0x89, 0x74, 0x6f, 0xc9, 0xd4, 0x4c, 0xfc, 0x2d, - 0xc8, 0xd9, 0xce, 0x59, 0x7d, 0x8d, 0x78, 0xef, 0x5f, 0xcb, 0xbb, 0xe3, 0x9c, 0xed, 0x2d, 0x99, - 0x48, 0xce, 0xb7, 0xa1, 0x7c, 0xec, 0xfb, 0xa7, 0x43, 0x2b, 0x38, 0xad, 0x73, 0x62, 0xfd, 0xfa, - 0xb5, 0xac, 0x5b, 0x9a, 0x78, 0x6f, 0xc9, 0x8c, 0x19, 0xb1, 0xcb, 0x4e, 0xcf, 0xf7, 0xea, 0x37, - 0x16, 0xe8, 0x72, 0xab, 0xe7, 0x7b, 0xd8, 0x65, 0x64, 0x40, 0x46, 0xd7, 0xf1, 0x4e, 0xeb, 0x37, - 0x17, 0x60, 0x44, 0xcb, 0x89, 0x8c, 0xc8, 0x80, 0xcd, 0xb6, 0x2d, 0x69, 0x9d, 0x39, 0xe2, 0xbc, - 0x7e, 0x6b, 0x81, 0x66, 0xef, 0x68, 0x62, 0x6c, 0x76, 0xc4, 0x88, 0x42, 0xa2, 0xa5, 0x59, 0xbf, - 0xbd, 0x80, 0x90, 0xc8, 0xa2, 0xa3, 0x90, 0x88, 0x91, 0xff, 0x25, 0x58, 0x3b, 0x11, 0x96, 0x1c, - 0x07, 0xc2, 0x4e, 0x36, 0xba, 0x3b, 0x24, 0x6d, 0xe3, 0xfa, 0xb9, 0x9f, 0xe6, 0xda, 0x5b, 0x32, - 0x67, 0x45, 0xf1, 0xf7, 0xa1, 0xe0, 0x5a, 0x52, 0x5c, 0xd4, 0xeb, 0x24, 0xd3, 0x78, 0x81, 0x52, - 0x48, 0x71, 0xb1, 0xb7, 0x64, 0x2a, 0x16, 0xfe, 0x7d, 0x58, 0x95, 0xd6, 0xb1, 0x2b, 0xda, 0x27, - 0x9a, 0x20, 0xac, 0x7f, 0x89, 0xa4, 0xbc, 0x76, 0xbd, 0x3a, 0x4f, 0xf2, 0xec, 0x2d, 0x99, 0xd3, - 0x62, 0xb0, 0x55, 0x84, 0xaa, 0x37, 0x16, 0x68, 0x15, 0xc9, 0xc3, 0x56, 0x11, 0x0b, 0xdf, 0x87, - 0x2a, 0x3d, 0x6c, 0xfb, 0xee, 0x78, 0xe8, 0xd5, 0xbf, 0x4c, 0x12, 0x1e, 0xbc, 0x58, 0x82, 0xa2, - 0xdf, 0x5b, 0x32, 0xd3, 0xec, 0x38, 0x89, 0x04, 0x9a, 0xfe, 0x79, 0xfd, 0xee, 0x02, 0x93, 0xd8, - 0xd5, 0xc4, 0x38, 0x89, 0x11, 0x23, 0x2e, 0xbd, 0x73, 0xc7, 0xee, 0x0b, 0x59, 0xff, 0xa5, 0x05, - 0x96, 0xde, 0x33, 0x22, 0xc5, 0xa5, 0xa7, 0x98, 0x1a, 0x3f, 0x82, 0xe5, 0xb4, 0x71, 0xe5, 0x1c, - 0xf2, 0x81, 0xb0, 0x94, 0x61, 0x2f, 0x9b, 0xf4, 0x8c, 0x38, 0x61, 0x3b, 0x92, 0x0c, 0x7b, 0xd9, - 0xa4, 0x67, 0x7e, 0x1b, 0x8a, 0xca, 0xc5, 0x20, 0xbb, 0x5d, 0x36, 0x35, 0x84, 0xb4, 0x76, 0x60, - 0xf5, 0x69, 0xfb, 0x29, 0x9b, 0xf4, 0x8c, 0xb4, 0x76, 0xe0, 0x8f, 0xda, 0x1e, 0xd9, 0xdd, 0xb2, - 0xa9, 0xa1, 0xc6, 0xff, 0xf9, 0x36, 0x94, 0x74, 0xc3, 0x1a, 0xff, 0x28, 0x03, 0x45, 0x65, 0x17, - 0xf8, 0x47, 0x50, 0x08, 0xe5, 0xa5, 0x2b, 0xa8, 0x0d, 0x2b, 0x8f, 0xbe, 0xb1, 0x80, 0x2d, 0xd9, - 0xe8, 0x20, 0x83, 0xa9, 0xf8, 0x0c, 0x13, 0x0a, 0x04, 0xf3, 0x12, 0xe4, 0x4c, 0xff, 0x9c, 0x2d, - 0x71, 0x80, 0xa2, 0x1a, 0x73, 0x96, 0x41, 0xe4, 0x8e, 0x73, 0xc6, 0xb2, 0x88, 0xdc, 0x13, 0x96, - 0x2d, 0x02, 0x96, 0xe3, 0x35, 0xa8, 0x44, 0xa3, 0x1b, 0xb2, 0x3c, 0x67, 0xb0, 0x9c, 0x9a, 0xb7, - 0x90, 0x15, 0x1a, 0xff, 0x23, 0x0f, 0x79, 0x5c, 0xc6, 0xfc, 0x6b, 0x50, 0x93, 0x56, 0xd0, 0x17, - 0xca, 0x9f, 0x8d, 0x7d, 0x8d, 0x49, 0x24, 0xff, 0x20, 0xea, 0x43, 0x96, 0xfa, 0xf0, 0xea, 0x0b, - 0xcd, 0xc3, 0x44, 0x0f, 0x52, 0x9b, 0x69, 0x6e, 0xb1, 0xcd, 0x74, 0x17, 0xca, 0x68, 0x95, 0x3a, - 0xce, 0x8f, 0x04, 0x0d, 0xfd, 0xca, 0xa3, 0xf5, 0x17, 0x7f, 0xb2, 0xa5, 0x39, 0xcc, 0x98, 0x97, - 0xb7, 0xa0, 0xd2, 0xb3, 0x02, 0x9b, 0x1a, 0x43, 0xb3, 0xb5, 0xf2, 0xe8, 0x9b, 0x2f, 0x16, 0xb4, - 0x1d, 0xb1, 0x98, 0x09, 0x37, 0x6f, 0x43, 0xd5, 0x16, 0x61, 0x2f, 0x70, 0x46, 0x64, 0xa5, 0xd4, - 0x96, 0xfa, 0xad, 0x17, 0x0b, 0xdb, 0x49, 0x98, 0xcc, 0xb4, 0x04, 0x74, 0xac, 0x82, 0xd8, 0x4c, - 0x95, 0x68, 0x9f, 0x4f, 0x10, 0xc6, 0xbb, 0x50, 0x8e, 0xfa, 0xc3, 0x97, 0xa1, 0x8c, 0xbf, 0x87, - 0xbe, 0x27, 0xd8, 0x12, 0xce, 0x2d, 0x42, 0x9d, 0xa1, 0xe5, 0xba, 0x2c, 0xc3, 0x57, 0x00, 0x10, - 0x3c, 0x10, 0xb6, 0x33, 0x1e, 0xb2, 0xac, 0xf1, 0x2b, 0x91, 0xb6, 0x94, 0x21, 0x7f, 0x64, 0xf5, - 0x91, 0x63, 0x19, 0xca, 0x91, 0xd5, 0x65, 0x19, 0xe4, 0xdf, 0xb1, 0xc2, 0xc1, 0xb1, 0x6f, 0x05, - 0x36, 0xcb, 0xf2, 0x2a, 0x94, 0x36, 0x83, 0xde, 0xc0, 0x39, 0x13, 0x2c, 0x67, 0x3c, 0x84, 0x6a, - 0xaa, 0xbd, 0x28, 0x42, 0x7f, 0xb4, 0x02, 0x85, 0x4d, 0xdb, 0x16, 0x36, 0xcb, 0x20, 0x83, 0xee, - 0x20, 0xcb, 0x1a, 0xdf, 0x84, 0x4a, 0x3c, 0x5a, 0x48, 0x8e, 0xfb, 0x2f, 0x5b, 0xc2, 0x27, 0x44, - 0xb3, 0x0c, 0x6a, 0x65, 0xcb, 0x73, 0x1d, 0x4f, 0xb0, 0x6c, 0xe3, 0x2f, 0x93, 0xaa, 0xf2, 0xef, - 0x4c, 0x2e, 0x88, 0x57, 0x5e, 0xb4, 0x41, 0x4e, 0xae, 0x86, 0x2f, 0xa7, 0xfa, 0xb7, 0xef, 0x50, - 0xe3, 0xca, 0x90, 0xdf, 0xf1, 0x65, 0xc8, 0x32, 0x8d, 0xff, 0x96, 0x85, 0x72, 0xb4, 0x2f, 0xa2, - 0x6b, 0x3f, 0x0e, 0x5c, 0xad, 0xd0, 0xf8, 0xc8, 0x6f, 0x42, 0x41, 0x3a, 0x52, 0xab, 0x71, 0xc5, - 0x54, 0x00, 0xba, 0x5c, 0xe9, 0x99, 0x55, 0x7e, 0xe8, 0xf4, 0x54, 0x39, 0x43, 0xab, 0x2f, 0xf6, - 0xac, 0x70, 0xa0, 0x3d, 0xd1, 0x04, 0x81, 0xfc, 0x27, 0xd6, 0x19, 0xea, 0x1c, 0xbd, 0x57, 0xce, - 0x58, 0x1a, 0xc5, 0xdf, 0x84, 0x3c, 0x76, 0x50, 0x2b, 0xcd, 0x2f, 0x4f, 0x75, 0x18, 0xd5, 0xe4, - 0x28, 0x10, 0x38, 0x3d, 0x1b, 0x18, 0x48, 0x99, 0x44, 0xcc, 0x5f, 0x81, 0x15, 0xb5, 0x08, 0xdb, - 0x51, 0x18, 0x50, 0x22, 0xc9, 0x53, 0x58, 0xbe, 0x89, 0xc3, 0x69, 0x49, 0x51, 0x2f, 0x2f, 0xa0, - 0xdf, 0xd1, 0xe0, 0x6c, 0x74, 0x90, 0xc5, 0x54, 0x9c, 0xc6, 0xdb, 0x38, 0xa6, 0x96, 0x14, 0x38, - 0xcd, 0xcd, 0xe1, 0x48, 0x5e, 0x2a, 0xa5, 0xd9, 0x15, 0xb2, 0x37, 0x70, 0xbc, 0x3e, 0xcb, 0xa8, - 0x21, 0xc6, 0x49, 0x24, 0x92, 0x20, 0xf0, 0x03, 0x96, 0x6b, 0x34, 0x20, 0x8f, 0x3a, 0x8a, 0x46, - 0xd2, 0xb3, 0x86, 0x42, 0x8f, 0x34, 0x3d, 0x37, 0x6e, 0xc0, 0xda, 0xcc, 0xb6, 0xda, 0xf8, 0xd7, - 0x45, 0xa5, 0x21, 0xc8, 0x41, 0x2e, 0x9d, 0xe6, 0x20, 0x6f, 0xed, 0xa5, 0x6c, 0x0c, 0x4a, 0x99, - 0xb4, 0x31, 0x1f, 0x40, 0x01, 0x3b, 0x16, 0x99, 0x98, 0x05, 0xd8, 0x0f, 0x90, 0xdc, 0x54, 0x5c, - 0x18, 0x88, 0xf4, 0x06, 0xa2, 0x77, 0x2a, 0x6c, 0x6d, 0xeb, 0x23, 0x10, 0x95, 0xa6, 0x97, 0xf2, - 0xb2, 0x15, 0x40, 0x2a, 0xd1, 0xf3, 0xbd, 0xe6, 0xd0, 0xff, 0xcc, 0xa1, 0x79, 0x45, 0x95, 0x88, - 0x10, 0xd1, 0xdb, 0x16, 0xea, 0x88, 0x9e, 0xb6, 0x04, 0xd1, 0x68, 0x42, 0x81, 0xbe, 0x8d, 0x2b, - 0x41, 0xb5, 0x59, 0x25, 0x0c, 0x5e, 0x59, 0xac, 0xcd, 0xba, 0xc9, 0x8d, 0x9f, 0x64, 0x21, 0x8f, - 0x30, 0x5f, 0x87, 0x42, 0x80, 0xe1, 0x14, 0x0d, 0xe7, 0x55, 0xa1, 0x97, 0x22, 0xe1, 0x1f, 0x69, - 0x55, 0xcc, 0x2e, 0xa0, 0x2c, 0xf1, 0x17, 0xd3, 0x6a, 0x79, 0x13, 0x0a, 0x23, 0x2b, 0xb0, 0x86, - 0x7a, 0x9d, 0x28, 0xc0, 0xf8, 0xbd, 0x0c, 0xe4, 0x91, 0x88, 0xaf, 0x41, 0xad, 0x23, 0x03, 0xe7, - 0x54, 0xc8, 0x41, 0xe0, 0x8f, 0xfb, 0x03, 0xa5, 0x49, 0x9f, 0x88, 0x4b, 0x65, 0x6f, 0x94, 0x41, - 0x90, 0x96, 0xeb, 0xf4, 0x58, 0x16, 0xb5, 0x6a, 0xcb, 0x77, 0x6d, 0x96, 0xe3, 0xab, 0x50, 0x7d, - 0xe2, 0xd9, 0x22, 0x08, 0x7b, 0x7e, 0x20, 0x6c, 0x96, 0xd7, 0xab, 0xfb, 0x94, 0x15, 0x68, 0x2f, - 0x13, 0x17, 0x92, 0x42, 0x1a, 0x56, 0xe4, 0x37, 0x60, 0x75, 0x6b, 0x32, 0xce, 0x61, 0x25, 0xb4, - 0x49, 0x07, 0xc2, 0x43, 0x25, 0x63, 0x65, 0xa5, 0xc4, 0xfe, 0x67, 0x0e, 0xab, 0xe0, 0xc7, 0xd4, - 0x3a, 0x61, 0x60, 0xfc, 0x9b, 0x4c, 0x64, 0x39, 0x6a, 0x50, 0x39, 0xb2, 0x02, 0xab, 0x1f, 0x58, - 0x23, 0x6c, 0x5f, 0x15, 0x4a, 0x6a, 0xe3, 0x7c, 0x43, 0x59, 0x37, 0x05, 0x3c, 0x52, 0xb6, 0x51, - 0x01, 0x6f, 0xb2, 0x5c, 0x02, 0xbc, 0xc5, 0xf2, 0xf8, 0x8d, 0xef, 0x8d, 0x7d, 0x29, 0x58, 0x81, - 0x6c, 0x9d, 0x6f, 0x0b, 0x56, 0x44, 0x64, 0x17, 0x2d, 0x0a, 0x2b, 0x61, 0x9f, 0xb7, 0x51, 0x7f, - 0x8e, 0xfd, 0x0b, 0x56, 0xc6, 0x66, 0xe0, 0x30, 0x0a, 0x9b, 0x55, 0xf0, 0xcd, 0xe1, 0x78, 0x78, - 0x2c, 0xb0, 0x9b, 0x80, 0x6f, 0xba, 0x7e, 0xbf, 0xef, 0x0a, 0x56, 0xc5, 0x31, 0x48, 0x19, 0x5f, - 0xb6, 0x4c, 0x96, 0xd6, 0x72, 0x5d, 0x7f, 0x2c, 0x59, 0xad, 0xf1, 0xa7, 0x39, 0xc8, 0x63, 0x90, - 0x82, 0x6b, 0x67, 0x80, 0x76, 0x46, 0xaf, 0x1d, 0x7c, 0x8e, 0x57, 0x60, 0x36, 0x59, 0x81, 0xfc, - 0x7d, 0x3d, 0xd3, 0xb9, 0x05, 0xac, 0x2c, 0x0a, 0x4e, 0x4f, 0x32, 0x87, 0xfc, 0xd0, 0x19, 0x0a, - 0x6d, 0xeb, 0xe8, 0x19, 0x71, 0x21, 0xee, 0xc7, 0x05, 0xca, 0x81, 0xd0, 0x33, 0xae, 0x1a, 0x0b, - 0xb7, 0x85, 0x4d, 0x49, 0x6b, 0x20, 0x67, 0x46, 0xe0, 0x1c, 0xeb, 0x55, 0x99, 0x6b, 0xbd, 0x3e, - 0x88, 0xac, 0x57, 0x69, 0x81, 0x55, 0x4f, 0xcd, 0x4c, 0x5b, 0xae, 0xc4, 0x68, 0x94, 0x17, 0x67, - 0x4f, 0x6d, 0x26, 0x3b, 0x5a, 0x6b, 0x93, 0x8d, 0xae, 0xac, 0x46, 0x99, 0x65, 0x70, 0x36, 0x69, - 0xb9, 0x2a, 0x9b, 0xf7, 0xd4, 0xb1, 0x85, 0xcf, 0x72, 0xb4, 0x11, 0x8e, 0x6d, 0xc7, 0x67, 0x79, - 0xf4, 0xbc, 0x8e, 0x76, 0x76, 0x59, 0xc1, 0x78, 0x25, 0xb5, 0x25, 0x6d, 0x8e, 0xa5, 0xaf, 0xc4, - 0x90, 0xfa, 0x66, 0x94, 0x36, 0x1e, 0x0b, 0x9b, 0x65, 0x8d, 0x77, 0xe6, 0x98, 0xd9, 0x1a, 0x54, - 0x9e, 0x8c, 0x5c, 0xdf, 0xb2, 0xaf, 0xb1, 0xb3, 0xcb, 0x00, 0x49, 0x70, 0xdc, 0xf8, 0xe3, 0x5f, - 0x4e, 0xb6, 0x73, 0xf4, 0x45, 0x43, 0x7f, 0x1c, 0xf4, 0x04, 0x99, 0x90, 0x8a, 0xa9, 0x21, 0xfe, - 0x5d, 0x28, 0xe0, 0xfb, 0x28, 0x1b, 0xb3, 0xbe, 0x50, 0x48, 0xb6, 0xf1, 0xd4, 0x11, 0xe7, 0xa6, - 0x62, 0xe4, 0xf7, 0x00, 0xac, 0x9e, 0x74, 0xce, 0x04, 0x22, 0xf5, 0x62, 0x4f, 0x61, 0xf8, 0xdb, - 0x69, 0xf7, 0xe5, 0xfa, 0x74, 0x62, 0xca, 0xaf, 0xe1, 0x26, 0x54, 0x71, 0xe9, 0x8e, 0xda, 0x01, - 0xae, 0xf6, 0xfa, 0x32, 0x31, 0xbe, 0xbe, 0x58, 0xf3, 0x1e, 0xc7, 0x8c, 0x66, 0x5a, 0x08, 0x7f, - 0x02, 0xcb, 0x2a, 0x35, 0xa6, 0x85, 0xd6, 0x48, 0xe8, 0x1b, 0x8b, 0x09, 0x6d, 0x27, 0x9c, 0xe6, - 0x84, 0x98, 0xd9, 0xec, 0x62, 0xe1, 0xa5, 0xb3, 0x8b, 0xaf, 0xc0, 0x4a, 0x77, 0x72, 0x15, 0xa8, - 0xad, 0x62, 0x0a, 0xcb, 0x0d, 0x58, 0x76, 0xc2, 0x24, 0xb9, 0x49, 0xa9, 0x8e, 0xb2, 0x39, 0x81, - 0x6b, 0xfc, 0x87, 0x22, 0xe4, 0x69, 0xe4, 0xa7, 0x53, 0x55, 0xdb, 0x13, 0x26, 0xfd, 0xe1, 0xe2, - 0x53, 0x3d, 0xb5, 0xe2, 0xc9, 0x82, 0xe4, 0x52, 0x16, 0xe4, 0xbb, 0x50, 0x08, 0xfd, 0x40, 0x46, - 0xd3, 0xbb, 0xa0, 0x12, 0x75, 0xfc, 0x40, 0x9a, 0x8a, 0x91, 0xef, 0x42, 0xe9, 0xc4, 0x71, 0x25, - 0x4e, 0x8a, 0x1a, 0xbc, 0xd7, 0x16, 0x93, 0xb1, 0x4b, 0x4c, 0x66, 0xc4, 0xcc, 0xf7, 0xd3, 0xca, - 0x56, 0x24, 0x49, 0x1b, 0x8b, 0x49, 0x9a, 0xa7, 0x83, 0xeb, 0xc0, 0x7a, 0xfe, 0x99, 0x08, 0xcc, - 0x54, 0x7e, 0x51, 0x6d, 0xd2, 0x33, 0x78, 0xde, 0x80, 0xf2, 0xc0, 0xb1, 0x05, 0xfa, 0x39, 0x64, - 0x63, 0xca, 0x66, 0x0c, 0xf3, 0x4f, 0xa0, 0x4c, 0xf1, 0x01, 0x5a, 0xc5, 0xca, 0x4b, 0x0f, 0xbe, - 0x0a, 0x55, 0x22, 0x01, 0xf8, 0x21, 0xfa, 0xf8, 0xae, 0x23, 0x29, 0xcd, 0x5c, 0x36, 0x63, 0x18, - 0x1b, 0x4c, 0xfa, 0x9e, 0x6e, 0x70, 0x55, 0x35, 0x78, 0x1a, 0xcf, 0xdf, 0x82, 0x5b, 0x84, 0x9b, - 0xda, 0x24, 0x71, 0xa9, 0xa1, 0xd0, 0xf9, 0x2f, 0xd1, 0x61, 0x19, 0x59, 0x7d, 0xb1, 0xef, 0x0c, - 0x1d, 0x59, 0xaf, 0xdd, 0xcf, 0x3c, 0x28, 0x98, 0x09, 0x82, 0xbf, 0x06, 0x6b, 0xb6, 0x38, 0xb1, - 0xc6, 0xae, 0xec, 0x8a, 0xe1, 0xc8, 0xb5, 0xa4, 0x68, 0xd9, 0xa4, 0xa3, 0x15, 0x73, 0xf6, 0x05, - 0x7f, 0x1d, 0x6e, 0x68, 0x64, 0x3b, 0x3e, 0x1c, 0x68, 0xd9, 0x94, 0x85, 0xab, 0x98, 0xf3, 0x5e, - 0x19, 0x07, 0xda, 0x0c, 0xe3, 0x06, 0x8a, 0x71, 0x6a, 0x64, 0x40, 0x43, 0xa9, 0x76, 0xe4, 0xc7, - 0x96, 0xeb, 0x8a, 0xe0, 0x52, 0x05, 0xb9, 0x9f, 0x58, 0xde, 0xb1, 0xe5, 0xb1, 0x1c, 0xed, 0xb1, - 0x96, 0x2b, 0x3c, 0xdb, 0x0a, 0xd4, 0x8e, 0xfc, 0x98, 0x36, 0xf4, 0x82, 0xf1, 0x00, 0xf2, 0x34, - 0xa4, 0x15, 0x28, 0xa8, 0x28, 0x89, 0x22, 0x66, 0x1d, 0x21, 0x91, 0x45, 0xde, 0xc7, 0xe5, 0xc7, - 0xb2, 0x8d, 0x9f, 0xe5, 0xa0, 0x1c, 0x0d, 0x5e, 0x74, 0x14, 0x90, 0x49, 0x8e, 0x02, 0xd0, 0x8d, - 0x0b, 0x9f, 0x3a, 0xa1, 0x73, 0xac, 0xdd, 0xd2, 0xb2, 0x99, 0x20, 0xd0, 0x13, 0x3a, 0x77, 0x6c, - 0x39, 0xa0, 0x35, 0x53, 0x30, 0x15, 0xc0, 0x1f, 0xc0, 0xaa, 0x8d, 0xe3, 0xe0, 0xf5, 0xdc, 0xb1, - 0x2d, 0xba, 0xb8, 0x8b, 0xaa, 0x34, 0xc1, 0x34, 0x9a, 0xff, 0x00, 0x40, 0x3a, 0x43, 0xb1, 0xeb, - 0x07, 0x43, 0x4b, 0xea, 0xd8, 0xe0, 0xdb, 0x2f, 0xa7, 0xd5, 0x1b, 0xdd, 0x58, 0x80, 0x99, 0x12, - 0x86, 0xa2, 0xf1, 0x6b, 0x5a, 0x74, 0xe9, 0x0b, 0x89, 0xde, 0x89, 0x05, 0x98, 0x29, 0x61, 0xc6, - 0xaf, 0x02, 0x24, 0x6f, 0xf8, 0x6d, 0xe0, 0x07, 0xbe, 0x27, 0x07, 0x9b, 0xc7, 0xc7, 0xc1, 0x96, - 0x38, 0xf1, 0x03, 0xb1, 0x63, 0xe1, 0xb6, 0x76, 0x0b, 0xd6, 0x62, 0xfc, 0xe6, 0x89, 0x14, 0x01, - 0xa2, 0x69, 0xe8, 0x3b, 0x03, 0x3f, 0x90, 0xca, 0xb7, 0xa2, 0xc7, 0x27, 0x1d, 0x96, 0xc3, 0xad, - 0xb4, 0xd5, 0x69, 0xb3, 0xbc, 0xf1, 0x00, 0x20, 0xe9, 0x12, 0xc5, 0x20, 0xf4, 0xf4, 0xc6, 0x23, - 0x1d, 0x91, 0x10, 0xf4, 0xe8, 0x2d, 0x96, 0x69, 0xfc, 0x51, 0x0e, 0xf2, 0x68, 0x6a, 0x30, 0xfc, - 0x4a, 0xaf, 0x0b, 0x35, 0x7d, 0x69, 0xd4, 0x17, 0x33, 0x90, 0x28, 0x3b, 0x6d, 0x20, 0xdf, 0x83, - 0x6a, 0x6f, 0x1c, 0x4a, 0x7f, 0x48, 0xbb, 0x83, 0x3e, 0x47, 0xb9, 0x3d, 0x93, 0xc8, 0x78, 0x6a, - 0xb9, 0x63, 0x61, 0xa6, 0x49, 0xf9, 0xdb, 0x50, 0x3c, 0x51, 0x13, 0xa1, 0x52, 0x19, 0xbf, 0x74, - 0xc5, 0x06, 0xa2, 0x07, 0x5b, 0x13, 0x63, 0xbf, 0x9c, 0x19, 0x25, 0x4a, 0xa3, 0xf4, 0x46, 0x50, - 0x8c, 0x37, 0x82, 0x5f, 0x85, 0x15, 0x81, 0x6e, 0xc5, 0x91, 0x6b, 0xf5, 0xc4, 0x50, 0x78, 0xd1, - 0xcc, 0xbf, 0xf5, 0x12, 0x3d, 0x26, 0xbf, 0x84, 0xba, 0x3d, 0x25, 0xcb, 0xf8, 0xba, 0x5e, 0xa4, - 0x25, 0xc8, 0x6d, 0x86, 0x3d, 0x1d, 0x76, 0x8b, 0xb0, 0xa7, 0x7c, 0xfa, 0x6d, 0xea, 0x30, 0xcb, - 0x1a, 0x6f, 0x40, 0x25, 0x96, 0xc1, 0x19, 0x2c, 0x1f, 0xfa, 0xb2, 0x33, 0x12, 0x3d, 0xe7, 0xc4, - 0x11, 0xb6, 0x4a, 0x24, 0x74, 0xa4, 0x15, 0x48, 0x95, 0xb9, 0x6a, 0x7a, 0x36, 0xcb, 0x36, 0x7e, - 0xbf, 0x0c, 0x45, 0x65, 0xf1, 0x75, 0x97, 0x2a, 0x71, 0x97, 0xbe, 0x07, 0x65, 0x7f, 0x24, 0x02, - 0x4b, 0xfa, 0x81, 0x4e, 0x17, 0xbc, 0xfd, 0x32, 0x3b, 0xc8, 0x46, 0x5b, 0x33, 0x9b, 0xb1, 0x98, - 0x69, 0x7d, 0xc9, 0xce, 0xea, 0xcb, 0x3a, 0xb0, 0x68, 0xb3, 0x38, 0x0a, 0x90, 0x4f, 0x5e, 0xea, - 0xe0, 0x6f, 0x06, 0xcf, 0xbb, 0x50, 0xe9, 0xf9, 0x9e, 0xed, 0xc4, 0xa9, 0x83, 0x95, 0x47, 0xef, - 0xbc, 0x54, 0x0b, 0xb7, 0x23, 0x6e, 0x33, 0x11, 0xc4, 0x5f, 0x83, 0xc2, 0x19, 0x2a, 0x12, 0x69, - 0xcc, 0xd5, 0x6a, 0xa6, 0x88, 0xf8, 0xa7, 0x50, 0xfd, 0xe1, 0xd8, 0xe9, 0x9d, 0xb6, 0xd3, 0xa9, - 0xa9, 0xf7, 0x5e, 0xaa, 0x15, 0xdf, 0x4b, 0xf8, 0xcd, 0xb4, 0xb0, 0x94, 0xf2, 0x96, 0xfe, 0x0c, - 0xca, 0x5b, 0x9e, 0x55, 0x5e, 0x13, 0x6a, 0x9e, 0x08, 0xa5, 0xb0, 0x77, 0xb5, 0x83, 0x00, 0x5f, - 0xc0, 0x41, 0x98, 0x14, 0x61, 0x7c, 0x15, 0xca, 0xd1, 0x84, 0xf3, 0x22, 0x64, 0x0f, 0xd1, 0x13, - 0x2f, 0x42, 0xb6, 0x1d, 0x28, 0x6d, 0xdb, 0x44, 0x6d, 0x33, 0xfe, 0x24, 0x03, 0x95, 0x78, 0xd0, - 0x27, 0x53, 0x5c, 0xcd, 0x1f, 0x8e, 0x2d, 0x97, 0x65, 0x28, 0x46, 0xf3, 0xa5, 0x82, 0xc8, 0x52, - 0x3d, 0xa6, 0x83, 0xde, 0x80, 0xe5, 0x68, 0x5f, 0x12, 0x61, 0xc8, 0xf2, 0x9c, 0xc3, 0x8a, 0x46, - 0xb7, 0x03, 0x45, 0x5a, 0xc0, 0x10, 0x0e, 0xdf, 0x46, 0x88, 0xa2, 0xda, 0xc6, 0x4e, 0x85, 0x0a, - 0x51, 0x0f, 0x7d, 0x49, 0x40, 0x19, 0x1b, 0xd5, 0xf2, 0x58, 0x05, 0xbf, 0x79, 0xe8, 0xcb, 0x96, - 0xc7, 0x20, 0x89, 0x09, 0xaa, 0xd1, 0xe7, 0x09, 0x5a, 0xa6, 0x88, 0xc3, 0x75, 0x5b, 0x1e, 0xab, - 0xe9, 0x17, 0x0a, 0x5a, 0x41, 0x89, 0xcd, 0x0b, 0xab, 0x87, 0xec, 0xab, 0x7c, 0x05, 0x00, 0x79, - 0x34, 0xcc, 0x70, 0x49, 0x36, 0x2f, 0x9c, 0x50, 0x86, 0x6c, 0xcd, 0xf8, 0xf7, 0x19, 0xa8, 0xa6, - 0x26, 0x18, 0x63, 0x0e, 0x22, 0x44, 0x3b, 0xae, 0x42, 0x90, 0x1f, 0xe0, 0x30, 0x06, 0x76, 0x64, - 0xa3, 0xbb, 0x3e, 0x3e, 0x66, 0xf1, 0x7b, 0x5d, 0x7f, 0xe8, 0x07, 0x81, 0x7f, 0xae, 0xf6, 0xdb, - 0x7d, 0x2b, 0x94, 0xcf, 0x84, 0x38, 0x65, 0x79, 0xec, 0xea, 0xf6, 0x38, 0x08, 0x84, 0xa7, 0x10, - 0x05, 0x6a, 0x9c, 0xb8, 0x50, 0x50, 0x11, 0x85, 0x22, 0x31, 0x6d, 0x02, 0xac, 0x84, 0x86, 0x40, - 0x53, 0x2b, 0x4c, 0x19, 0x09, 0x90, 0x5c, 0x81, 0x15, 0x0c, 0xeb, 0x55, 0x58, 0xdc, 0x3e, 0xd9, - 0xb1, 0x2e, 0xc3, 0xcd, 0xbe, 0xcf, 0x60, 0x1a, 0x79, 0xe8, 0x9f, 0xb3, 0x6a, 0x63, 0x0c, 0x90, - 0x04, 0x02, 0x18, 0x00, 0xa1, 0x42, 0xc4, 0x89, 0x6b, 0x0d, 0xf1, 0x36, 0x00, 0x3e, 0x11, 0x65, - 0x14, 0x05, 0xbd, 0x84, 0x77, 0x46, 0x7c, 0x66, 0x4a, 0x44, 0xe3, 0xaf, 0x42, 0x25, 0x7e, 0x81, - 0x71, 0x2f, 0xf9, 0x51, 0xf1, 0x67, 0x23, 0x10, 0x9d, 0x02, 0xc7, 0xb3, 0xc5, 0x05, 0xd9, 0x95, - 0x82, 0xa9, 0x00, 0x6c, 0xe5, 0xc0, 0xb1, 0x6d, 0xe1, 0x45, 0xc7, 0x0b, 0x0a, 0x9a, 0x77, 0x96, - 0x9b, 0x9f, 0x7b, 0x96, 0xdb, 0xf8, 0x35, 0xa8, 0xa6, 0x22, 0x95, 0x2b, 0xbb, 0x9d, 0x6a, 0x58, - 0x76, 0xb2, 0x61, 0x77, 0xa1, 0x12, 0xd5, 0x0f, 0x84, 0xb4, 0x7b, 0x55, 0xcc, 0x04, 0xd1, 0xf8, - 0x57, 0x59, 0x74, 0x9f, 0xb0, 0x6b, 0xd3, 0xd1, 0xc5, 0x2e, 0x14, 0x31, 0xd4, 0x1e, 0x47, 0x07, - 0xe1, 0x0b, 0x2e, 0xd0, 0x0e, 0xf1, 0xec, 0x2d, 0x99, 0x9a, 0x9b, 0x7f, 0x00, 0x39, 0x69, 0xf5, - 0x75, 0x76, 0xee, 0x1b, 0x8b, 0x09, 0xe9, 0x5a, 0xfd, 0xbd, 0x25, 0x13, 0xf9, 0xf8, 0x3e, 0x94, - 0x7b, 0x3a, 0xa1, 0xa2, 0x8d, 0xe2, 0x82, 0x01, 0x40, 0x94, 0x86, 0xd9, 0x5b, 0x32, 0x63, 0x09, - 0xfc, 0xbb, 0x90, 0x47, 0x97, 0x46, 0xd7, 0x0b, 0x2c, 0x18, 0xd8, 0xe0, 0x72, 0xd9, 0x5b, 0x32, - 0x89, 0x73, 0xab, 0x04, 0x05, 0xb2, 0xc1, 0x8d, 0x3a, 0x14, 0x55, 0x5f, 0xa7, 0x47, 0xae, 0x71, - 0x07, 0x72, 0x5d, 0xab, 0x8f, 0x6e, 0xa5, 0x63, 0x87, 0x3a, 0x3e, 0xc7, 0xc7, 0xc6, 0xd7, 0x92, - 0xe4, 0x50, 0x3a, 0xef, 0x98, 0x99, 0xc8, 0x3b, 0x36, 0x8a, 0x90, 0xc7, 0x2f, 0x36, 0xee, 0x5e, - 0xe7, 0xa2, 0x36, 0xfe, 0x67, 0x16, 0xbd, 0x59, 0x29, 0x2e, 0xe6, 0xe6, 0x54, 0x3f, 0x86, 0xca, - 0x28, 0xf0, 0x7b, 0x22, 0x0c, 0xfd, 0x40, 0xbb, 0x3f, 0xaf, 0xbd, 0xf8, 0xd8, 0x72, 0xe3, 0x28, - 0xe2, 0x31, 0x13, 0x76, 0xe3, 0xef, 0x64, 0xa1, 0x12, 0xbf, 0x50, 0x4e, 0xb4, 0x14, 0x17, 0x2a, - 0x7f, 0x76, 0x20, 0x82, 0xa1, 0xe5, 0xd8, 0xca, 0x7a, 0x6c, 0x0f, 0xac, 0xc8, 0xc3, 0xfb, 0x81, - 0x3f, 0x96, 0xe3, 0x63, 0xa1, 0xf2, 0x26, 0x4f, 0x9d, 0xa1, 0xf0, 0x59, 0x9e, 0x4e, 0x2c, 0x50, - 0xb1, 0x7b, 0xae, 0x3f, 0xb6, 0x59, 0x01, 0xe1, 0xc7, 0xb4, 0xbd, 0x1d, 0x58, 0xa3, 0x50, 0xd9, - 0xcc, 0x03, 0x27, 0xf0, 0x59, 0x09, 0x99, 0x76, 0x9d, 0xfe, 0xd0, 0x62, 0x65, 0x14, 0xd6, 0x3d, - 0x77, 0x24, 0x1a, 0xe1, 0x0a, 0x5f, 0x83, 0x5a, 0x7b, 0x24, 0xbc, 0x8e, 0x0c, 0x84, 0x90, 0x07, - 0xd6, 0x48, 0x25, 0xd2, 0x4c, 0x61, 0xdb, 0x8e, 0x54, 0xf6, 0x73, 0xd7, 0xea, 0x89, 0x63, 0xdf, - 0x3f, 0x65, 0xcb, 0x68, 0x68, 0x5a, 0x5e, 0x28, 0xad, 0x7e, 0x60, 0x0d, 0x95, 0x0d, 0xed, 0x0a, - 0x57, 0x10, 0xb4, 0x42, 0xdf, 0x76, 0xe4, 0x60, 0x7c, 0xfc, 0x18, 0x83, 0x8d, 0x55, 0x75, 0xb8, - 0x61, 0x8b, 0x91, 0x40, 0x1b, 0xba, 0x0c, 0xe5, 0x2d, 0xc7, 0x75, 0x8e, 0x1d, 0xd7, 0x61, 0x6b, - 0x48, 0xda, 0xbc, 0xe8, 0x59, 0xae, 0x63, 0x07, 0xd6, 0x39, 0xe3, 0x8d, 0x35, 0x58, 0x9d, 0x3a, - 0x9e, 0x6d, 0x94, 0x74, 0xfc, 0xd2, 0xa8, 0x41, 0x35, 0x75, 0xe0, 0xd6, 0x78, 0x05, 0xca, 0xd1, - 0x71, 0x1c, 0xc6, 0x79, 0x4e, 0xa8, 0x12, 0x89, 0x7a, 0xc6, 0x63, 0xb8, 0xf1, 0x87, 0x19, 0x28, - 0xaa, 0x23, 0x4d, 0xbe, 0x15, 0x97, 0x20, 0x64, 0x16, 0x38, 0xff, 0x52, 0x4c, 0xfa, 0xf4, 0x30, - 0xae, 0x43, 0xb8, 0x09, 0x05, 0x97, 0x02, 0x3a, 0x6d, 0x8b, 0x08, 0x48, 0x99, 0x8e, 0x5c, 0xda, - 0x74, 0x18, 0x9b, 0xf1, 0x89, 0x65, 0x94, 0xbc, 0x22, 0x17, 0xaf, 0x1b, 0x08, 0xa1, 0x12, 0x53, - 0x14, 0x8f, 0x65, 0xc9, 0xf0, 0xfb, 0xc3, 0x91, 0xd5, 0x93, 0x84, 0xa0, 0x2d, 0x11, 0x2d, 0x23, - 0xcb, 0x1b, 0x27, 0x50, 0x3e, 0xf2, 0xc3, 0xe9, 0x8d, 0xb5, 0x04, 0xb9, 0xae, 0x3f, 0x52, 0x6e, - 0xe2, 0x96, 0x2f, 0xc9, 0x4d, 0x54, 0xfb, 0xe8, 0x89, 0x54, 0x9a, 0x61, 0x3a, 0xfd, 0x81, 0x54, - 0x31, 0x5c, 0xcb, 0xf3, 0x44, 0xc0, 0x0a, 0x38, 0x11, 0xa6, 0x18, 0xa1, 0xf3, 0xc9, 0x8a, 0x38, - 0xf4, 0x84, 0xdf, 0x75, 0x82, 0x50, 0xb2, 0x92, 0xd1, 0xc2, 0x2d, 0xd1, 0xe9, 0xd3, 0x4e, 0x46, - 0x0f, 0x24, 0x6a, 0x09, 0x9b, 0x46, 0xe0, 0xb6, 0xf0, 0x50, 0x51, 0xe8, 0x70, 0x4c, 0x55, 0xa7, - 0xd0, 0x07, 0xb2, 0xb8, 0x0d, 0x11, 0xfc, 0xf1, 0x38, 0x94, 0xce, 0xc9, 0x25, 0xcb, 0x19, 0xcf, - 0xa0, 0x36, 0x51, 0xc7, 0xc2, 0x6f, 0x02, 0x9b, 0x40, 0x60, 0xd3, 0x97, 0xf8, 0x1d, 0xb8, 0x31, - 0x81, 0x3d, 0x70, 0x6c, 0x9b, 0xb2, 0x84, 0xd3, 0x2f, 0xa2, 0x0e, 0x6e, 0x55, 0xa0, 0xd4, 0x53, - 0xb3, 0x63, 0x1c, 0x41, 0x8d, 0xa6, 0xeb, 0x40, 0x48, 0xab, 0xed, 0xb9, 0x97, 0x7f, 0xe6, 0x62, - 0x23, 0xe3, 0x9b, 0x50, 0xa0, 0xac, 0x3e, 0x2e, 0xfa, 0x93, 0xc0, 0x1f, 0x92, 0xac, 0x82, 0x49, - 0xcf, 0x28, 0x5d, 0xfa, 0x7a, 0xce, 0xb3, 0xd2, 0x37, 0x3e, 0x2f, 0x43, 0x69, 0xb3, 0xd7, 0xf3, - 0xc7, 0x9e, 0x9c, 0xf9, 0xf2, 0xdb, 0x50, 0xec, 0xf9, 0xde, 0x89, 0xd3, 0xd7, 0x46, 0x75, 0xda, - 0xbd, 0xd3, 0x7c, 0xa8, 0x68, 0x27, 0x4e, 0xdf, 0xd4, 0xc4, 0xc8, 0xa6, 0x37, 0x85, 0xc2, 0xb5, - 0x6c, 0xca, 0x32, 0xc6, 0x7b, 0xc0, 0x43, 0xc8, 0x3b, 0xde, 0x89, 0xaf, 0x2b, 0x03, 0xbf, 0x7c, - 0x05, 0x13, 0x95, 0xc7, 0x11, 0x61, 0xe3, 0xbf, 0x64, 0xa0, 0xa8, 0x3e, 0xcd, 0x5f, 0x81, 0x15, - 0xe1, 0xe1, 0x22, 0x8a, 0xec, 0xb1, 0x5e, 0x3d, 0x53, 0x58, 0xf4, 0x3c, 0x35, 0x46, 0x1c, 0x8f, - 0xfb, 0x3a, 0x6a, 0x4f, 0xa3, 0xf8, 0x7b, 0x70, 0x47, 0x81, 0x47, 0x81, 0x08, 0x84, 0x2b, 0xac, - 0x50, 0x6c, 0x0f, 0x2c, 0xcf, 0x13, 0xae, 0xde, 0x9d, 0xaf, 0x7a, 0xcd, 0x0d, 0x58, 0x56, 0xaf, - 0x3a, 0x23, 0xab, 0x27, 0x42, 0x7d, 0x52, 0x34, 0x81, 0xe3, 0xdf, 0x82, 0x02, 0x15, 0x4e, 0xd6, - 0xed, 0xeb, 0xa7, 0x52, 0x51, 0x35, 0xfc, 0x78, 0xfb, 0xd8, 0x04, 0x50, 0xc3, 0x84, 0x91, 0x93, - 0x5e, 0xf5, 0x5f, 0xb9, 0x76, 0x5c, 0x29, 0x4c, 0x4b, 0x31, 0x61, 0xfb, 0x6c, 0xe1, 0x0a, 0xaa, - 0x70, 0xc3, 0xed, 0x2d, 0x4b, 0x39, 0xf9, 0x09, 0x5c, 0xe3, 0x37, 0xf2, 0x90, 0xc7, 0x11, 0x46, - 0xe2, 0x81, 0x3f, 0x14, 0x71, 0x66, 0x52, 0xf9, 0x0b, 0x13, 0x38, 0xf4, 0x4f, 0x2c, 0x75, 0x38, - 0x1c, 0x93, 0x29, 0xa3, 0x31, 0x8d, 0x46, 0xca, 0x51, 0xe0, 0x9f, 0x38, 0x6e, 0x42, 0xa9, 0x3d, - 0x99, 0x29, 0x34, 0x7f, 0x07, 0x6e, 0x0f, 0xad, 0xe0, 0x54, 0x48, 0x5a, 0xdd, 0xcf, 0xfc, 0xe0, - 0x34, 0xc4, 0x91, 0x6b, 0xd9, 0x3a, 0xa5, 0x75, 0xc5, 0x5b, 0x34, 0x9c, 0xb6, 0x38, 0x73, 0x88, - 0xb2, 0xac, 0x0a, 0x22, 0x23, 0x18, 0x95, 0xc3, 0x52, 0x43, 0xd3, 0xd1, 0xb2, 0xf4, 0x69, 0xc3, - 0x24, 0x16, 0x9d, 0x20, 0x55, 0x28, 0x12, 0xb6, 0x6c, 0xca, 0xb2, 0x55, 0xcc, 0x04, 0x81, 0xaa, - 0x43, 0x1f, 0x7b, 0xaa, 0xcc, 0x63, 0x4d, 0x45, 0x86, 0x29, 0x14, 0x52, 0x48, 0xd1, 0x1b, 0x44, - 0x1f, 0x51, 0x29, 0xb0, 0x34, 0x8a, 0xdf, 0x03, 0xe8, 0x5b, 0x52, 0x9c, 0x5b, 0x97, 0x4f, 0x02, - 0xb7, 0x2e, 0x54, 0xda, 0x3c, 0xc1, 0x60, 0x6c, 0xe9, 0xfa, 0x3d, 0xcb, 0xed, 0x48, 0x3f, 0xb0, - 0xfa, 0xe2, 0xc8, 0x92, 0x83, 0x7a, 0x5f, 0xc5, 0x96, 0xd3, 0x78, 0xec, 0xb1, 0x74, 0x86, 0xe2, - 0x53, 0xdf, 0x13, 0xf5, 0x81, 0xea, 0x71, 0x04, 0x63, 0x4b, 0x2c, 0xcf, 0x72, 0x2f, 0xa5, 0xd3, - 0xc3, 0xbe, 0x38, 0xaa, 0x25, 0x29, 0x14, 0xf6, 0xd5, 0x13, 0xf2, 0xdc, 0x0f, 0x4e, 0x5b, 0x76, - 0xfd, 0x33, 0xd5, 0xd7, 0x18, 0x61, 0xb4, 0x01, 0x12, 0x25, 0x42, 0xcb, 0xbc, 0x49, 0xa9, 0x7d, - 0xb6, 0x84, 0x4e, 0xf7, 0x91, 0xf0, 0x6c, 0xc7, 0xeb, 0xef, 0x68, 0xbd, 0x61, 0x19, 0x44, 0x52, - 0xd8, 0x2e, 0xec, 0x18, 0x49, 0x1b, 0x3c, 0x41, 0xc2, 0x66, 0x39, 0xe3, 0x7f, 0x67, 0xa0, 0x9a, - 0x3a, 0xc9, 0xfe, 0x73, 0x3c, 0x7d, 0xc7, 0x1d, 0x73, 0x68, 0xf5, 0x05, 0x0e, 0xa8, 0xd2, 0xa9, - 0x18, 0xc6, 0xe1, 0xd6, 0x07, 0xed, 0xf8, 0x56, 0x05, 0xe9, 0x29, 0xcc, 0x17, 0x3a, 0x79, 0x37, - 0x1e, 0xe9, 0x4c, 0x47, 0x15, 0x4a, 0x4f, 0xbc, 0x53, 0xcf, 0x3f, 0xf7, 0xd4, 0x56, 0x48, 0xe5, - 0x14, 0x13, 0x07, 0x43, 0x51, 0xc5, 0x43, 0xce, 0xf8, 0xe7, 0xf9, 0xa9, 0xca, 0xa3, 0x26, 0x14, - 0x95, 0x7b, 0x4d, 0x9e, 0xdf, 0x6c, 0xa9, 0x48, 0x9a, 0x58, 0x1f, 0x42, 0xa4, 0x50, 0xa6, 0x66, - 0x46, 0xbf, 0x37, 0x2e, 0xaf, 0xcb, 0xce, 0x3d, 0x2c, 0x99, 0x10, 0x14, 0x99, 0xc1, 0x89, 0x0a, - 0xd3, 0x58, 0x42, 0xe3, 0x6f, 0x65, 0xe0, 0xe6, 0x3c, 0x92, 0x74, 0x1d, 0x6e, 0x66, 0xb2, 0x0e, - 0xb7, 0x33, 0x55, 0xd7, 0x9a, 0xa5, 0xde, 0x3c, 0x7c, 0xc9, 0x46, 0x4c, 0x56, 0xb9, 0x1a, 0x3f, - 0xc9, 0xc0, 0xda, 0x4c, 0x9f, 0x53, 0x2e, 0x03, 0x40, 0x51, 0x69, 0x96, 0xaa, 0x57, 0x89, 0x2b, - 0x08, 0x54, 0x06, 0x98, 0x36, 0xd3, 0x50, 0x1d, 0xc9, 0xea, 0x4a, 0x5e, 0xe5, 0x56, 0xe2, 0xac, - 0xa1, 0xad, 0xee, 0x0b, 0x56, 0xc0, 0xbd, 0x5e, 0xf9, 0x33, 0x1a, 0x53, 0x54, 0xae, 0x9f, 0x4a, - 0x53, 0xb3, 0x12, 0xd5, 0xc1, 0x8c, 0x47, 0xae, 0xd3, 0x43, 0xb0, 0xcc, 0x1b, 0x70, 0x5b, 0x95, - 0x73, 0xeb, 0x30, 0xeb, 0xa4, 0x3b, 0x70, 0x68, 0x71, 0xb0, 0x8a, 0x61, 0xc2, 0x8d, 0x39, 0x7d, - 0xa2, 0x56, 0x3e, 0xd5, 0x2d, 0x5e, 0x01, 0xd8, 0x79, 0x1a, 0xb5, 0x93, 0x65, 0x38, 0x87, 0x95, - 0x9d, 0xa7, 0x69, 0x81, 0x7a, 0xbd, 0x3c, 0x45, 0x4b, 0x12, 0xb2, 0x9c, 0xf1, 0x9b, 0x99, 0xe8, - 0x6c, 0xba, 0xf1, 0x57, 0xa0, 0xa6, 0xda, 0x78, 0x64, 0x5d, 0xba, 0xbe, 0x65, 0xf3, 0x26, 0xac, - 0x84, 0xf1, 0x1d, 0x83, 0xd4, 0x76, 0x30, 0xbd, 0xcd, 0x76, 0x26, 0x88, 0xcc, 0x29, 0xa6, 0x28, - 0x5a, 0xc8, 0x26, 0x09, 0x6d, 0x4e, 0x71, 0x8f, 0x45, 0xab, 0x6c, 0x99, 0x22, 0x19, 0xcb, 0xf8, - 0x16, 0xac, 0x91, 0xf1, 0x52, 0x8d, 0x51, 0x9e, 0x28, 0xea, 0x83, 0xb2, 0xbb, 0x3b, 0x91, 0x3e, - 0x68, 0xd0, 0xf8, 0x83, 0x22, 0x40, 0x92, 0xbc, 0x9f, 0xb3, 0xcc, 0xe7, 0x9d, 0x45, 0xcf, 0x1c, - 0xa5, 0xe5, 0x5e, 0xfa, 0x28, 0xed, 0xbd, 0xd8, 0x21, 0x56, 0x59, 0xd4, 0xe9, 0xba, 0xda, 0xa4, - 0x4d, 0xd3, 0x6e, 0xf0, 0x44, 0xa9, 0x46, 0x61, 0xba, 0x54, 0xe3, 0xfe, 0x6c, 0x5d, 0xd7, 0x94, - 0xfd, 0x49, 0x82, 0xf7, 0xd2, 0x44, 0xf0, 0xde, 0x80, 0x72, 0x20, 0x2c, 0xdb, 0xf7, 0xdc, 0xcb, - 0xe8, 0xc4, 0x26, 0x82, 0xf9, 0x9b, 0x50, 0x90, 0x74, 0x4d, 0xa2, 0x4c, 0xcb, 0xe5, 0x05, 0x13, - 0xa7, 0x68, 0xd1, 0x98, 0x39, 0xa1, 0x2e, 0xc6, 0x52, 0x3b, 0x58, 0xd9, 0x4c, 0x61, 0xf8, 0x06, - 0x70, 0x07, 0x23, 0x19, 0xd7, 0x15, 0xf6, 0xd6, 0xe5, 0x8e, 0x3a, 0x48, 0xa1, 0x5d, 0xb3, 0x6c, - 0xce, 0x79, 0x13, 0xcd, 0xff, 0x72, 0x32, 0xff, 0xd4, 0xe4, 0x33, 0x27, 0xc4, 0x9e, 0xd6, 0xc8, - 0x39, 0x88, 0x61, 0xdc, 0x97, 0xa3, 0x35, 0xaa, 0xc6, 0x92, 0xb4, 0x37, 0x39, 0x8d, 0xbc, 0xe2, - 0xad, 0xf1, 0x8f, 0xb3, 0x71, 0xe0, 0x50, 0x81, 0xc2, 0xb1, 0x15, 0x3a, 0x3d, 0x15, 0x14, 0xea, - 0x8d, 0x5f, 0x05, 0x0f, 0xd2, 0xb7, 0x7d, 0x96, 0xc5, 0x58, 0x20, 0x14, 0xe8, 0xf5, 0xaf, 0x00, - 0x24, 0x57, 0x47, 0x58, 0x1e, 0xd7, 0x66, 0x34, 0xdf, 0xaa, 0xa6, 0x82, 0x58, 0x29, 0x8f, 0x64, - 0xc7, 0xd5, 0x6a, 0x14, 0x11, 0x92, 0xed, 0x67, 0x65, 0xa4, 0xf1, 0x7c, 0x29, 0x54, 0x16, 0x8d, - 0xb4, 0x93, 0x01, 0x8a, 0x89, 0x6a, 0xa1, 0x59, 0x15, 0x9d, 0xf3, 0x48, 0xa8, 0x4a, 0x7d, 0x85, - 0x14, 0xb2, 0x2c, 0xe3, 0xea, 0x9c, 0x7c, 0xc1, 0x6a, 0xd8, 0xa2, 0xe4, 0x46, 0x0a, 0x5b, 0x41, - 0xa9, 0x16, 0x9d, 0xf4, 0xaf, 0xe2, 0xe3, 0x19, 0x9d, 0xff, 0x33, 0xfc, 0x2a, 0xc6, 0xff, 0x6c, - 0x0d, 0x5b, 0x16, 0xbb, 0x06, 0x8c, 0x63, 0xec, 0x31, 0xb2, 0x30, 0x10, 0x70, 0x46, 0x96, 0x27, - 0xd9, 0x0d, 0xec, 0xea, 0xc8, 0x3e, 0x61, 0x37, 0x8d, 0xdf, 0x4d, 0x6a, 0x41, 0x5f, 0x8f, 0xdd, - 0xef, 0x45, 0x14, 0x18, 0x1d, 0xf4, 0x79, 0xab, 0xa9, 0x09, 0x6b, 0x81, 0xf8, 0xe1, 0xd8, 0x99, - 0x28, 0x74, 0xce, 0x5d, 0x7f, 0x04, 0x3f, 0xcb, 0x61, 0x9c, 0xc1, 0x5a, 0x04, 0x3c, 0x73, 0xe4, - 0x80, 0xd2, 0x19, 0xfc, 0xcd, 0x54, 0x25, 0x76, 0x66, 0xee, 0x0d, 0x96, 0x58, 0x64, 0x52, 0x79, - 0x1d, 0xa7, 0xab, 0xb3, 0x0b, 0xa4, 0xab, 0x8d, 0xff, 0x55, 0x4c, 0x65, 0x34, 0x54, 0x40, 0x62, - 0xc7, 0x01, 0xc9, 0xec, 0x21, 0x5c, 0x92, 0x81, 0xce, 0xbe, 0x4c, 0x06, 0x7a, 0xde, 0x81, 0xf6, - 0xfb, 0xe8, 0x1f, 0xd3, 0xda, 0x78, 0xba, 0x40, 0x76, 0x7d, 0x82, 0x96, 0x6f, 0xd1, 0x91, 0x9a, - 0xd5, 0x51, 0xd5, 0x16, 0x85, 0xb9, 0xf7, 0x22, 0xd2, 0x67, 0x67, 0x9a, 0xd2, 0x4c, 0x71, 0xa5, - 0x2c, 0x49, 0x71, 0x9e, 0x25, 0xc1, 0xd8, 0x50, 0xdb, 0x98, 0x18, 0x56, 0x87, 0x11, 0xea, 0x39, - 0x12, 0x4f, 0x47, 0xa9, 0x65, 0x73, 0x06, 0x8f, 0x1e, 0xd6, 0x70, 0xec, 0x4a, 0x47, 0xe7, 0xdb, - 0x15, 0x30, 0x7d, 0x71, 0xab, 0x32, 0x7b, 0x71, 0xeb, 0x43, 0x80, 0x50, 0xa0, 0xe6, 0xef, 0x38, - 0x3d, 0xa9, 0x6b, 0x32, 0xee, 0x5d, 0xd5, 0x37, 0x7d, 0x4a, 0x90, 0xe2, 0xc0, 0xf6, 0x0f, 0xad, - 0x8b, 0x6d, 0xf4, 0xb4, 0xf5, 0xe1, 0x71, 0x0c, 0x4f, 0xdb, 0xd7, 0x95, 0x59, 0xfb, 0xfa, 0x26, - 0x14, 0xc2, 0x9e, 0x3f, 0x12, 0x74, 0xf7, 0xe0, 0xea, 0xf9, 0xdd, 0xe8, 0x20, 0x91, 0xa9, 0x68, - 0x29, 0x6f, 0x86, 0x16, 0xc8, 0x0f, 0xe8, 0xd6, 0x41, 0xc5, 0x8c, 0xc0, 0x09, 0x1b, 0x77, 0x7b, - 0xd2, 0xc6, 0x35, 0x6c, 0x28, 0xea, 0x1c, 0xf8, 0x74, 0x20, 0x1c, 0x65, 0xcf, 0xb2, 0xa9, 0xec, - 0x59, 0x5c, 0xf9, 0x97, 0x4b, 0x57, 0xfe, 0x4d, 0x5d, 0x4c, 0x2a, 0xcc, 0x5c, 0x4c, 0x32, 0x3e, - 0x85, 0x02, 0xb5, 0x15, 0x1d, 0x04, 0x35, 0xcc, 0xca, 0x7f, 0xc4, 0x4e, 0xb1, 0x0c, 0xbf, 0x09, - 0x2c, 0x14, 0xe4, 0x60, 0x88, 0x8e, 0x35, 0x14, 0x64, 0x00, 0xb3, 0xbc, 0x0e, 0x37, 0x15, 0x6d, - 0x38, 0xf9, 0x86, 0xbc, 0x1c, 0xd7, 0x39, 0x0e, 0xac, 0xe0, 0x92, 0xe5, 0x8d, 0x0f, 0xe9, 0xf8, - 0x35, 0x52, 0xa8, 0x6a, 0x7c, 0x11, 0x4c, 0x99, 0x5c, 0x5b, 0x04, 0xb8, 0x53, 0xa8, 0x53, 0x73, - 0x1d, 0xfb, 0xa8, 0x5a, 0x22, 0x0a, 0x2e, 0x28, 0xdf, 0xb1, 0x9c, 0xde, 0x65, 0xff, 0xdc, 0xd6, - 0x9b, 0xb1, 0x95, 0x72, 0xd3, 0x26, 0x8b, 0x83, 0x32, 0x8b, 0x16, 0x07, 0x19, 0x9f, 0xc0, 0xaa, - 0x39, 0x69, 0xaf, 0xf9, 0x7b, 0x50, 0xf2, 0x47, 0x69, 0x39, 0x2f, 0xd2, 0xcb, 0x88, 0xdc, 0xf8, - 0x69, 0x06, 0x96, 0x5b, 0x9e, 0x14, 0x81, 0x67, 0xb9, 0xbb, 0xae, 0xd5, 0xe7, 0xef, 0x46, 0x56, - 0x6a, 0x7e, 0x6c, 0x9d, 0xa6, 0x9d, 0x34, 0x58, 0xae, 0xce, 0xf5, 0xf2, 0x5b, 0xb0, 0x26, 0x6c, - 0x47, 0xfa, 0x81, 0x72, 0x4e, 0xa3, 0x1a, 0xae, 0x9b, 0xc0, 0x14, 0xba, 0x43, 0x4b, 0xa2, 0xab, - 0xa6, 0xb9, 0x0e, 0x37, 0x27, 0xb0, 0x91, 0xe7, 0x99, 0xe5, 0x77, 0xa1, 0x9e, 0xec, 0x34, 0x3b, - 0xbe, 0x27, 0x5b, 0x9e, 0x2d, 0x2e, 0xc8, 0xcd, 0x61, 0x39, 0xe3, 0xb7, 0x4b, 0x91, 0x83, 0xf5, - 0x54, 0x57, 0x78, 0x05, 0xbe, 0x9f, 0xdc, 0x02, 0xd4, 0x50, 0xea, 0xb6, 0x69, 0x76, 0x81, 0xdb, - 0xa6, 0x1f, 0x26, 0x37, 0x06, 0xd5, 0x46, 0xf1, 0xb5, 0xb9, 0xbb, 0x0f, 0x15, 0xa6, 0x68, 0x97, - 0xba, 0x23, 0x52, 0xd7, 0x07, 0xdf, 0xd0, 0x71, 0x54, 0x7e, 0x11, 0x3f, 0x54, 0x1d, 0x98, 0xbf, - 0x3d, 0x5d, 0xdf, 0xbe, 0x58, 0x81, 0xd8, 0x8c, 0xab, 0x08, 0x2f, 0xed, 0x2a, 0x7e, 0x34, 0x15, - 0xb2, 0x94, 0xe7, 0xa6, 0x9b, 0xae, 0xb9, 0x84, 0xf7, 0x11, 0x94, 0x06, 0x4e, 0x28, 0xfd, 0x40, - 0x5d, 0x0c, 0x9d, 0xbd, 0xc8, 0x92, 0x1a, 0xad, 0x3d, 0x45, 0x48, 0xd5, 0x3c, 0x11, 0x17, 0xff, - 0x3e, 0xac, 0xd1, 0xc0, 0x1f, 0x25, 0x1e, 0x41, 0x58, 0xaf, 0xce, 0xad, 0xa2, 0x4a, 0x89, 0xda, - 0x9a, 0x62, 0x31, 0x67, 0x85, 0x34, 0xfa, 0x00, 0xc9, 0xfc, 0xcc, 0x58, 0xb1, 0x2f, 0x70, 0x31, - 0xf4, 0x36, 0x14, 0xc3, 0xf1, 0x71, 0x72, 0x28, 0xa4, 0xa1, 0xc6, 0x05, 0x34, 0x66, 0xbc, 0x83, - 0x23, 0x11, 0xa8, 0xe6, 0x5e, 0x7b, 0x3b, 0xf5, 0xc3, 0xf4, 0xc4, 0x2b, 0xe5, 0xbc, 0x7f, 0xc5, - 0xec, 0xc5, 0x92, 0x53, 0x1a, 0xd0, 0x78, 0x1b, 0xaa, 0xa9, 0x41, 0x45, 0xcb, 0x3c, 0xf6, 0x6c, - 0x3f, 0x4a, 0x71, 0xe2, 0xb3, 0xba, 0xd6, 0x63, 0x47, 0x49, 0x4e, 0x7a, 0x6e, 0x98, 0xc0, 0xa6, - 0x07, 0xf0, 0x9a, 0xb0, 0xf6, 0x6b, 0x50, 0x4b, 0xb9, 0x6b, 0x71, 0xfa, 0x6b, 0x12, 0x69, 0x9c, - 0xc1, 0x97, 0x53, 0xe2, 0x8e, 0x44, 0x30, 0x74, 0x42, 0xdc, 0x48, 0x54, 0xb8, 0x46, 0x99, 0x09, - 0x5b, 0x78, 0xd2, 0x91, 0x91, 0x05, 0x8d, 0x61, 0xfe, 0x2b, 0x50, 0x18, 0x89, 0x60, 0x18, 0x6a, - 0x2b, 0x3a, 0xad, 0x41, 0x73, 0xc5, 0x86, 0xa6, 0xe2, 0x31, 0xfe, 0x59, 0x06, 0xca, 0x07, 0x42, - 0x5a, 0xe8, 0x3b, 0xf0, 0x83, 0xa9, 0xaf, 0xcc, 0x1e, 0x64, 0x46, 0xa4, 0x1b, 0x3a, 0x80, 0xdc, - 0x68, 0x69, 0x7a, 0x0d, 0xef, 0x2d, 0x25, 0x0d, 0x6b, 0x6c, 0x41, 0x49, 0xa3, 0x1b, 0xef, 0xc2, - 0xea, 0x14, 0x25, 0x8d, 0x8b, 0xf2, 0xdb, 0x3b, 0x97, 0xc3, 0xa8, 0x9e, 0x66, 0xd9, 0x9c, 0x44, - 0x6e, 0x55, 0xa0, 0x34, 0x52, 0x0c, 0xc6, 0xbf, 0xbb, 0x45, 0x35, 0x1e, 0xce, 0x09, 0x06, 0xd2, - 0xf3, 0x76, 0xd6, 0x7b, 0x00, 0xb4, 0x35, 0xab, 0x4a, 0x00, 0x95, 0x92, 0x4c, 0x61, 0xf8, 0xfb, - 0x71, 0x2e, 0x39, 0x3f, 0xd7, 0xa9, 0x4a, 0x0b, 0x9f, 0x4e, 0x28, 0xd7, 0xa1, 0xe4, 0x84, 0xfb, - 0xb8, 0xb5, 0xe9, 0xfa, 0x98, 0x08, 0xe4, 0xdf, 0x81, 0xa2, 0x33, 0x1c, 0xf9, 0x81, 0xd4, 0xc9, - 0xe6, 0x6b, 0xa5, 0xb6, 0x88, 0x72, 0x6f, 0xc9, 0xd4, 0x3c, 0xc8, 0x2d, 0x2e, 0x88, 0xbb, 0xfc, - 0x62, 0xee, 0xe6, 0x45, 0xc4, 0xad, 0x78, 0xf8, 0xf7, 0xa0, 0xd6, 0x57, 0x15, 0x6b, 0x4a, 0xb0, - 0x36, 0x22, 0xdf, 0xb8, 0x4e, 0xc8, 0xe3, 0x34, 0xc3, 0xde, 0x92, 0x39, 0x29, 0x01, 0x45, 0xa2, - 0x03, 0x2f, 0x42, 0xd9, 0xf5, 0x3f, 0xf6, 0x1d, 0x8f, 0x02, 0xce, 0x17, 0x88, 0x34, 0xd3, 0x0c, - 0x28, 0x72, 0x42, 0x02, 0x7f, 0x07, 0x3d, 0x9e, 0x50, 0xea, 0xbb, 0xb9, 0xf7, 0xaf, 0x93, 0xd4, - 0x15, 0xa1, 0xbe, 0x55, 0x1b, 0x4a, 0x7e, 0x01, 0x8d, 0xd4, 0x22, 0xd1, 0x1f, 0xd9, 0x1c, 0x8d, - 0x02, 0x1f, 0xa3, 0xd6, 0x1a, 0x49, 0x7b, 0xe7, 0x3a, 0x69, 0x47, 0x57, 0x72, 0xef, 0x2d, 0x99, - 0xd7, 0xc8, 0xe6, 0x5d, 0x8c, 0xda, 0x74, 0x17, 0xf6, 0x85, 0x75, 0x16, 0xdd, 0xec, 0x5d, 0x5f, - 0x68, 0x14, 0x88, 0x63, 0x6f, 0xc9, 0x9c, 0x92, 0xc1, 0x7f, 0x0d, 0xd6, 0x26, 0xbe, 0x49, 0xb7, - 0x00, 0xd5, 0xbd, 0xdf, 0x6f, 0x2d, 0xdc, 0x0d, 0x64, 0xda, 0x5b, 0x32, 0x67, 0x25, 0xf1, 0x31, - 0x7c, 0x69, 0xb6, 0x4b, 0x3b, 0xa2, 0xe7, 0x3a, 0x9e, 0xd0, 0x57, 0x84, 0xdf, 0x7e, 0xb9, 0xd1, - 0xd2, 0xcc, 0x7b, 0x4b, 0xe6, 0xd5, 0x92, 0xf9, 0x5f, 0x83, 0xbb, 0xa3, 0xb9, 0x26, 0x46, 0x99, - 0x2e, 0x7d, 0xc3, 0xf8, 0xbd, 0x05, 0xbf, 0x3c, 0xc3, 0xbf, 0xb7, 0x64, 0x5e, 0x2b, 0x1f, 0x7d, - 0x67, 0x8a, 0x8e, 0x75, 0x61, 0xad, 0x02, 0xf8, 0x5d, 0xa8, 0x58, 0x3d, 0x77, 0x4f, 0x58, 0x76, - 0x9c, 0x3d, 0x4f, 0x10, 0x8d, 0x3f, 0xce, 0x40, 0x51, 0xeb, 0xfb, 0xdd, 0xf8, 0xe0, 0x3a, 0x36, - 0xdd, 0x09, 0x82, 0x7f, 0x00, 0x15, 0x11, 0x04, 0x7e, 0xb0, 0xed, 0xdb, 0x51, 0x55, 0xdf, 0x74, - 0x6a, 0x57, 0xc9, 0xd9, 0x68, 0x46, 0x64, 0x66, 0xc2, 0xc1, 0xdf, 0x07, 0x50, 0xeb, 0xbc, 0x9b, - 0xdc, 0x8f, 0x68, 0xcc, 0xe7, 0x57, 0x47, 0x2c, 0x09, 0x75, 0x92, 0x18, 0x8b, 0xce, 0x37, 0x22, - 0x30, 0x0e, 0x38, 0x0b, 0xa9, 0x80, 0xf3, 0xae, 0xce, 0x11, 0x1c, 0xe2, 0x0b, 0x7d, 0x4b, 0x28, - 0x46, 0x34, 0xfe, 0x6d, 0x06, 0x8a, 0xca, 0x78, 0xf0, 0xe6, 0x6c, 0x8f, 0x5e, 0x7d, 0xb1, 0xcd, - 0xd9, 0x98, 0xee, 0xd9, 0x77, 0x00, 0x94, 0x0d, 0x4a, 0xf5, 0xec, 0xee, 0x94, 0x1c, 0xcd, 0x1a, - 0x95, 0x76, 0x26, 0xf4, 0xc6, 0x23, 0x75, 0x93, 0x85, 0xf2, 0xb0, 0x4f, 0xf6, 0xf7, 0xd9, 0x12, - 0x5f, 0x83, 0xda, 0x93, 0xc3, 0x4f, 0x0e, 0xdb, 0xcf, 0x0e, 0x9f, 0x37, 0x4d, 0xb3, 0x6d, 0xaa, - 0x74, 0xec, 0xd6, 0xe6, 0xce, 0xf3, 0xd6, 0xe1, 0xd1, 0x93, 0x2e, 0xcb, 0x36, 0x7e, 0x96, 0x81, - 0xda, 0x84, 0xed, 0xfa, 0x7f, 0x3b, 0x75, 0xa9, 0xe1, 0xcf, 0xcd, 0x1f, 0xfe, 0xfc, 0x55, 0xc3, - 0x5f, 0x98, 0x1e, 0xfe, 0xdf, 0xcf, 0x40, 0x6d, 0xc2, 0x46, 0xa6, 0xa5, 0x67, 0x26, 0xa5, 0xa7, - 0x77, 0xfa, 0xec, 0xd4, 0x4e, 0x6f, 0xc0, 0x72, 0xf4, 0x7c, 0x98, 0x64, 0x1c, 0x26, 0x70, 0x69, - 0x1a, 0x2a, 0x25, 0xcf, 0x4f, 0xd2, 0x50, 0x39, 0xf9, 0xf5, 0xad, 0xa5, 0xab, 0x73, 0x21, 0xdd, - 0x2c, 0x6e, 0x5c, 0x6d, 0x41, 0xaf, 0xe9, 0xc2, 0x63, 0xa8, 0x8e, 0x92, 0x65, 0xfa, 0x72, 0x6e, - 0x49, 0x9a, 0xf3, 0x05, 0xed, 0xfc, 0x49, 0x06, 0x56, 0x26, 0x6d, 0xee, 0x5f, 0xe8, 0x61, 0xfd, - 0x83, 0x0c, 0xac, 0xcd, 0x58, 0xf2, 0x6b, 0x1d, 0xbb, 0xe9, 0x76, 0x65, 0x17, 0x68, 0x57, 0x6e, - 0x4e, 0xbb, 0xae, 0xb6, 0x24, 0xd7, 0xb7, 0xb8, 0x03, 0x5f, 0xba, 0x72, 0x4f, 0xb8, 0x66, 0xa8, - 0x27, 0x84, 0xe6, 0xa6, 0x85, 0xfe, 0x93, 0x0c, 0xdc, 0xbd, 0xce, 0xde, 0xff, 0x7f, 0xd7, 0xab, - 0xe9, 0x16, 0x1a, 0xef, 0xc6, 0x07, 0xe5, 0x55, 0x28, 0xe9, 0x3f, 0xde, 0xd1, 0xf5, 0xc4, 0x03, - 0xff, 0xdc, 0x53, 0x59, 0x66, 0x53, 0x58, 0xfa, 0x4e, 0xb3, 0x29, 0x46, 0xae, 0x43, 0x07, 0x93, - 0x77, 0x00, 0x36, 0x29, 0xae, 0x8b, 0xae, 0x18, 0x6c, 0xef, 0xb7, 0x3b, 0x4d, 0xb6, 0x94, 0x76, - 0x62, 0x3f, 0x8d, 0x0c, 0xb1, 0x71, 0x04, 0xc5, 0xa4, 0xf8, 0xfc, 0xc0, 0x0a, 0x4e, 0x6d, 0x75, - 0xfc, 0xb7, 0x0c, 0xe5, 0x23, 0x1d, 0x42, 0xa9, 0x4f, 0x7d, 0xdc, 0x69, 0x1f, 0xaa, 0x84, 0xf6, - 0x4e, 0xbb, 0xab, 0x4a, 0xd8, 0x3b, 0x4f, 0x1f, 0xab, 0x73, 0xa8, 0xc7, 0xe6, 0xe6, 0xd1, 0xde, - 0x73, 0xa2, 0x28, 0x18, 0x3f, 0xcb, 0x46, 0xbb, 0x9a, 0x61, 0xea, 0x83, 0x45, 0x80, 0x22, 0x5a, - 0x73, 0x5f, 0x0b, 0x8e, 0x3f, 0x43, 0x95, 0xa7, 0xcd, 0x0b, 0x95, 0x87, 0x60, 0x59, 0x5e, 0x84, - 0xec, 0xd1, 0xb1, 0xaa, 0xb0, 0xd9, 0x93, 0x43, 0x57, 0xdd, 0x39, 0xeb, 0x5e, 0x48, 0x56, 0xc0, - 0x87, 0xed, 0xf0, 0x8c, 0x15, 0x8d, 0xff, 0x9c, 0x81, 0x4a, 0x6c, 0x2a, 0x5f, 0xc6, 0x74, 0x73, - 0x0e, 0x2b, 0xad, 0xc3, 0x6e, 0xd3, 0x3c, 0xdc, 0xdc, 0xd7, 0x24, 0x39, 0x5e, 0x87, 0x9b, 0x87, - 0xed, 0xe7, 0xed, 0xad, 0x8f, 0x9b, 0xdb, 0xdd, 0xce, 0xf3, 0x6e, 0xfb, 0x79, 0xeb, 0xe0, 0xa8, - 0x6d, 0x76, 0x59, 0x81, 0xdf, 0x06, 0xae, 0x9e, 0x9f, 0xb7, 0x3a, 0xcf, 0xb7, 0x37, 0x0f, 0xb7, - 0x9b, 0xfb, 0xcd, 0x1d, 0x56, 0xe4, 0xaf, 0xc2, 0x57, 0xf7, 0x5b, 0x07, 0xad, 0xee, 0xf3, 0xf6, - 0xee, 0x73, 0xb3, 0xfd, 0xac, 0xf3, 0xbc, 0x6d, 0x3e, 0x37, 0x9b, 0xfb, 0x9b, 0xdd, 0x56, 0xfb, - 0xb0, 0xf3, 0xbc, 0xf9, 0xfd, 0xed, 0x66, 0x73, 0xa7, 0xb9, 0xc3, 0x4a, 0xfc, 0x06, 0xac, 0xee, - 0xb6, 0xf6, 0x9b, 0xcf, 0xf7, 0xdb, 0x9b, 0x3b, 0xfa, 0x7b, 0x65, 0x7e, 0x17, 0xea, 0xad, 0xc3, - 0xce, 0x93, 0xdd, 0xdd, 0xd6, 0x76, 0xab, 0x79, 0xd8, 0x7d, 0x7e, 0xd4, 0x34, 0x0f, 0x5a, 0x9d, - 0x0e, 0xf2, 0xb2, 0x8a, 0xf1, 0x5d, 0x28, 0xb6, 0xbc, 0x33, 0x47, 0x92, 0xfa, 0xe9, 0xb9, 0xd2, - 0x01, 0x49, 0x04, 0x92, 0xd6, 0x38, 0x7d, 0x8f, 0xae, 0x1a, 0x93, 0xf2, 0x2d, 0x9b, 0x09, 0xc2, - 0xf8, 0x17, 0x59, 0xa8, 0x29, 0x11, 0x51, 0x80, 0xf3, 0x00, 0x56, 0x75, 0xa6, 0xb0, 0x35, 0xb9, - 0xc2, 0xa7, 0xd1, 0xf4, 0x57, 0x3c, 0x0a, 0x95, 0x5a, 0xe7, 0x69, 0x14, 0x9d, 0x2c, 0x91, 0x70, - 0x0c, 0x94, 0xd4, 0x99, 0x5a, 0x82, 0xf8, 0xa2, 0x0b, 0x1c, 0x8d, 0x87, 0x22, 0xec, 0xf9, 0xde, - 0x76, 0x5c, 0xe0, 0x3f, 0x81, 0xe3, 0x9f, 0xc2, 0x9d, 0x18, 0x6e, 0x7a, 0xbd, 0xe0, 0x72, 0x14, - 0xff, 0x63, 0x56, 0x69, 0x6e, 0xc4, 0xbd, 0xeb, 0xb8, 0x62, 0x82, 0xd0, 0xbc, 0x4a, 0x80, 0xf1, - 0x27, 0x99, 0x54, 0x58, 0xa8, 0xc2, 0xbe, 0x6b, 0x0d, 0xe2, 0xbc, 0x23, 0x0a, 0x0c, 0xcc, 0x74, - 0xf3, 0xf5, 0x3e, 0xad, 0x41, 0x7e, 0x04, 0xdc, 0x99, 0x6d, 0x74, 0x7e, 0xc1, 0x46, 0xcf, 0xe1, - 0x9d, 0xce, 0x30, 0x17, 0x66, 0x33, 0xcc, 0xf7, 0x00, 0xfa, 0xae, 0x7f, 0x6c, 0xb9, 0x29, 0x3f, - 0x2c, 0x85, 0x31, 0x5c, 0x28, 0x47, 0xff, 0xcb, 0xc5, 0x6f, 0x43, 0x91, 0xfe, 0x99, 0x2b, 0xce, - 0xb7, 0x29, 0x88, 0xef, 0xc1, 0x8a, 0x98, 0x6c, 0x73, 0x76, 0xc1, 0x36, 0x4f, 0xf1, 0x19, 0xdf, - 0x86, 0xb5, 0x19, 0x22, 0x1c, 0xc4, 0x91, 0x25, 0xe3, 0x5b, 0xbd, 0xf8, 0x3c, 0x7b, 0x7e, 0x6b, - 0xfc, 0xc7, 0x2c, 0x2c, 0x1f, 0x58, 0x9e, 0x73, 0x22, 0x42, 0x19, 0xb5, 0x36, 0xec, 0x0d, 0xc4, - 0xd0, 0x8a, 0x5a, 0xab, 0x20, 0x1d, 0x84, 0x67, 0xd3, 0xe9, 0xed, 0x99, 0xd3, 0x90, 0xdb, 0x50, - 0xb4, 0xc6, 0x72, 0x10, 0xd7, 0x1c, 0x6b, 0x08, 0xe7, 0xce, 0x75, 0x7a, 0xc2, 0x0b, 0x23, 0xdd, - 0x8c, 0xc0, 0xa4, 0x82, 0xa3, 0x78, 0x4d, 0x05, 0x47, 0x69, 0x76, 0xfc, 0xef, 0x43, 0x35, 0xec, - 0x05, 0x42, 0x78, 0xe1, 0xc0, 0x97, 0xd1, 0x7f, 0xba, 0xa5, 0x51, 0x54, 0xb9, 0xe4, 0x9f, 0x7b, - 0xb8, 0x42, 0xf7, 0x1d, 0xef, 0x54, 0x97, 0xef, 0x4c, 0xe0, 0x50, 0x07, 0x29, 0x05, 0xe1, 0xfc, - 0x48, 0x50, 0xf8, 0x5b, 0x30, 0x63, 0x98, 0x92, 0x0c, 0x96, 0x14, 0x7d, 0x3f, 0x70, 0x84, 0xca, - 0xb4, 0x55, 0xcc, 0x14, 0x06, 0x79, 0x5d, 0xcb, 0xeb, 0x8f, 0xad, 0xbe, 0xd0, 0xe7, 0xa1, 0x31, - 0x6c, 0xfc, 0xf7, 0x02, 0xc0, 0x81, 0x18, 0x1e, 0x8b, 0x20, 0x1c, 0x38, 0x23, 0x3a, 0x09, 0x70, - 0x74, 0x71, 0x66, 0xcd, 0xa4, 0x67, 0xfe, 0xde, 0x44, 0x11, 0xf4, 0xec, 0xd9, 0x5d, 0xc2, 0x3e, - 0x9d, 0xa1, 0xc0, 0xc1, 0xb1, 0xa4, 0xd0, 0xc5, 0x33, 0x34, 0xfe, 0x79, 0x33, 0x8d, 0xa2, 0xba, - 0x26, 0x4b, 0x8a, 0xa6, 0x67, 0xab, 0x0c, 0x48, 0xde, 0x8c, 0x61, 0xba, 0x46, 0x11, 0x6e, 0x8e, - 0xa5, 0x6f, 0x0a, 0x4f, 0x9c, 0xc7, 0x77, 0x80, 0x12, 0x14, 0x3f, 0x80, 0xda, 0xc8, 0xba, 0x1c, - 0x0a, 0x4f, 0x1e, 0x08, 0x39, 0xf0, 0x6d, 0x5d, 0xe9, 0xf2, 0xea, 0xd5, 0x0d, 0x3c, 0x4a, 0x93, - 0x9b, 0x93, 0xdc, 0xa8, 0x13, 0x5e, 0x48, 0xab, 0x44, 0x4d, 0xa3, 0x86, 0xf8, 0x16, 0x80, 0x7a, - 0xa2, 0xc0, 0xa2, 0x3c, 0x3f, 0x51, 0x63, 0x0d, 0x45, 0x28, 0x82, 0x33, 0x47, 0xd9, 0x31, 0x15, - 0x3a, 0x25, 0x5c, 0x68, 0xf5, 0xc6, 0xa1, 0x08, 0x9a, 0x43, 0xcb, 0x71, 0xf5, 0x04, 0x27, 0x08, - 0xfe, 0x16, 0xdc, 0x0a, 0xc7, 0xc7, 0xa8, 0x33, 0xc7, 0xa2, 0xeb, 0x1f, 0x8a, 0xf3, 0xd0, 0x15, - 0x52, 0x8a, 0x40, 0x1f, 0xad, 0xcf, 0x7f, 0x69, 0xf4, 0x63, 0xaf, 0x80, 0xfe, 0x78, 0x00, 0x9f, - 0x92, 0x92, 0x9d, 0x18, 0xa5, 0xeb, 0x99, 0x58, 0x86, 0x33, 0x58, 0x56, 0x28, 0x5d, 0xee, 0x94, - 0xe5, 0x5f, 0x87, 0xaf, 0x4c, 0x10, 0x99, 0xea, 0x9c, 0x34, 0xdc, 0x75, 0x3c, 0xcb, 0x75, 0x7e, - 0xa4, 0x4e, 0xa4, 0x73, 0xc6, 0x08, 0x6a, 0x13, 0x03, 0x87, 0xdb, 0xbc, 0x7a, 0xd2, 0x05, 0x20, - 0x0c, 0x96, 0x15, 0xdc, 0x91, 0x81, 0x43, 0x07, 0x00, 0x31, 0x66, 0x1b, 0xd7, 0xb9, 0xcf, 0xb2, - 0xfc, 0x26, 0x30, 0x85, 0x69, 0x79, 0xd6, 0x68, 0xb4, 0x39, 0x1a, 0xb9, 0x82, 0xe5, 0xe8, 0xae, - 0x5c, 0x82, 0x55, 0xa5, 0xd0, 0x2c, 0x6f, 0x7c, 0x1f, 0xee, 0xd0, 0xc8, 0x3c, 0x15, 0x41, 0x1c, - 0xf7, 0xe9, 0xbe, 0xde, 0x82, 0x35, 0xf5, 0x74, 0xe8, 0x4b, 0xf5, 0x9a, 0x7c, 0x21, 0x0e, 0x2b, - 0x0a, 0x8d, 0xae, 0x40, 0x47, 0x78, 0x52, 0xd5, 0xa1, 0x28, 0x5c, 0x4c, 0x97, 0x35, 0x7e, 0x5a, - 0x04, 0x9e, 0x28, 0x44, 0xd7, 0x11, 0xc1, 0x8e, 0x25, 0xad, 0x54, 0xe2, 0xae, 0x76, 0xe5, 0xd1, - 0xf3, 0x8b, 0xab, 0xb5, 0x6e, 0x43, 0xd1, 0x09, 0x31, 0x52, 0xd1, 0xd5, 0x91, 0x1a, 0xe2, 0xfb, - 0x00, 0x23, 0x11, 0x38, 0xbe, 0x4d, 0x1a, 0x54, 0x98, 0x5b, 0x8b, 0x3e, 0xdb, 0xa8, 0x8d, 0xa3, - 0x98, 0xc7, 0x4c, 0xf1, 0x63, 0x3b, 0x14, 0xa4, 0x0e, 0x72, 0x8b, 0xd4, 0xe8, 0x34, 0x8a, 0xbf, - 0x0e, 0x37, 0x46, 0x81, 0xd3, 0x13, 0x6a, 0x3a, 0x9e, 0x84, 0xf6, 0x36, 0xfd, 0xeb, 0x56, 0x89, - 0x28, 0xe7, 0xbd, 0x42, 0x0d, 0xb4, 0x3c, 0xf2, 0xdf, 0x43, 0x3a, 0xba, 0xd4, 0x77, 0x35, 0x55, - 0xb5, 0x61, 0xcd, 0x9c, 0xff, 0x92, 0xaf, 0x03, 0xd3, 0x2f, 0x0e, 0x1c, 0x6f, 0x5f, 0x78, 0x7d, - 0x39, 0x20, 0xe5, 0xae, 0x99, 0x33, 0x78, 0xb2, 0x60, 0xea, 0x4f, 0x51, 0xd4, 0xb1, 0x46, 0xc5, - 0x8c, 0x61, 0x75, 0xff, 0xd7, 0xf5, 0x83, 0x8e, 0x0c, 0x74, 0x21, 0x64, 0x0c, 0xa3, 0xcf, 0x12, - 0x52, 0x5b, 0x8f, 0x02, 0xdf, 0x1e, 0x53, 0xd2, 0x5d, 0x19, 0xb1, 0x69, 0x74, 0x42, 0x79, 0x60, - 0x79, 0xba, 0x64, 0xae, 0x96, 0xa6, 0x8c, 0xd1, 0x14, 0xa2, 0xf8, 0x61, 0x22, 0x70, 0x55, 0x87, - 0x28, 0x29, 0x9c, 0xa6, 0x49, 0x44, 0xb1, 0x98, 0x26, 0x91, 0x43, 0xfd, 0xb7, 0x03, 0xdf, 0xb1, - 0x13, 0x59, 0x6b, 0xaa, 0xa0, 0x71, 0x1a, 0x9f, 0xa2, 0x4d, 0x64, 0xf2, 0x09, 0xda, 0x18, 0x6f, - 0xfc, 0x38, 0x03, 0x90, 0x4c, 0x3e, 0xaa, 0x7c, 0x02, 0x25, 0x4b, 0xfc, 0x0e, 0xdc, 0x48, 0xa3, - 0xa9, 0xc2, 0x9d, 0xce, 0x3f, 0x39, 0xac, 0x24, 0x2f, 0x76, 0xac, 0xcb, 0x90, 0x65, 0x55, 0x65, - 0x63, 0x84, 0x7b, 0x26, 0x04, 0xd5, 0x90, 0xdd, 0x04, 0x96, 0x20, 0xe9, 0x36, 0x52, 0xc8, 0xf2, - 0x93, 0xa4, 0x3f, 0x10, 0x56, 0x10, 0xb2, 0x82, 0xb1, 0x07, 0x45, 0x75, 0xf6, 0x32, 0xe7, 0xd4, - 0xf4, 0xe5, 0x4a, 0x20, 0xfe, 0x76, 0x06, 0x60, 0x47, 0x15, 0xaf, 0xe2, 0x2e, 0x3e, 0xe7, 0x30, - 0x7a, 0x9e, 0x47, 0x65, 0xd9, 0x36, 0x95, 0xf5, 0xe6, 0xe2, 0xbf, 0xda, 0x40, 0x10, 0x35, 0xc7, - 0x8a, 0x8a, 0x86, 0xd4, 0x9a, 0x8b, 0x61, 0xb5, 0x81, 0x6c, 0xfb, 0x9e, 0x27, 0x7a, 0xb8, 0xfd, - 0xc4, 0x1b, 0x48, 0x8c, 0x5a, 0xff, 0x97, 0x39, 0x58, 0x99, 0x3c, 0xbf, 0xa3, 0xaa, 0x79, 0x75, - 0x76, 0xdc, 0x76, 0xed, 0x54, 0xe9, 0x23, 0xe3, 0xab, 0x50, 0xd5, 0x1e, 0x21, 0x21, 0xd6, 0x28, - 0x32, 0xf1, 0x87, 0x82, 0xdd, 0x4f, 0xff, 0x8f, 0xd4, 0xeb, 0x18, 0xe0, 0xa8, 0x2b, 0x09, 0x6c, - 0xc4, 0x2b, 0xfa, 0x1f, 0x35, 0x7e, 0x3d, 0xcb, 0x6b, 0xa9, 0x02, 0xbc, 0xdf, 0x43, 0x73, 0xb8, - 0xba, 0x35, 0xf6, 0x6c, 0x57, 0xd8, 0x31, 0xf6, 0x9f, 0xa6, 0xb1, 0x71, 0x39, 0xdd, 0xaf, 0x63, - 0x54, 0x55, 0xe9, 0x8c, 0x8f, 0x75, 0x29, 0xdd, 0x5f, 0xcf, 0xf3, 0xdb, 0xb0, 0xa6, 0xa9, 0x92, - 0xba, 0x19, 0xf6, 0x37, 0x70, 0xe2, 0x56, 0x36, 0x95, 0x4d, 0xd1, 0x0d, 0x65, 0x7f, 0x33, 0x8f, - 0x4d, 0xa0, 0xbb, 0x6e, 0xbf, 0x41, 0x72, 0xe2, 0xa2, 0x62, 0xf6, 0x9b, 0x79, 0xbe, 0x0a, 0xd0, - 0xe9, 0xc6, 0x1f, 0xfa, 0xed, 0x3c, 0xaf, 0x42, 0xb1, 0xd3, 0x25, 0x69, 0x3f, 0xce, 0xf3, 0x5b, - 0xc0, 0x92, 0xb7, 0xba, 0x52, 0xe8, 0xef, 0xaa, 0xc6, 0xc4, 0xa5, 0x3f, 0xbf, 0x93, 0xc7, 0x7e, - 0x45, 0x0e, 0x33, 0xfb, 0x7b, 0x79, 0xce, 0xa0, 0x9a, 0x8a, 0x77, 0xd9, 0xdf, 0xcf, 0x73, 0x0e, - 0xb5, 0x03, 0x0c, 0x73, 0xbd, 0xbe, 0xee, 0xc1, 0x6f, 0xd1, 0x97, 0x77, 0xe3, 0xba, 0x68, 0xf6, - 0xbb, 0x79, 0x7e, 0x07, 0x78, 0x3a, 0xc7, 0xa7, 0x5f, 0xfc, 0x03, 0xe2, 0x56, 0xca, 0x12, 0x6a, - 0xdc, 0x3f, 0xcc, 0xaf, 0xff, 0x94, 0xd2, 0x2c, 0xe9, 0x93, 0x78, 0x8c, 0x1d, 0x5d, 0xdf, 0xeb, - 0x4b, 0xf5, 0x17, 0x5c, 0x35, 0xa8, 0x84, 0x03, 0x3f, 0x90, 0x04, 0xd2, 0xdd, 0x0b, 0x8f, 0xae, - 0xd2, 0xa9, 0x12, 0x4a, 0xe5, 0x9d, 0xa8, 0xb0, 0x55, 0x5a, 0x7d, 0x56, 0x8d, 0x0b, 0x9b, 0xf2, - 0x71, 0xf1, 0x15, 0x5d, 0xe9, 0x8b, 0xae, 0x4c, 0xb1, 0x22, 0x92, 0x8e, 0x03, 0x57, 0x15, 0x61, - 0x09, 0xdc, 0x99, 0xd4, 0x7f, 0xed, 0x8c, 0x06, 0xb8, 0x01, 0x56, 0x14, 0xd6, 0xff, 0xcc, 0x51, - 0x97, 0x71, 0x74, 0xdd, 0x83, 0x8d, 0xed, 0x88, 0x8f, 0xf6, 0x98, 0x58, 0xff, 0x9d, 0x0c, 0x2c, - 0x47, 0x17, 0xd9, 0x9c, 0xbe, 0xe3, 0xa9, 0x32, 0xae, 0xe8, 0x8f, 0xcd, 0x7a, 0xae, 0x33, 0x8a, - 0xfe, 0x28, 0x68, 0x15, 0xaa, 0x76, 0x60, 0xf5, 0x37, 0x3d, 0x7b, 0x27, 0xf0, 0x47, 0xaa, 0xd9, - 0x2a, 0x11, 0xab, 0xca, 0xc7, 0xce, 0xc5, 0x31, 0x92, 0x8f, 0x44, 0xc0, 0xf2, 0x54, 0x53, 0x31, - 0xb0, 0x02, 0xc7, 0xeb, 0x63, 0xf8, 0xec, 0x85, 0xaa, 0x8c, 0xac, 0x0a, 0xa5, 0x71, 0x28, 0x7a, - 0x56, 0x28, 0x58, 0x11, 0x81, 0xe3, 0xb1, 0xe3, 0x4a, 0xc7, 0x53, 0xff, 0xcf, 0x13, 0xd7, 0x89, - 0x95, 0xd7, 0xff, 0x30, 0x03, 0x55, 0x9a, 0xd0, 0x24, 0xc3, 0x90, 0x98, 0x98, 0x2a, 0x94, 0xf6, - 0xe3, 0xff, 0x67, 0x29, 0x42, 0xb6, 0x7d, 0xaa, 0x32, 0x0c, 0x7a, 0x42, 0xd5, 0x0d, 0x16, 0xf5, - 0x57, 0x2d, 0x79, 0xfe, 0x25, 0xb8, 0x65, 0x8a, 0xa1, 0x2f, 0xc5, 0x33, 0xcb, 0x91, 0xe9, 0x12, - 0xea, 0x02, 0x7a, 0x23, 0xea, 0x55, 0x54, 0x33, 0x5d, 0x24, 0x6f, 0x04, 0x3f, 0x1b, 0x61, 0x4a, - 0xd8, 0x69, 0xc2, 0x68, 0xf7, 0xa4, 0x1c, 0x93, 0x7c, 0xec, 0x3b, 0x1e, 0x7e, 0x8d, 0x2e, 0x3f, - 0x11, 0x86, 0x52, 0x55, 0x88, 0x82, 0xf5, 0x43, 0xb8, 0x3d, 0x3f, 0xc1, 0xa2, 0xae, 0x45, 0xd1, - 0x9f, 0x02, 0x52, 0x51, 0xed, 0xb3, 0xc0, 0x51, 0x17, 0x63, 0x2a, 0x50, 0x68, 0x9f, 0x7b, 0xa4, - 0x0d, 0x6b, 0x50, 0x3b, 0xf4, 0x53, 0x3c, 0x2c, 0xb7, 0xde, 0x9b, 0xc8, 0x89, 0x25, 0x83, 0x12, - 0x35, 0x62, 0x29, 0x55, 0x30, 0x9e, 0x51, 0xd9, 0x16, 0xfa, 0x7b, 0x66, 0x75, 0x65, 0x54, 0xe7, - 0xa2, 0x6c, 0x75, 0x65, 0x34, 0x6e, 0x66, 0x5e, 0xfd, 0x61, 0x83, 0xd7, 0x13, 0xae, 0xb0, 0x59, - 0x61, 0xfd, 0x3d, 0x58, 0xd5, 0x5d, 0xed, 0x89, 0x30, 0x8c, 0x0a, 0xae, 0x8f, 0x02, 0xe7, 0x4c, - 0x5d, 0x4b, 0x5d, 0x86, 0xf2, 0x91, 0x08, 0x42, 0xdf, 0xa3, 0x2b, 0xb9, 0x00, 0xc5, 0xce, 0xc0, - 0x0a, 0xf0, 0x1b, 0xeb, 0xdf, 0x84, 0x0a, 0x15, 0x60, 0x7f, 0xe2, 0x78, 0x36, 0xf6, 0x64, 0x4b, - 0xd7, 0x1c, 0x56, 0xa0, 0xb0, 0xed, 0x9f, 0x51, 0xff, 0xca, 0xea, 0xaf, 0xc9, 0x58, 0x76, 0xfd, - 0x23, 0xe0, 0x2a, 0xb6, 0xb3, 0xc5, 0x85, 0xe3, 0xf5, 0xe3, 0xbb, 0x7a, 0x40, 0x17, 0x6f, 0x6d, - 0x71, 0x41, 0xae, 0x53, 0x15, 0x4a, 0x11, 0x10, 0x5d, 0xff, 0xdd, 0xf5, 0xc7, 0x1e, 0x7e, 0xed, - 0x29, 0xdc, 0x54, 0xba, 0x81, 0x9f, 0xa7, 0x8b, 0x1e, 0x57, 0x3a, 0x9c, 0xaa, 0x4a, 0x5e, 0x8e, - 0xc3, 0x98, 0x96, 0x65, 0xf8, 0x6d, 0xe0, 0xb1, 0xb3, 0x96, 0xe0, 0xb3, 0xeb, 0x06, 0xdc, 0x98, - 0xe3, 0x31, 0x93, 0x1d, 0x55, 0x7e, 0x03, 0x5b, 0x5a, 0xff, 0x10, 0xd6, 0xd4, 0xca, 0x3f, 0x54, - 0x85, 0xfb, 0xd1, 0x9f, 0x15, 0x3d, 0x6b, 0xed, 0xb6, 0xd4, 0x10, 0x6d, 0x37, 0xf7, 0xf7, 0x9f, - 0xec, 0x6f, 0x9a, 0x2c, 0x43, 0x13, 0xd9, 0xee, 0x3e, 0xdf, 0x6e, 0x1f, 0x1e, 0x36, 0xb7, 0xbb, - 0xcd, 0x1d, 0x96, 0xdd, 0x5a, 0xff, 0xa3, 0x5f, 0xdc, 0xcb, 0xfc, 0xfc, 0x17, 0xf7, 0x32, 0xff, - 0xf5, 0x17, 0xf7, 0x32, 0x3f, 0xfe, 0xfc, 0xde, 0xd2, 0xcf, 0x3f, 0xbf, 0xb7, 0xf4, 0x9f, 0x3e, - 0xbf, 0xb7, 0xf4, 0x29, 0x9b, 0xfe, 0x6b, 0xf4, 0xe3, 0x22, 0x6d, 0x55, 0x6f, 0xfe, 0xdf, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xbe, 0xaa, 0x7a, 0x83, 0x35, 0x5d, 0x00, 0x00, + // 8596 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0xbd, 0x4d, 0x8c, 0x24, 0xd9, + 0x71, 0x18, 0xdc, 0xf5, 0x5f, 0x15, 0xd5, 0xd5, 0xfd, 0xfa, 0xcd, 0x5f, 0xb1, 0x38, 0x1a, 0x0d, + 0x93, 0xcb, 0xe5, 0x70, 0xb8, 0xec, 0xd9, 0x9d, 0xdd, 0xe5, 0x2e, 0x57, 0xdc, 0x25, 0xfb, 0xa7, + 0x7a, 0xba, 0x76, 0xfb, 0x8f, 0x59, 0x35, 0x33, 0xe4, 0x42, 0xfa, 0xe6, 0xcb, 0xae, 0x7c, 0x5d, + 0x95, 0xdb, 0x59, 0x99, 0xc5, 0xcc, 0x57, 0x3d, 0xdd, 0x84, 0x6d, 0xc8, 0xb6, 0x2c, 0x5a, 0x07, + 0x03, 0xb4, 0x60, 0xf9, 0xe7, 0x60, 0x88, 0x02, 0x7c, 0x30, 0x20, 0xc2, 0x86, 0x0f, 0x84, 0x29, + 0xc0, 0x3a, 0xd8, 0x17, 0x0b, 0xf6, 0x85, 0xf6, 0xc9, 0x3e, 0x18, 0x36, 0xb8, 0x47, 0x43, 0x16, + 0xec, 0x8b, 0x05, 0xc3, 0x07, 0x23, 0xe2, 0xbd, 0xfc, 0xab, 0xaa, 0xee, 0xa9, 0x59, 0x49, 0x86, + 0x4f, 0x9d, 0x11, 0x19, 0x11, 0xf9, 0x7e, 0xe2, 0xc5, 0x8b, 0x88, 0x17, 0xaf, 0x1a, 0x5e, 0x19, + 0x9f, 0x0e, 0x1e, 0xb8, 0xce, 0xf1, 0x83, 0xf1, 0xf1, 0x83, 0x91, 0x6f, 0x0b, 0xf7, 0xc1, 0x38, + 0xf0, 0xa5, 0x1f, 0x2a, 0x20, 0x5c, 0x27, 0x88, 0x37, 0x2c, 0xef, 0x42, 0x5e, 0x8c, 0xc5, 0x3a, + 0x61, 0x5b, 0xb7, 0x07, 0xbe, 0x3f, 0x70, 0x85, 0x22, 0x3d, 0x9e, 0x9c, 0x3c, 0x08, 0x65, 0x30, + 0xe9, 0x4b, 0x45, 0x6c, 0xfc, 0xbc, 0x08, 0x37, 0xbb, 0x23, 0x2b, 0x90, 0x9b, 0xae, 0xdf, 0x3f, + 0xed, 0x7a, 0xd6, 0x38, 0x1c, 0xfa, 0x72, 0xd3, 0x0a, 0x05, 0x7f, 0x0d, 0xca, 0xc7, 0x88, 0x0c, + 0x9b, 0xb9, 0xbb, 0x85, 0x7b, 0xf5, 0x87, 0xd7, 0xd7, 0x33, 0x82, 0xd7, 0x89, 0xc3, 0xd4, 0x34, + 0xfc, 0x0d, 0xa8, 0xd8, 0x42, 0x5a, 0x8e, 0x1b, 0x36, 0xf3, 0x77, 0x73, 0xf7, 0xea, 0x0f, 0x6f, + 0xad, 0xab, 0x0f, 0xaf, 0x47, 0x1f, 0x5e, 0xef, 0xd2, 0x87, 0xcd, 0x88, 0x8e, 0xbf, 0x03, 0xd5, + 0x13, 0xc7, 0x15, 0x1f, 0x89, 0x8b, 0xb0, 0x59, 0xb8, 0x92, 0x67, 0x33, 0xdf, 0xcc, 0x99, 0x31, + 0x31, 0xdf, 0x82, 0x15, 0x71, 0x2e, 0x03, 0xcb, 0x14, 0xae, 0x25, 0x1d, 0xdf, 0x0b, 0x9b, 0x45, + 0x6a, 0xe1, 0xad, 0xa9, 0x16, 0x46, 0xef, 0x89, 0x7d, 0x8a, 0x85, 0xdf, 0x85, 0xba, 0x7f, 0xfc, + 0x89, 0xe8, 0xcb, 0xde, 0xc5, 0x58, 0x84, 0xcd, 0xd2, 0xdd, 0xc2, 0xbd, 0x9a, 0x99, 0x46, 0xf1, + 0x6f, 0x40, 0xbd, 0xef, 0xbb, 0xae, 0xe8, 0xab, 0x6f, 0x94, 0xaf, 0xee, 0x56, 0x9a, 0x96, 0xbf, + 0x05, 0x37, 0x02, 0x31, 0xf2, 0xcf, 0x84, 0xbd, 0x15, 0x63, 0xa9, 0x9f, 0x55, 0xfa, 0xcc, 0xfc, + 0x97, 0x7c, 0x03, 0x1a, 0x81, 0x6e, 0xdf, 0x9e, 0xe3, 0x9d, 0x86, 0xcd, 0x0a, 0x75, 0xeb, 0xf3, + 0x97, 0x74, 0x0b, 0x69, 0xcc, 0x2c, 0x07, 0x67, 0x50, 0x38, 0x15, 0x17, 0xcd, 0xda, 0xdd, 0xdc, + 0xbd, 0x9a, 0x89, 0x8f, 0xfc, 0x3d, 0x68, 0xfa, 0x81, 0x33, 0x70, 0x3c, 0xcb, 0xdd, 0x0a, 0x84, + 0x25, 0x85, 0xdd, 0x73, 0x46, 0x22, 0x94, 0xd6, 0x68, 0xdc, 0x84, 0xbb, 0xb9, 0x7b, 0x05, 0xf3, + 0xd2, 0xf7, 0xfc, 0x4d, 0x35, 0x43, 0x1d, 0xef, 0xc4, 0x6f, 0xd6, 0x75, 0xf7, 0xb3, 0x6d, 0xd9, + 0xd1, 0xaf, 0xcd, 0x98, 0xd0, 0xf8, 0xd3, 0x3c, 0x94, 0xbb, 0xc2, 0x0a, 0xfa, 0xc3, 0xd6, 0x0f, + 0x73, 0x50, 0x36, 0x45, 0x38, 0x71, 0x25, 0x6f, 0x41, 0x55, 0x8d, 0x6d, 0xc7, 0x6e, 0xe6, 0xa8, + 0x75, 0x31, 0xfc, 0x59, 0x74, 0x67, 0x1d, 0x8a, 0x23, 0x21, 0xad, 0x66, 0x81, 0x46, 0xa8, 0x35, + 0xd5, 0x2a, 0xf5, 0xf9, 0xf5, 0x7d, 0x21, 0x2d, 0x93, 0xe8, 0x5a, 0x9f, 0xe6, 0xa0, 0x88, 0x20, + 0xbf, 0x0d, 0xb5, 0xa1, 0x33, 0x18, 0xba, 0xce, 0x60, 0x28, 0x75, 0x43, 0x12, 0x04, 0xff, 0x00, + 0x56, 0x63, 0xc0, 0xb4, 0xbc, 0x81, 0xc0, 0x16, 0xcd, 0x53, 0x7e, 0x7a, 0x69, 0x4e, 0x13, 0xf3, + 0x26, 0x54, 0x68, 0x3d, 0x74, 0x6c, 0xd2, 0xe8, 0x9a, 0x19, 0x81, 0xa8, 0x6e, 0xd1, 0x4c, 0x7d, + 0x24, 0x2e, 0x9a, 0x45, 0x7a, 0x9b, 0x46, 0xf1, 0x0d, 0x58, 0x8d, 0xc0, 0x6d, 0x3d, 0x1a, 0xa5, + 0xab, 0x47, 0x63, 0x9a, 0xde, 0xf8, 0x47, 0x1d, 0x28, 0xd1, 0xb2, 0xe4, 0x2b, 0x90, 0x77, 0xa2, + 0x81, 0xce, 0x3b, 0x36, 0x7f, 0x00, 0xe5, 0x13, 0x47, 0xb8, 0xf6, 0x0b, 0x47, 0x58, 0x93, 0xf1, + 0x36, 0x2c, 0x07, 0x22, 0x94, 0x81, 0xa3, 0xb5, 0x5f, 0x2d, 0xd0, 0x2f, 0xcc, 0xb3, 0x01, 0xeb, + 0x66, 0x8a, 0xd0, 0xcc, 0xb0, 0x61, 0xb7, 0xfb, 0x43, 0xc7, 0xb5, 0x03, 0xe1, 0x75, 0x6c, 0xb5, + 0x4e, 0x6b, 0x66, 0x1a, 0xc5, 0xef, 0xc1, 0xea, 0xb1, 0xd5, 0x3f, 0x1d, 0x04, 0xfe, 0xc4, 0xc3, + 0x05, 0xe1, 0x07, 0xd4, 0xed, 0x9a, 0x39, 0x8d, 0xe6, 0xaf, 0x43, 0xc9, 0x72, 0x9d, 0x81, 0x47, + 0x2b, 0x71, 0x65, 0x66, 0xd2, 0x55, 0x5b, 0x36, 0x90, 0xc2, 0x54, 0x84, 0x7c, 0x17, 0x1a, 0x67, + 0x22, 0x90, 0x4e, 0xdf, 0x72, 0x09, 0xdf, 0xac, 0x10, 0xa7, 0x31, 0x97, 0xf3, 0x49, 0x9a, 0xd2, + 0xcc, 0x32, 0xf2, 0x0e, 0x40, 0x88, 0x66, 0x92, 0xa6, 0x53, 0xaf, 0x85, 0x2f, 0xcf, 0x15, 0xb3, + 0xe5, 0x7b, 0x52, 0x78, 0x72, 0xbd, 0x1b, 0x93, 0xef, 0x2e, 0x99, 0x29, 0x66, 0xfe, 0x0e, 0x14, + 0xa5, 0x38, 0x97, 0xcd, 0x95, 0x2b, 0x46, 0x34, 0x12, 0xd2, 0x13, 0xe7, 0x72, 0x77, 0xc9, 0x24, + 0x06, 0x64, 0xc4, 0x45, 0xd6, 0x5c, 0x5d, 0x80, 0x11, 0xd7, 0x25, 0x32, 0x22, 0x03, 0x7f, 0x1f, + 0xca, 0xae, 0x75, 0xe1, 0x4f, 0x64, 0x93, 0x11, 0xeb, 0x17, 0xaf, 0x64, 0xdd, 0x23, 0xd2, 0xdd, + 0x25, 0x53, 0x33, 0xf1, 0xb7, 0xa0, 0x60, 0x3b, 0x67, 0xcd, 0x35, 0xe2, 0xbd, 0x7b, 0x25, 0xef, + 0xb6, 0x73, 0xb6, 0xbb, 0x64, 0x22, 0x39, 0xdf, 0x82, 0xea, 0xb1, 0xef, 0x9f, 0x8e, 0xac, 0xe0, + 0xb4, 0xc9, 0x89, 0xf5, 0x4b, 0x57, 0xb2, 0x6e, 0x6a, 0xe2, 0xdd, 0x25, 0x33, 0x66, 0xc4, 0x2e, + 0x3b, 0x7d, 0xdf, 0x6b, 0x5e, 0x5b, 0xa0, 0xcb, 0x9d, 0xbe, 0xef, 0x61, 0x97, 0x91, 0x01, 0x19, + 0x5d, 0xc7, 0x3b, 0x6d, 0x5e, 0x5f, 0x80, 0x11, 0x2d, 0x27, 0x32, 0x22, 0x03, 0x36, 0xdb, 0xb6, + 0xa4, 0x75, 0xe6, 0x88, 0xe7, 0xcd, 0x1b, 0x0b, 0x34, 0x7b, 0x5b, 0x13, 0x63, 0xb3, 0x23, 0x46, + 0x14, 0x12, 0x2d, 0xcd, 0xe6, 0xcd, 0x05, 0x84, 0x44, 0x16, 0x1d, 0x85, 0x44, 0x8c, 0xfc, 0xff, + 0x83, 0xb5, 0x13, 0x61, 0xc9, 0x49, 0x20, 0xec, 0x64, 0xa3, 0xbb, 0x45, 0xd2, 0xd6, 0xaf, 0x9e, + 0xfb, 0x69, 0xae, 0xdd, 0x25, 0x73, 0x56, 0x14, 0x7f, 0x0f, 0x4a, 0xae, 0x25, 0xc5, 0x79, 0xb3, + 0x49, 0x32, 0x8d, 0x17, 0x28, 0x85, 0x14, 0xe7, 0xbb, 0x4b, 0xa6, 0x62, 0xe1, 0xdf, 0x85, 0x55, + 0x69, 0x1d, 0xbb, 0xe2, 0xf0, 0x44, 0x13, 0x84, 0xcd, 0xcf, 0x91, 0x94, 0xd7, 0xae, 0x56, 0xe7, + 0x2c, 0xcf, 0xee, 0x92, 0x39, 0x2d, 0x06, 0x5b, 0x45, 0xa8, 0x66, 0x6b, 0x81, 0x56, 0x91, 0x3c, + 0x6c, 0x15, 0xb1, 0xf0, 0x3d, 0xa8, 0xd3, 0xc3, 0x96, 0xef, 0x4e, 0x46, 0x5e, 0xf3, 0xf3, 0x24, + 0xe1, 0xde, 0x8b, 0x25, 0x28, 0xfa, 0xdd, 0x25, 0x33, 0xcd, 0x8e, 0x93, 0x48, 0xa0, 0xe9, 0x3f, + 0x6f, 0xde, 0x5e, 0x60, 0x12, 0x7b, 0x9a, 0x18, 0x27, 0x31, 0x62, 0xc4, 0xa5, 0xf7, 0xdc, 0xb1, + 0x07, 0x42, 0x36, 0x7f, 0x69, 0x81, 0xa5, 0xf7, 0x94, 0x48, 0x71, 0xe9, 0x29, 0x26, 0x54, 0xe3, + 0xfe, 0xd0, 0x92, 0xcd, 0x3b, 0x0b, 0xa8, 0xf1, 0xd6, 0xd0, 0x22, 0x5b, 0x81, 0x0c, 0xad, 0x1f, + 0xc0, 0x72, 0xda, 0x2a, 0x73, 0x0e, 0xc5, 0x40, 0x58, 0x6a, 0x47, 0xa8, 0x9a, 0xf4, 0x8c, 0x38, + 0x61, 0x3b, 0x92, 0x76, 0x84, 0xaa, 0x49, 0xcf, 0xfc, 0x26, 0x94, 0x95, 0x6f, 0x42, 0x06, 0xbf, + 0x6a, 0x6a, 0x08, 0x69, 0xed, 0xc0, 0x1a, 0xd0, 0xbe, 0x55, 0x35, 0xe9, 0x19, 0x69, 0xed, 0xc0, + 0x1f, 0x1f, 0x7a, 0x64, 0xb0, 0xab, 0xa6, 0x86, 0x5a, 0x3f, 0x7c, 0x0f, 0x2a, 0xba, 0x51, 0xad, + 0x7f, 0x98, 0x83, 0xb2, 0x32, 0x28, 0xfc, 0x5b, 0x50, 0x0a, 0xe5, 0x85, 0x2b, 0xa8, 0x0d, 0x2b, + 0x0f, 0xbf, 0xb2, 0x80, 0x11, 0x5a, 0xef, 0x22, 0x83, 0xa9, 0xf8, 0x0c, 0x13, 0x4a, 0x04, 0xf3, + 0x0a, 0x14, 0x4c, 0xff, 0x39, 0x5b, 0xe2, 0x00, 0x65, 0x35, 0x59, 0x2c, 0x87, 0xc8, 0x6d, 0xe7, + 0x8c, 0xe5, 0x11, 0xb9, 0x2b, 0x2c, 0x5b, 0x04, 0xac, 0xc0, 0x1b, 0x50, 0x8b, 0xa6, 0x25, 0x64, + 0x45, 0xce, 0x60, 0x39, 0x35, 0xe1, 0x21, 0x2b, 0xb5, 0xfe, 0x47, 0x11, 0x8a, 0xb8, 0xfe, 0xf9, + 0x2b, 0xd0, 0x90, 0x56, 0x30, 0x10, 0xca, 0x11, 0x8e, 0x9d, 0x94, 0x2c, 0x92, 0xbf, 0x1f, 0xf5, + 0x21, 0x4f, 0x7d, 0xf8, 0xf2, 0x0b, 0xed, 0x4a, 0xa6, 0x07, 0xa9, 0x5d, 0xb8, 0xb0, 0xd8, 0x2e, + 0xbc, 0x03, 0x55, 0x34, 0x67, 0x5d, 0xe7, 0x07, 0x82, 0x86, 0x7e, 0xe5, 0xe1, 0xfd, 0x17, 0x7f, + 0xb2, 0xa3, 0x39, 0xcc, 0x98, 0x97, 0x77, 0xa0, 0xd6, 0xb7, 0x02, 0x9b, 0x1a, 0x43, 0xb3, 0xb5, + 0xf2, 0xf0, 0xab, 0x2f, 0x16, 0xb4, 0x15, 0xb1, 0x98, 0x09, 0x37, 0x3f, 0x84, 0xba, 0x2d, 0xc2, + 0x7e, 0xe0, 0x8c, 0xc9, 0xbc, 0xa9, 0xbd, 0xf8, 0x6b, 0x2f, 0x16, 0xb6, 0x9d, 0x30, 0x99, 0x69, + 0x09, 0xe8, 0x91, 0x05, 0xb1, 0x7d, 0xab, 0x90, 0x83, 0x90, 0x20, 0x8c, 0x77, 0xa0, 0x1a, 0xf5, + 0x87, 0x2f, 0x43, 0x15, 0xff, 0x1e, 0xf8, 0x9e, 0x60, 0x4b, 0x38, 0xb7, 0x08, 0x75, 0x47, 0x96, + 0xeb, 0xb2, 0x1c, 0x5f, 0x01, 0x40, 0x70, 0x5f, 0xd8, 0xce, 0x64, 0xc4, 0xf2, 0xc6, 0xaf, 0x44, + 0xda, 0x52, 0x85, 0xe2, 0x91, 0x35, 0x40, 0x8e, 0x65, 0xa8, 0x46, 0xe6, 0x9a, 0xe5, 0x90, 0x7f, + 0xdb, 0x0a, 0x87, 0xc7, 0xbe, 0x15, 0xd8, 0x2c, 0xcf, 0xeb, 0x50, 0xd9, 0x08, 0xfa, 0x43, 0xe7, + 0x4c, 0xb0, 0x82, 0xf1, 0x00, 0xea, 0xa9, 0xf6, 0xa2, 0x08, 0xfd, 0xd1, 0x1a, 0x94, 0x36, 0x6c, + 0x5b, 0xd8, 0x2c, 0x87, 0x0c, 0xba, 0x83, 0x2c, 0x6f, 0x7c, 0x15, 0x6a, 0xf1, 0x68, 0x21, 0x39, + 0x6e, 0xdc, 0x6c, 0x09, 0x9f, 0x10, 0xcd, 0x72, 0xa8, 0x95, 0x1d, 0xcf, 0x75, 0x3c, 0xc1, 0xf2, + 0xad, 0xff, 0x9f, 0x54, 0x95, 0x7f, 0x33, 0xbb, 0x20, 0x5e, 0x7d, 0xd1, 0xce, 0x9a, 0x5d, 0x0d, + 0x9f, 0x4f, 0xf5, 0x6f, 0xcf, 0xa1, 0xc6, 0x55, 0xa1, 0xb8, 0xed, 0xcb, 0x90, 0xe5, 0x5a, 0xff, + 0x35, 0x0f, 0xd5, 0x68, 0x43, 0xc5, 0x98, 0x60, 0x12, 0xb8, 0x5a, 0xa1, 0xf1, 0x91, 0x5f, 0x87, + 0x92, 0x74, 0xa4, 0x56, 0xe3, 0x9a, 0xa9, 0x00, 0xf4, 0xd5, 0xd2, 0x33, 0xab, 0x1c, 0xd8, 0xe9, + 0xa9, 0x72, 0x46, 0xd6, 0x40, 0xec, 0x5a, 0xe1, 0x50, 0xbb, 0xb0, 0x09, 0x02, 0xf9, 0x4f, 0xac, + 0x33, 0xd4, 0x39, 0x7a, 0xaf, 0xbc, 0xb8, 0x34, 0x8a, 0xbf, 0x09, 0x45, 0xec, 0xa0, 0x56, 0x9a, + 0x5f, 0x9e, 0xea, 0x30, 0xaa, 0xc9, 0x51, 0x20, 0x70, 0x7a, 0xd6, 0x31, 0x02, 0x33, 0x89, 0x98, + 0xbf, 0x0a, 0x2b, 0x6a, 0x11, 0x1e, 0x46, 0xf1, 0x43, 0x85, 0x24, 0x4f, 0x61, 0xf9, 0x06, 0x0e, + 0xa7, 0x25, 0x45, 0xb3, 0xba, 0x80, 0x7e, 0x47, 0x83, 0xb3, 0xde, 0x45, 0x16, 0x53, 0x71, 0x1a, + 0x6f, 0xe3, 0x98, 0x5a, 0x52, 0xe0, 0x34, 0xb7, 0x47, 0x63, 0x79, 0xa1, 0x94, 0x66, 0x47, 0xc8, + 0xfe, 0xd0, 0xf1, 0x06, 0x2c, 0xa7, 0x86, 0x18, 0x27, 0x91, 0x48, 0x82, 0xc0, 0x0f, 0x58, 0xa1, + 0xd5, 0x82, 0x22, 0xea, 0x28, 0x1a, 0x49, 0xcf, 0x1a, 0x09, 0x3d, 0xd2, 0xf4, 0xdc, 0xba, 0x06, + 0x6b, 0x33, 0xfb, 0x71, 0xeb, 0x0f, 0xca, 0x4a, 0x43, 0x90, 0x83, 0x7c, 0x41, 0xcd, 0x41, 0x6e, + 0xde, 0x4b, 0xd9, 0x18, 0x94, 0x92, 0xb5, 0x31, 0xef, 0x43, 0x09, 0x3b, 0x16, 0x99, 0x98, 0x05, + 0xd8, 0xf7, 0x91, 0xdc, 0x54, 0x5c, 0x18, 0xc1, 0xf4, 0x87, 0xa2, 0x7f, 0x2a, 0x6c, 0x6d, 0xeb, + 0x23, 0x10, 0x95, 0xa6, 0x9f, 0x72, 0xcf, 0x15, 0x40, 0x2a, 0xd1, 0xf7, 0xbd, 0xf6, 0xc8, 0xff, + 0xc4, 0xa1, 0x79, 0x45, 0x95, 0x88, 0x10, 0xd1, 0xdb, 0x0e, 0xea, 0x88, 0x9e, 0xb6, 0x04, 0xd1, + 0x6a, 0x43, 0x89, 0xbe, 0x8d, 0x2b, 0x41, 0xb5, 0x59, 0x65, 0x1a, 0x5e, 0x5d, 0xac, 0xcd, 0xba, + 0xc9, 0xad, 0x9f, 0xe4, 0xa1, 0x88, 0x30, 0xbf, 0x0f, 0xa5, 0x00, 0xe3, 0x30, 0x1a, 0xce, 0xcb, + 0x62, 0x36, 0x45, 0xc2, 0xbf, 0xa5, 0x55, 0x31, 0xbf, 0x80, 0xb2, 0xc4, 0x5f, 0x4c, 0xab, 0xe5, + 0x75, 0x28, 0x8d, 0xad, 0xc0, 0x1a, 0xe9, 0x75, 0xa2, 0x00, 0xe3, 0xc7, 0x39, 0x28, 0x22, 0x11, + 0x5f, 0x83, 0x46, 0x57, 0x06, 0xce, 0xa9, 0x90, 0xc3, 0xc0, 0x9f, 0x0c, 0x86, 0x4a, 0x93, 0x3e, + 0x12, 0x17, 0xca, 0xde, 0x28, 0x83, 0x20, 0x2d, 0xd7, 0xe9, 0xb3, 0x3c, 0x6a, 0xd5, 0xa6, 0xef, + 0xda, 0xac, 0xc0, 0x57, 0xa1, 0xfe, 0xd8, 0xb3, 0x45, 0x10, 0xf6, 0xfd, 0x40, 0xd8, 0xac, 0xa8, + 0x57, 0xf7, 0x29, 0x2b, 0xd1, 0x5e, 0x26, 0xce, 0x25, 0xc5, 0x42, 0xac, 0xcc, 0xaf, 0xc1, 0xea, + 0x66, 0x36, 0x40, 0x62, 0x15, 0xb4, 0x49, 0xfb, 0xc2, 0x43, 0x25, 0x63, 0x55, 0xa5, 0xc4, 0xfe, + 0x27, 0x0e, 0xab, 0xe1, 0xc7, 0xd4, 0x3a, 0x61, 0x60, 0xfc, 0x8b, 0x5c, 0x64, 0x39, 0x1a, 0x50, + 0x3b, 0xb2, 0x02, 0x6b, 0x10, 0x58, 0x63, 0x6c, 0x5f, 0x1d, 0x2a, 0x6a, 0xe3, 0x7c, 0x43, 0x59, + 0x37, 0x05, 0x3c, 0x54, 0xb6, 0x51, 0x01, 0x6f, 0xb2, 0x42, 0x02, 0xbc, 0xc5, 0x8a, 0xf8, 0x8d, + 0xef, 0x4c, 0x7c, 0x29, 0x58, 0x89, 0x6c, 0x9d, 0x6f, 0x0b, 0x56, 0x46, 0x64, 0x0f, 0x2d, 0x0a, + 0xab, 0x60, 0x9f, 0xb7, 0x50, 0x7f, 0x8e, 0xfd, 0x73, 0x56, 0xc5, 0x66, 0xe0, 0x30, 0x0a, 0x9b, + 0xd5, 0xf0, 0xcd, 0xc1, 0x64, 0x74, 0x2c, 0xb0, 0x9b, 0x80, 0x6f, 0x7a, 0xfe, 0x60, 0xe0, 0x0a, + 0x56, 0xc7, 0x31, 0x48, 0x19, 0x5f, 0xb6, 0x4c, 0x96, 0xd6, 0x72, 0x5d, 0x7f, 0x22, 0x59, 0xa3, + 0xf5, 0xa7, 0x05, 0x28, 0x62, 0x74, 0x83, 0x6b, 0x67, 0x88, 0x76, 0x46, 0xaf, 0x1d, 0x7c, 0x8e, + 0x57, 0x60, 0x3e, 0x59, 0x81, 0xfc, 0x3d, 0x3d, 0xd3, 0x85, 0x05, 0xac, 0x2c, 0x0a, 0x4e, 0x4f, + 0x32, 0x87, 0xe2, 0xc8, 0x19, 0x09, 0x6d, 0xeb, 0xe8, 0x19, 0x71, 0x21, 0xee, 0xc7, 0x25, 0x4a, + 0x9e, 0xd0, 0x33, 0xae, 0x1a, 0x0b, 0xb7, 0x85, 0x0d, 0x49, 0x6b, 0xa0, 0x60, 0x46, 0xe0, 0x1c, + 0xeb, 0x55, 0x9b, 0x6b, 0xbd, 0xde, 0x8f, 0xac, 0x57, 0x65, 0x81, 0x55, 0x4f, 0xcd, 0x4c, 0x5b, + 0xae, 0xc4, 0x68, 0x54, 0x17, 0x67, 0x4f, 0x6d, 0x26, 0xdb, 0x5a, 0x6b, 0x93, 0x8d, 0xae, 0xaa, + 0x46, 0x99, 0xe5, 0x70, 0x36, 0x69, 0xb9, 0x2a, 0x9b, 0xf7, 0xc4, 0xb1, 0x85, 0xcf, 0x0a, 0xb4, + 0x11, 0x4e, 0x6c, 0xc7, 0x67, 0x45, 0xf4, 0xbc, 0x8e, 0xb6, 0x77, 0x58, 0xc9, 0x78, 0x35, 0xb5, + 0x25, 0x6d, 0x4c, 0xa4, 0xaf, 0xc4, 0x90, 0xfa, 0xe6, 0x94, 0x36, 0x1e, 0x0b, 0x9b, 0xe5, 0x8d, + 0xaf, 0xcf, 0x31, 0xb3, 0x0d, 0xa8, 0x3d, 0x1e, 0xbb, 0xbe, 0x65, 0x5f, 0x61, 0x67, 0x97, 0x01, + 0x92, 0xa8, 0xba, 0xf5, 0xc7, 0xbf, 0x9c, 0x6c, 0xe7, 0xe8, 0x8b, 0x86, 0xfe, 0x24, 0xe8, 0x0b, + 0x32, 0x21, 0x35, 0x53, 0x43, 0xfc, 0xdb, 0x50, 0xc2, 0xf7, 0x51, 0x1a, 0xe7, 0xfe, 0x42, 0xb1, + 0xdc, 0xfa, 0x13, 0x47, 0x3c, 0x37, 0x15, 0x23, 0xbf, 0x03, 0x60, 0xf5, 0xa5, 0x73, 0x26, 0x10, + 0xa9, 0x17, 0x7b, 0x0a, 0xc3, 0xdf, 0x4e, 0xbb, 0x2f, 0x57, 0xe7, 0x21, 0x53, 0x7e, 0x0d, 0x37, + 0xa1, 0x8e, 0x4b, 0x77, 0x7c, 0x18, 0xe0, 0x6a, 0x6f, 0x2e, 0x13, 0xe3, 0xeb, 0x8b, 0x35, 0xef, + 0x51, 0xcc, 0x68, 0xa6, 0x85, 0xf0, 0xc7, 0xb0, 0xac, 0x72, 0x6a, 0x5a, 0x68, 0x83, 0x84, 0xbe, + 0xb1, 0x98, 0xd0, 0xc3, 0x84, 0xd3, 0xcc, 0x88, 0x99, 0x4d, 0x4b, 0x96, 0x5e, 0x3a, 0x2d, 0xf9, + 0x2a, 0xac, 0xf4, 0xb2, 0xab, 0x40, 0x6d, 0x15, 0x53, 0x58, 0x6e, 0xc0, 0xb2, 0x13, 0x26, 0x59, + 0x51, 0xca, 0x91, 0x54, 0xcd, 0x0c, 0xae, 0xf5, 0xef, 0xca, 0x50, 0xa4, 0x91, 0x9f, 0xce, 0x71, + 0x6d, 0x65, 0x4c, 0xfa, 0x83, 0xc5, 0xa7, 0x7a, 0x6a, 0xc5, 0x93, 0x05, 0x29, 0xa4, 0x2c, 0xc8, + 0xb7, 0xa1, 0x14, 0xfa, 0x81, 0x8c, 0xa6, 0x77, 0x41, 0x25, 0xea, 0xfa, 0x81, 0x34, 0x15, 0x23, + 0xdf, 0x81, 0xca, 0x89, 0xe3, 0x4a, 0x9c, 0x14, 0x35, 0x78, 0xaf, 0x2d, 0x26, 0x63, 0x87, 0x98, + 0xcc, 0x88, 0x99, 0xef, 0xa5, 0x95, 0xad, 0x4c, 0x92, 0xd6, 0x17, 0x93, 0x34, 0x4f, 0x07, 0xef, + 0x03, 0xeb, 0xfb, 0x67, 0x22, 0x30, 0x53, 0x89, 0x49, 0xb5, 0x49, 0xcf, 0xe0, 0x79, 0x0b, 0xaa, + 0x43, 0xc7, 0x16, 0xe8, 0xe7, 0x90, 0x8d, 0xa9, 0x9a, 0x31, 0xcc, 0x3f, 0x82, 0x2a, 0xc5, 0x07, + 0x68, 0x15, 0x6b, 0x2f, 0x3d, 0xf8, 0x2a, 0x54, 0x89, 0x04, 0xe0, 0x87, 0xe8, 0xe3, 0x3b, 0x8e, + 0xa4, 0xfc, 0x74, 0xd5, 0x8c, 0x61, 0x6c, 0x30, 0xe9, 0x7b, 0xba, 0xc1, 0x75, 0xd5, 0xe0, 0x69, + 0x3c, 0x7f, 0x0b, 0x6e, 0x10, 0x6e, 0x6a, 0x93, 0xc4, 0xa5, 0x86, 0x42, 0xe7, 0xbf, 0x44, 0x87, + 0x65, 0x6c, 0x0d, 0xc4, 0x9e, 0x33, 0x72, 0x64, 0xb3, 0x71, 0x37, 0x77, 0xaf, 0x64, 0x26, 0x08, + 0xfe, 0x1a, 0xac, 0xd9, 0xe2, 0xc4, 0x9a, 0xb8, 0xb2, 0x27, 0x46, 0x63, 0xd7, 0x92, 0xa2, 0x63, + 0x93, 0x8e, 0xd6, 0xcc, 0xd9, 0x17, 0xfc, 0x75, 0xb8, 0xa6, 0x91, 0x87, 0xf1, 0xa9, 0x42, 0xc7, + 0xa6, 0xf4, 0x5d, 0xcd, 0x9c, 0xf7, 0xca, 0xd8, 0xd7, 0x66, 0x18, 0x37, 0x50, 0x8c, 0x53, 0x23, + 0x03, 0x1a, 0x4a, 0xb5, 0x23, 0x3f, 0xb2, 0x5c, 0x57, 0x04, 0x17, 0x2a, 0xc8, 0xfd, 0xc8, 0xf2, + 0x8e, 0x2d, 0x8f, 0x15, 0x68, 0x8f, 0xb5, 0x5c, 0xe1, 0xd9, 0x56, 0xa0, 0x76, 0xe4, 0x47, 0xb4, + 0xa1, 0x97, 0x8c, 0x7b, 0x50, 0xa4, 0x21, 0xad, 0x41, 0x49, 0x45, 0x49, 0x14, 0x31, 0xeb, 0x08, + 0x89, 0x2c, 0xf2, 0x1e, 0x2e, 0x3f, 0x96, 0x6f, 0xfd, 0xac, 0x00, 0xd5, 0x68, 0xf0, 0xa2, 0x33, + 0x84, 0x5c, 0x72, 0x86, 0x80, 0x6e, 0x5c, 0xf8, 0xc4, 0x09, 0x9d, 0x63, 0xed, 0x96, 0x56, 0xcd, + 0x04, 0x81, 0x9e, 0xd0, 0x73, 0xc7, 0x96, 0x43, 0x5a, 0x33, 0x25, 0x53, 0x01, 0xfc, 0x1e, 0xac, + 0xda, 0x38, 0x0e, 0x5e, 0xdf, 0x9d, 0xd8, 0xa2, 0x87, 0xbb, 0xa8, 0x4a, 0x13, 0x4c, 0xa3, 0xf9, + 0xf7, 0x00, 0xa4, 0x33, 0x12, 0x3b, 0x7e, 0x30, 0xb2, 0xa4, 0x8e, 0x0d, 0xbe, 0xf1, 0x72, 0x5a, + 0xbd, 0xde, 0x8b, 0x05, 0x98, 0x29, 0x61, 0x28, 0x1a, 0xbf, 0xa6, 0x45, 0x57, 0x3e, 0x93, 0xe8, + 0xed, 0x58, 0x80, 0x99, 0x12, 0x66, 0xfc, 0x2a, 0x40, 0xf2, 0x86, 0xdf, 0x04, 0xbe, 0xef, 0x7b, + 0x72, 0xb8, 0x71, 0x7c, 0x1c, 0x6c, 0x8a, 0x13, 0x3f, 0x10, 0xdb, 0x16, 0x6e, 0x6b, 0x37, 0x60, + 0x2d, 0xc6, 0x6f, 0x9c, 0x48, 0x11, 0x20, 0x9a, 0x86, 0xbe, 0x3b, 0xf4, 0x03, 0xa9, 0x7c, 0x2b, + 0x7a, 0x7c, 0xdc, 0x65, 0x05, 0xdc, 0x4a, 0x3b, 0xdd, 0x43, 0x56, 0x34, 0xee, 0x01, 0x24, 0x5d, + 0xa2, 0x18, 0x84, 0x9e, 0xde, 0x78, 0xa8, 0x23, 0x12, 0x82, 0x1e, 0xbe, 0xc5, 0x72, 0xad, 0x3f, + 0x2a, 0x40, 0x11, 0x4d, 0x0d, 0x86, 0x5f, 0xe9, 0x75, 0xa1, 0xa6, 0x2f, 0x8d, 0xfa, 0x6c, 0x06, + 0x12, 0x65, 0xa7, 0x0d, 0xe4, 0xbb, 0x50, 0xef, 0x4f, 0x42, 0xe9, 0x8f, 0x68, 0x77, 0xd0, 0x07, + 0x30, 0x37, 0x67, 0x12, 0x19, 0x4f, 0x2c, 0x77, 0x22, 0xcc, 0x34, 0x29, 0x7f, 0x1b, 0xca, 0x27, + 0x6a, 0x22, 0x54, 0x2a, 0xe3, 0x97, 0x2e, 0xd9, 0x40, 0xf4, 0x60, 0x6b, 0x62, 0xec, 0x97, 0x33, + 0xa3, 0x44, 0x69, 0x94, 0xde, 0x08, 0xca, 0xf1, 0x46, 0xf0, 0xab, 0xb0, 0x22, 0xd0, 0xad, 0x38, + 0x72, 0xad, 0xbe, 0x18, 0x09, 0x2f, 0x9a, 0xf9, 0xb7, 0x5e, 0xa2, 0xc7, 0xe4, 0x97, 0x50, 0xb7, + 0xa7, 0x64, 0x19, 0x5f, 0xd2, 0x8b, 0xb4, 0x02, 0x85, 0x8d, 0xb0, 0xaf, 0xc3, 0x6e, 0x11, 0xf6, + 0x95, 0x4f, 0xbf, 0x45, 0x1d, 0x66, 0x79, 0xe3, 0x0d, 0xa8, 0xc5, 0x32, 0x38, 0x83, 0xe5, 0x03, + 0x5f, 0x76, 0xc7, 0xa2, 0xef, 0x9c, 0x38, 0xc2, 0x56, 0x89, 0x84, 0xae, 0xb4, 0x02, 0xa9, 0x32, + 0x57, 0x6d, 0xcf, 0x66, 0xf9, 0xd6, 0xef, 0x57, 0xa1, 0xac, 0x2c, 0xbe, 0xee, 0x52, 0x2d, 0xee, + 0xd2, 0x77, 0xa0, 0xea, 0x8f, 0x45, 0x60, 0x49, 0x3f, 0xd0, 0xe9, 0x82, 0xb7, 0x5f, 0x66, 0x07, + 0x59, 0x3f, 0xd4, 0xcc, 0x66, 0x2c, 0x66, 0x5a, 0x5f, 0xf2, 0xb3, 0xfa, 0x72, 0x1f, 0x58, 0xb4, + 0x59, 0x1c, 0x05, 0xc8, 0x27, 0x2f, 0x74, 0xf0, 0x37, 0x83, 0xe7, 0x3d, 0xa8, 0xf5, 0x7d, 0xcf, + 0x76, 0xe2, 0xd4, 0xc1, 0xca, 0xc3, 0xaf, 0xbf, 0x54, 0x0b, 0xb7, 0x22, 0x6e, 0x33, 0x11, 0xc4, + 0x5f, 0x83, 0xd2, 0x19, 0x2a, 0x12, 0x69, 0xcc, 0xe5, 0x6a, 0xa6, 0x88, 0xf8, 0xc7, 0x50, 0xff, + 0xfe, 0xc4, 0xe9, 0x9f, 0x1e, 0xa6, 0x53, 0x53, 0xef, 0xbe, 0x54, 0x2b, 0xbe, 0x93, 0xf0, 0x9b, + 0x69, 0x61, 0x29, 0xe5, 0xad, 0xfc, 0x19, 0x94, 0xb7, 0x3a, 0xab, 0xbc, 0x26, 0x34, 0x3c, 0x11, + 0x4a, 0x61, 0xef, 0x68, 0x07, 0x01, 0x3e, 0x83, 0x83, 0x90, 0x15, 0x61, 0x7c, 0x11, 0xaa, 0xd1, + 0x84, 0xf3, 0x32, 0xe4, 0x0f, 0xd0, 0x13, 0x2f, 0x43, 0xfe, 0x30, 0x50, 0xda, 0xb6, 0x81, 0xda, + 0x66, 0xfc, 0x49, 0x0e, 0x6a, 0xf1, 0xa0, 0x67, 0x53, 0x5c, 0xed, 0xef, 0x4f, 0x2c, 0x97, 0xe5, + 0x28, 0x46, 0xf3, 0xa5, 0x82, 0xc8, 0x52, 0x3d, 0xa2, 0x13, 0xe2, 0x80, 0x15, 0x68, 0x5f, 0x12, + 0x61, 0xc8, 0x8a, 0x9c, 0xc3, 0x8a, 0x46, 0x1f, 0x06, 0x8a, 0xb4, 0x84, 0x21, 0x1c, 0xbe, 0x8d, + 0x10, 0x65, 0xb5, 0x8d, 0x9d, 0x0a, 0x15, 0xa2, 0x1e, 0xf8, 0x92, 0x80, 0x2a, 0x36, 0xaa, 0xe3, + 0xb1, 0x1a, 0x7e, 0xf3, 0xc0, 0x97, 0x1d, 0x8f, 0x41, 0x12, 0x13, 0xd4, 0xa3, 0xcf, 0x13, 0xb4, + 0x4c, 0x11, 0x87, 0xeb, 0x76, 0x3c, 0xd6, 0xd0, 0x2f, 0x14, 0xb4, 0x82, 0x12, 0xdb, 0xe7, 0x56, + 0x1f, 0xd9, 0x57, 0xf9, 0x0a, 0x00, 0xf2, 0x68, 0x98, 0xe1, 0x92, 0x6c, 0x9f, 0x3b, 0xa1, 0x0c, + 0xd9, 0x9a, 0xf1, 0x6f, 0x73, 0x50, 0x4f, 0x4d, 0x30, 0xc6, 0x1c, 0x44, 0x88, 0x76, 0x5c, 0x85, + 0x20, 0xdf, 0xc3, 0x61, 0x0c, 0xec, 0xc8, 0x46, 0xf7, 0x7c, 0x7c, 0xcc, 0xe3, 0xf7, 0x7a, 0xfe, + 0xc8, 0x0f, 0x02, 0xff, 0xb9, 0xda, 0x6f, 0xf7, 0xac, 0x50, 0x3e, 0x15, 0xe2, 0x94, 0x15, 0xb1, + 0xab, 0x5b, 0x93, 0x20, 0x10, 0x9e, 0x42, 0x94, 0xa8, 0x71, 0xe2, 0x5c, 0x41, 0x65, 0x14, 0x8a, + 0xc4, 0xb4, 0x09, 0xb0, 0x0a, 0x1a, 0x02, 0x4d, 0xad, 0x30, 0x55, 0x24, 0x40, 0x72, 0x05, 0xd6, + 0x30, 0xac, 0x57, 0x61, 0xf1, 0xe1, 0xc9, 0xb6, 0x75, 0x11, 0x6e, 0x0c, 0x7c, 0x06, 0xd3, 0xc8, + 0x03, 0xff, 0x39, 0xab, 0xb7, 0x26, 0x00, 0x49, 0x20, 0x80, 0x01, 0x10, 0x2a, 0x44, 0x9c, 0xb8, + 0xd6, 0x10, 0x3f, 0x04, 0xc0, 0x27, 0xa2, 0x8c, 0xa2, 0xa0, 0x97, 0xf0, 0xce, 0x88, 0xcf, 0x4c, + 0x89, 0x68, 0xfd, 0x65, 0xa8, 0xc5, 0x2f, 0x30, 0xee, 0x25, 0x3f, 0x2a, 0xfe, 0x6c, 0x04, 0xa2, + 0x53, 0xe0, 0x78, 0xb6, 0x38, 0x27, 0xbb, 0x52, 0x32, 0x15, 0x80, 0xad, 0x1c, 0x3a, 0xb6, 0x2d, + 0xbc, 0xe8, 0x78, 0x41, 0x41, 0xf3, 0x0e, 0x81, 0x8b, 0x73, 0x0f, 0x81, 0x5b, 0xbf, 0x06, 0xf5, + 0x54, 0xa4, 0x72, 0x69, 0xb7, 0x53, 0x0d, 0xcb, 0x67, 0x1b, 0x76, 0x1b, 0x6a, 0x51, 0xe1, 0x41, + 0x48, 0xbb, 0x57, 0xcd, 0x4c, 0x10, 0xad, 0x7f, 0x9e, 0x47, 0xf7, 0x09, 0xbb, 0x36, 0x1d, 0x5d, + 0xec, 0x40, 0x19, 0x43, 0xed, 0x49, 0x74, 0x82, 0xbe, 0xe0, 0x02, 0xed, 0x12, 0xcf, 0xee, 0x92, + 0xa9, 0xb9, 0xf9, 0xfb, 0x50, 0x90, 0xd6, 0x40, 0x67, 0xe7, 0xbe, 0xb2, 0x98, 0x90, 0x9e, 0x35, + 0xd8, 0x5d, 0x32, 0x91, 0x8f, 0xef, 0x41, 0xb5, 0xaf, 0x13, 0x2a, 0xda, 0x28, 0x2e, 0x18, 0x00, + 0x44, 0x69, 0x98, 0xdd, 0x25, 0x33, 0x96, 0xc0, 0xbf, 0x0d, 0x45, 0x74, 0x69, 0x74, 0xa1, 0xc1, + 0x82, 0x81, 0x0d, 0x2e, 0x97, 0xdd, 0x25, 0x93, 0x38, 0x37, 0x2b, 0x50, 0x22, 0x1b, 0xdc, 0x6a, + 0x42, 0x59, 0xf5, 0x75, 0x7a, 0xe4, 0x5a, 0xb7, 0xa0, 0xd0, 0xb3, 0x06, 0xe8, 0x56, 0x3a, 0x76, + 0xa8, 0xe3, 0x73, 0x7c, 0x6c, 0xbd, 0x92, 0x24, 0x87, 0xd2, 0x79, 0xc7, 0x5c, 0x26, 0xef, 0xd8, + 0x2a, 0x43, 0x11, 0xbf, 0xd8, 0xba, 0x7d, 0x95, 0x8b, 0xda, 0xfa, 0x9f, 0x79, 0xf4, 0x66, 0xa5, + 0x38, 0x9f, 0x9b, 0x53, 0xfd, 0x10, 0x6a, 0xe3, 0xc0, 0xef, 0x8b, 0x30, 0xf4, 0x03, 0xed, 0xfe, + 0xbc, 0xf6, 0xe2, 0xf3, 0xce, 0xf5, 0xa3, 0x88, 0xc7, 0x4c, 0xd8, 0x8d, 0xbf, 0x95, 0x87, 0x5a, + 0xfc, 0x42, 0x39, 0xd1, 0x52, 0x9c, 0xab, 0xfc, 0xd9, 0xbe, 0x08, 0x46, 0x96, 0x63, 0x2b, 0xeb, + 0xb1, 0x35, 0xb4, 0x22, 0x0f, 0xef, 0x7b, 0xfe, 0x44, 0x4e, 0x8e, 0x85, 0xca, 0x9b, 0x3c, 0x71, + 0x46, 0xc2, 0x67, 0x45, 0x3a, 0xb1, 0x40, 0xc5, 0xee, 0xbb, 0xfe, 0xc4, 0x66, 0x25, 0x84, 0x1f, + 0xd1, 0xf6, 0xb6, 0x6f, 0x8d, 0x43, 0x65, 0x33, 0xf7, 0x9d, 0xc0, 0x67, 0x15, 0x64, 0xda, 0x71, + 0x06, 0x23, 0x8b, 0x55, 0x51, 0x58, 0xef, 0xb9, 0x23, 0xd1, 0x08, 0xd7, 0xf8, 0x1a, 0x34, 0x0e, + 0xc7, 0xc2, 0xeb, 0xca, 0x40, 0x08, 0xb9, 0x6f, 0x8d, 0x55, 0x22, 0xcd, 0x14, 0xb6, 0xed, 0x48, + 0x65, 0x3f, 0x77, 0xac, 0xbe, 0x38, 0xf6, 0xfd, 0x53, 0xb6, 0x8c, 0x86, 0xa6, 0xe3, 0x85, 0xd2, + 0x1a, 0x04, 0xd6, 0x48, 0xd9, 0xd0, 0x9e, 0x70, 0x05, 0x41, 0x2b, 0xf4, 0x6d, 0x47, 0x0e, 0x27, + 0xc7, 0x8f, 0x30, 0xd8, 0x58, 0x55, 0x87, 0x1b, 0xb6, 0x18, 0x0b, 0xb4, 0xa1, 0xcb, 0x50, 0xdd, + 0x74, 0x5c, 0xe7, 0xd8, 0x71, 0x1d, 0xb6, 0x86, 0xa4, 0xed, 0xf3, 0xbe, 0xe5, 0x3a, 0x76, 0x60, + 0x3d, 0x67, 0xbc, 0xb5, 0x06, 0xab, 0x53, 0xe7, 0xba, 0xad, 0x8a, 0x8e, 0x5f, 0x5a, 0x0d, 0xa8, + 0xa7, 0x0e, 0xdc, 0x5a, 0xaf, 0x42, 0x35, 0x3a, 0x8e, 0xc3, 0x38, 0xcf, 0x09, 0x55, 0x22, 0x51, + 0xcf, 0x78, 0x0c, 0xb7, 0xfe, 0x30, 0x07, 0x65, 0x75, 0x16, 0xca, 0x37, 0xe3, 0xda, 0x85, 0xdc, + 0x02, 0xe7, 0x5f, 0x8a, 0x49, 0x9f, 0x1e, 0xc6, 0x05, 0x0c, 0xd7, 0xa1, 0xe4, 0x52, 0x40, 0xa7, + 0x6d, 0x11, 0x01, 0x29, 0xd3, 0x51, 0x48, 0x9b, 0x0e, 0x63, 0x23, 0x3e, 0xb1, 0x8c, 0x92, 0x57, + 0xe4, 0xe2, 0xf5, 0x02, 0x21, 0x54, 0x62, 0x8a, 0xe2, 0xb1, 0x3c, 0x19, 0x7e, 0x7f, 0x34, 0xb6, + 0xfa, 0x92, 0x10, 0xb4, 0x25, 0xa2, 0x65, 0x64, 0x45, 0x54, 0xd9, 0xad, 0xa1, 0x25, 0x8d, 0x13, + 0xa8, 0x1e, 0xf9, 0xe1, 0xf4, 0x06, 0x5b, 0x81, 0x42, 0xcf, 0x1f, 0x2b, 0x77, 0x71, 0xd3, 0x97, + 0xe4, 0x2e, 0xaa, 0xfd, 0xf4, 0x44, 0x2a, 0x0d, 0x31, 0x9d, 0xc1, 0x50, 0xaa, 0x58, 0xae, 0xe3, + 0x79, 0x22, 0x60, 0x25, 0x9c, 0x10, 0x53, 0x8c, 0xd1, 0x09, 0x65, 0x65, 0x9c, 0x02, 0xc2, 0xef, + 0x38, 0x41, 0x28, 0x59, 0xc5, 0xe8, 0xe0, 0xd6, 0xe8, 0x0c, 0x68, 0x47, 0xa3, 0x07, 0x12, 0xb5, + 0x84, 0x4d, 0x24, 0x70, 0x4b, 0x78, 0xa8, 0x30, 0x74, 0x48, 0xa6, 0xca, 0x5b, 0xe8, 0x03, 0x79, + 0xdc, 0x8e, 0x08, 0xfe, 0x70, 0x12, 0x4a, 0xe7, 0xe4, 0x82, 0x15, 0x8c, 0xa7, 0xd0, 0xc8, 0x14, + 0xc2, 0xf0, 0xeb, 0xc0, 0x32, 0x08, 0x6c, 0xfa, 0x12, 0xbf, 0x05, 0xd7, 0x32, 0xd8, 0x7d, 0xc7, + 0xb6, 0x29, 0x5b, 0x38, 0xfd, 0x22, 0xea, 0xe0, 0x66, 0x0d, 0x2a, 0x7d, 0x35, 0x4b, 0xc6, 0x11, + 0x34, 0x68, 0xda, 0xf6, 0x85, 0xb4, 0x0e, 0x3d, 0xf7, 0xe2, 0xcf, 0x5c, 0xad, 0x64, 0x7c, 0x15, + 0x4a, 0x94, 0xdd, 0xc7, 0xc5, 0x7f, 0x12, 0xf8, 0x23, 0x92, 0x55, 0x32, 0xe9, 0x19, 0xa5, 0x4b, + 0x5f, 0xcf, 0x7d, 0x5e, 0xfa, 0xc6, 0xa7, 0x55, 0xa8, 0x6c, 0xf4, 0xfb, 0xfe, 0xc4, 0x93, 0x33, + 0x5f, 0x7e, 0x1b, 0xca, 0x7d, 0xdf, 0x3b, 0x71, 0x06, 0xda, 0xb8, 0x4e, 0xbb, 0x79, 0x9a, 0x0f, + 0x15, 0xee, 0xc4, 0x19, 0x98, 0x9a, 0x18, 0xd9, 0xf4, 0xe6, 0x50, 0xba, 0x92, 0x4d, 0x59, 0xc8, + 0x78, 0x2f, 0x78, 0x00, 0x45, 0xc7, 0x3b, 0xf1, 0x75, 0x69, 0xe1, 0xe7, 0x2f, 0x61, 0xa2, 0xfa, + 0x3a, 0x22, 0x6c, 0xfd, 0xe7, 0x1c, 0x94, 0xd5, 0xa7, 0xf9, 0xab, 0xb0, 0x22, 0x3c, 0x5c, 0x4c, + 0x91, 0x5d, 0xd6, 0xab, 0x68, 0x0a, 0x8b, 0x1e, 0xa8, 0xc6, 0x88, 0xe3, 0xc9, 0x40, 0x47, 0xef, + 0x69, 0x14, 0x7f, 0x17, 0x6e, 0x29, 0xf0, 0x28, 0x10, 0x81, 0x70, 0x85, 0x15, 0x8a, 0xad, 0xa1, + 0xe5, 0x79, 0xc2, 0xd5, 0xbb, 0xf4, 0x65, 0xaf, 0xb9, 0x01, 0xcb, 0xea, 0x55, 0x77, 0x6c, 0xf5, + 0x45, 0xa8, 0x4f, 0x8c, 0x32, 0x38, 0xfe, 0x35, 0x28, 0x51, 0xe5, 0x65, 0xd3, 0xbe, 0x7a, 0x2a, + 0x15, 0x55, 0xcb, 0x8f, 0xb7, 0x91, 0x0d, 0x00, 0x35, 0x4c, 0x18, 0x41, 0xe9, 0xd5, 0xff, 0x85, + 0x2b, 0xc7, 0x95, 0xc2, 0xb5, 0x14, 0x13, 0xb6, 0xcf, 0x16, 0xae, 0xa0, 0x12, 0x39, 0xdc, 0xe6, + 0xf2, 0x94, 0x9b, 0xcf, 0xe0, 0x5a, 0xbf, 0x51, 0x84, 0x22, 0x8e, 0x30, 0x12, 0x0f, 0xfd, 0x91, + 0x88, 0x33, 0x94, 0xca, 0x6f, 0xc8, 0xe0, 0xd0, 0x4f, 0xb1, 0xd4, 0x21, 0x71, 0x4c, 0xa6, 0x8c, + 0xc7, 0x34, 0x1a, 0x29, 0xc7, 0x81, 0x7f, 0xe2, 0xb8, 0x09, 0xa5, 0xf6, 0x68, 0xa6, 0xd0, 0xfc, + 0xeb, 0x70, 0x73, 0x64, 0x05, 0xa7, 0x42, 0xd2, 0xea, 0x7e, 0xea, 0x07, 0xa7, 0x21, 0x8e, 0x5c, + 0xc7, 0xd6, 0xa9, 0xad, 0x4b, 0xde, 0xa2, 0x01, 0xb5, 0xc5, 0x99, 0x43, 0x94, 0x55, 0x55, 0x51, + 0x19, 0xc1, 0xa8, 0x1c, 0x96, 0x1a, 0x9a, 0xae, 0x96, 0xa5, 0x4f, 0x1d, 0xb2, 0x58, 0x74, 0x86, + 0x54, 0xa5, 0x49, 0xd8, 0xb1, 0x29, 0xdb, 0x56, 0x33, 0x13, 0x04, 0xaa, 0x0e, 0x7d, 0xec, 0x89, + 0x32, 0x93, 0x0d, 0x15, 0x21, 0xa6, 0x50, 0x48, 0x21, 0x45, 0x7f, 0x18, 0x7d, 0x44, 0xa5, 0xc2, + 0xd2, 0x28, 0x7e, 0x07, 0x60, 0x60, 0x49, 0xf1, 0xdc, 0xba, 0x78, 0x1c, 0xb8, 0x4d, 0xa1, 0xd2, + 0xe7, 0x09, 0x06, 0x63, 0x4c, 0xd7, 0xef, 0x5b, 0x6e, 0x57, 0xfa, 0x81, 0x35, 0x10, 0x47, 0x96, + 0x1c, 0x36, 0x07, 0x2a, 0xc6, 0x9c, 0xc6, 0x63, 0x8f, 0xa5, 0x33, 0x12, 0x1f, 0xfb, 0x9e, 0x68, + 0x0e, 0x55, 0x8f, 0x23, 0x18, 0x5b, 0x62, 0x79, 0x96, 0x7b, 0x21, 0x9d, 0x3e, 0xf6, 0xc5, 0x51, + 0x2d, 0x49, 0xa1, 0xb0, 0xaf, 0x9e, 0x90, 0xcf, 0xfd, 0xe0, 0xb4, 0x63, 0x37, 0x3f, 0x51, 0x7d, + 0x8d, 0x11, 0xc6, 0x21, 0x40, 0xa2, 0x44, 0x68, 0x99, 0x37, 0x28, 0xc5, 0xcf, 0x96, 0xd0, 0xf9, + 0x3e, 0x12, 0x9e, 0xed, 0x78, 0x83, 0x6d, 0xad, 0x37, 0x2c, 0x87, 0x48, 0x0a, 0xdf, 0x85, 0x1d, + 0x23, 0x69, 0xa3, 0x27, 0x48, 0xd8, 0xac, 0x60, 0xfc, 0xef, 0x1c, 0xd4, 0x53, 0x27, 0xda, 0x7f, + 0x8e, 0xa7, 0xf0, 0xb8, 0x73, 0x8e, 0xac, 0x81, 0xc0, 0x01, 0x55, 0x3a, 0x15, 0xc3, 0x38, 0xdc, + 0xfa, 0xc0, 0x1d, 0xdf, 0xaa, 0x60, 0x3d, 0x85, 0xf9, 0x4c, 0x27, 0xf0, 0xc6, 0x43, 0x9d, 0xf1, + 0xa8, 0x43, 0xe5, 0xb1, 0x77, 0xea, 0xf9, 0xcf, 0x3d, 0xb5, 0x25, 0x52, 0x59, 0x45, 0xe6, 0x80, + 0x28, 0xaa, 0x7c, 0x28, 0x18, 0xff, 0xa4, 0x38, 0x55, 0x81, 0xd4, 0x86, 0xb2, 0x72, 0xb3, 0xc9, + 0x03, 0x9c, 0x2d, 0x19, 0x49, 0x13, 0xeb, 0xc3, 0x88, 0x14, 0xca, 0xd4, 0xcc, 0xe8, 0xff, 0xc6, + 0xf5, 0x79, 0xf9, 0xb9, 0x87, 0x26, 0x19, 0x41, 0x91, 0x19, 0xcc, 0x94, 0xa8, 0xc6, 0x12, 0x5a, + 0x7f, 0x23, 0x07, 0xd7, 0xe7, 0x91, 0xa4, 0x0b, 0x79, 0x73, 0xd9, 0x42, 0xde, 0xee, 0x54, 0x61, + 0x6c, 0x9e, 0x7a, 0xf3, 0xe0, 0x25, 0x1b, 0x91, 0x2d, 0x93, 0x35, 0x7e, 0x92, 0x83, 0xb5, 0x99, + 0x3e, 0xa7, 0x5c, 0x06, 0x80, 0xb2, 0xd2, 0x2c, 0x55, 0xb7, 0x12, 0x57, 0x12, 0xa8, 0x4c, 0x30, + 0x6d, 0xa6, 0xa1, 0x3a, 0x9a, 0xd5, 0xa5, 0xc0, 0xca, 0xbd, 0xc4, 0x59, 0x43, 0x5b, 0x3d, 0x10, + 0xac, 0x84, 0x7b, 0xbd, 0xf2, 0x6b, 0x34, 0xa6, 0xac, 0x5c, 0x40, 0x95, 0xae, 0x66, 0x15, 0xaa, + 0x87, 0x99, 0x8c, 0x5d, 0xa7, 0x8f, 0x60, 0x95, 0xb7, 0xe0, 0xa6, 0xaa, 0x07, 0xd7, 0xe1, 0xd6, + 0x49, 0x6f, 0xe8, 0xd0, 0xe2, 0x60, 0x35, 0xc3, 0x84, 0x6b, 0x73, 0xfa, 0x44, 0xad, 0x7c, 0xa2, + 0x5b, 0xbc, 0x02, 0xb0, 0xfd, 0x24, 0x6a, 0x27, 0xcb, 0x71, 0x0e, 0x2b, 0xdb, 0x4f, 0xd2, 0x02, + 0xf5, 0x7a, 0x79, 0x82, 0x96, 0x24, 0x64, 0x05, 0xe3, 0x37, 0x73, 0xd1, 0x19, 0x75, 0xeb, 0x2f, + 0x41, 0x43, 0xb5, 0xf1, 0xc8, 0xba, 0x70, 0x7d, 0xcb, 0xe6, 0x6d, 0x58, 0x09, 0xe3, 0x4b, 0x0a, + 0xa9, 0xed, 0x60, 0x7a, 0x9b, 0xed, 0x66, 0x88, 0xcc, 0x29, 0xa6, 0x28, 0x6a, 0xc8, 0x27, 0x89, + 0x6d, 0x4e, 0xf1, 0x8f, 0x45, 0xab, 0x6c, 0x99, 0x22, 0x1a, 0xcb, 0xf8, 0x1a, 0xac, 0x91, 0xf1, + 0x52, 0x8d, 0x51, 0x1e, 0x29, 0xea, 0x83, 0xb2, 0xbb, 0xdb, 0x91, 0x3e, 0x68, 0xd0, 0xf8, 0x37, + 0x65, 0x80, 0x24, 0x89, 0x3f, 0x67, 0x99, 0xcf, 0x3b, 0x93, 0x9e, 0x39, 0x52, 0x2b, 0xbc, 0xf4, + 0x91, 0xda, 0xbb, 0xb1, 0x63, 0xac, 0xb2, 0xa9, 0xd3, 0x85, 0xb9, 0x49, 0x9b, 0xa6, 0xdd, 0xe1, + 0x4c, 0xc9, 0x46, 0x69, 0xba, 0x64, 0xe3, 0xee, 0x6c, 0x7d, 0xd7, 0x94, 0xfd, 0x49, 0x82, 0xf8, + 0x4a, 0x26, 0x88, 0x6f, 0x41, 0x35, 0x10, 0x96, 0xed, 0x7b, 0xee, 0x45, 0x74, 0x72, 0x13, 0xc1, + 0xfc, 0x4d, 0x28, 0x49, 0xba, 0x67, 0x51, 0xa5, 0xe5, 0xf2, 0x82, 0x89, 0x53, 0xb4, 0x68, 0xcc, + 0x9c, 0x50, 0x17, 0x65, 0xa9, 0x1d, 0xac, 0x6a, 0xa6, 0x30, 0x7c, 0x1d, 0xb8, 0x83, 0x11, 0x8d, + 0xeb, 0x0a, 0x7b, 0xf3, 0x62, 0x5b, 0x1d, 0xa8, 0xd0, 0xae, 0x59, 0x35, 0xe7, 0xbc, 0x89, 0xe6, + 0x7f, 0x39, 0x99, 0x7f, 0x6a, 0xf2, 0x99, 0x13, 0x62, 0x4f, 0x1b, 0xe4, 0x1c, 0xc4, 0x30, 0xee, + 0xcb, 0xd1, 0x1a, 0x55, 0x63, 0x49, 0xda, 0x9b, 0x9c, 0x4a, 0x5e, 0xf2, 0xd6, 0xf8, 0x83, 0x7c, + 0x1c, 0x40, 0xd4, 0xa0, 0x74, 0x6c, 0x85, 0x4e, 0x5f, 0x05, 0x87, 0x7a, 0xe3, 0x57, 0x41, 0x84, + 0xf4, 0x6d, 0x9f, 0xe5, 0x31, 0x16, 0x08, 0x05, 0x7a, 0xfd, 0x2b, 0x00, 0xc9, 0xdd, 0x13, 0x56, + 0xc4, 0xb5, 0x19, 0xcd, 0xb7, 0xaa, 0xad, 0x20, 0x56, 0xca, 0x27, 0xd9, 0x71, 0xd5, 0x1a, 0x45, + 0x86, 0x64, 0xfb, 0x59, 0x15, 0x69, 0x3c, 0x5f, 0x0a, 0x95, 0x4d, 0x23, 0xed, 0x64, 0x80, 0x62, + 0xa2, 0x62, 0x6a, 0x56, 0x47, 0xe7, 0x3c, 0x12, 0xaa, 0x52, 0x60, 0x21, 0x85, 0x2e, 0xcb, 0xb8, + 0x3a, 0xb3, 0x2f, 0x58, 0x03, 0x5b, 0x94, 0x5c, 0x69, 0x61, 0x2b, 0x28, 0xd5, 0xa2, 0x13, 0xff, + 0x55, 0x7c, 0x3c, 0xa3, 0x3a, 0x00, 0x86, 0x5f, 0xb5, 0xd1, 0x60, 0xac, 0x61, 0xcb, 0x62, 0xd7, + 0x80, 0x71, 0x8c, 0x3d, 0xc6, 0x16, 0x06, 0x02, 0xce, 0xd8, 0xf2, 0x24, 0xbb, 0x86, 0x5d, 0x1d, + 0xdb, 0x27, 0xec, 0x3a, 0xb2, 0xf4, 0x87, 0x96, 0x64, 0x37, 0x90, 0x06, 0x9f, 0xb6, 0x45, 0x80, + 0xf3, 0xc9, 0x6e, 0x1a, 0xbf, 0x93, 0x94, 0x8b, 0xbe, 0x1e, 0x7b, 0xe6, 0x8b, 0xe8, 0x36, 0xfa, + 0xee, 0xf3, 0x16, 0x5a, 0x1b, 0xd6, 0x02, 0xf1, 0xfd, 0x89, 0x93, 0x29, 0xa2, 0x2e, 0x5c, 0x7d, + 0x4a, 0x3f, 0xcb, 0x61, 0x9c, 0xc1, 0x5a, 0x04, 0x3c, 0x75, 0xe4, 0x90, 0x32, 0x1e, 0xfc, 0xcd, + 0x54, 0x95, 0x77, 0x6e, 0xee, 0xed, 0x98, 0x58, 0x64, 0x52, 0xd5, 0x1d, 0x67, 0xb4, 0xf3, 0x0b, + 0x64, 0xb4, 0x8d, 0xff, 0x55, 0x4e, 0x25, 0x3d, 0x54, 0xac, 0x62, 0xc7, 0xb1, 0xca, 0xec, 0x39, + 0x5d, 0x92, 0xa4, 0xce, 0xbf, 0x4c, 0x92, 0x7a, 0xde, 0x99, 0xf7, 0x7b, 0xe8, 0x3a, 0xd3, 0xb2, + 0x79, 0xb2, 0x40, 0x02, 0x3e, 0x43, 0xcb, 0x37, 0xe9, 0xd4, 0xcd, 0xea, 0xaa, 0x82, 0x8c, 0xd2, + 0xdc, 0x3b, 0x17, 0xe9, 0xe3, 0x35, 0x4d, 0x69, 0xa6, 0xb8, 0x52, 0x46, 0xa6, 0x3c, 0xcf, 0xc8, + 0x60, 0xd8, 0xa8, 0xcd, 0x4f, 0x0c, 0xab, 0xf3, 0x0a, 0xf5, 0x1c, 0x89, 0xa7, 0xd3, 0xd6, 0xaa, + 0x39, 0x83, 0x47, 0xe7, 0x6b, 0x34, 0x71, 0xa5, 0xa3, 0x53, 0xf2, 0x0a, 0x98, 0xbe, 0x14, 0x56, + 0x9b, 0xbd, 0x14, 0xf6, 0x01, 0x40, 0x28, 0x70, 0x51, 0x6c, 0x3b, 0x7d, 0xa9, 0xcb, 0x36, 0xee, + 0x5c, 0xd6, 0x37, 0x7d, 0x90, 0x90, 0xe2, 0xc0, 0xf6, 0x8f, 0xac, 0xf3, 0x2d, 0x74, 0xc2, 0xf5, + 0xf9, 0x72, 0x0c, 0x4f, 0x9b, 0xde, 0x95, 0x59, 0xd3, 0xfb, 0x26, 0x94, 0xc2, 0xbe, 0x3f, 0x16, + 0x74, 0xaf, 0xe1, 0xf2, 0xf9, 0x5d, 0xef, 0x22, 0x91, 0xa9, 0x68, 0x29, 0xb5, 0x86, 0xc6, 0xc9, + 0x0f, 0xe8, 0x46, 0x43, 0xcd, 0x8c, 0xc0, 0x8c, 0xf9, 0xbb, 0x99, 0x35, 0x7f, 0x2d, 0x1b, 0xca, + 0x3a, 0x4d, 0x3e, 0x1d, 0x23, 0x47, 0x09, 0xb6, 0x7c, 0x2a, 0xc1, 0x16, 0x17, 0x07, 0x16, 0xd2, + 0xc5, 0x81, 0x53, 0x97, 0x9e, 0x4a, 0x33, 0x97, 0x9e, 0x8c, 0x8f, 0xa1, 0x44, 0x6d, 0x45, 0xdf, + 0x41, 0x0d, 0xb3, 0x72, 0x2d, 0xb1, 0x53, 0x2c, 0xc7, 0xaf, 0x03, 0x0b, 0x05, 0xf9, 0x1e, 0xa2, + 0x6b, 0x8d, 0x04, 0xd9, 0xc6, 0x3c, 0x6f, 0xc2, 0x75, 0x45, 0x1b, 0x66, 0xdf, 0x90, 0x03, 0xe4, + 0x3a, 0xc7, 0x81, 0x15, 0x5c, 0xb0, 0xa2, 0xf1, 0x01, 0x9d, 0xd0, 0x46, 0x0a, 0x55, 0x8f, 0x2f, + 0x99, 0x29, 0x6b, 0x6c, 0x6b, 0xa3, 0x43, 0x07, 0xeb, 0x3a, 0x2c, 0x52, 0xe5, 0x46, 0x14, 0x77, + 0x50, 0x2a, 0x64, 0x39, 0xbd, 0x01, 0xff, 0xb9, 0xad, 0x37, 0x63, 0x33, 0xe5, 0xc1, 0x65, 0xeb, + 0x87, 0x72, 0x8b, 0xd6, 0x0f, 0x19, 0x1f, 0xc1, 0xaa, 0x99, 0x35, 0xe5, 0xfc, 0x5d, 0xa8, 0xf8, + 0xe3, 0xb4, 0x9c, 0x17, 0xe9, 0x65, 0x44, 0x6e, 0xfc, 0x34, 0x07, 0xcb, 0x1d, 0x4f, 0x8a, 0xc0, + 0xb3, 0xdc, 0x1d, 0xd7, 0x1a, 0xf0, 0x77, 0x22, 0x2b, 0x35, 0x3f, 0xec, 0x4e, 0xd3, 0x66, 0x0d, + 0x96, 0xab, 0xd3, 0xc1, 0xfc, 0x06, 0xac, 0x09, 0xdb, 0x91, 0x7e, 0xa0, 0xfc, 0xd6, 0xa8, 0xcc, + 0xeb, 0x3a, 0x30, 0x85, 0xee, 0xd2, 0x92, 0xe8, 0xa9, 0x69, 0x6e, 0xc2, 0xf5, 0x0c, 0x36, 0x72, + 0x4a, 0xf3, 0xfc, 0x36, 0x34, 0x93, 0x4d, 0x68, 0xdb, 0xf7, 0x64, 0xc7, 0xb3, 0xc5, 0x39, 0x79, + 0x40, 0xac, 0x60, 0xfc, 0x56, 0x25, 0xf2, 0xbd, 0x9e, 0xe8, 0x22, 0xb0, 0xc0, 0xf7, 0x93, 0x1b, + 0x86, 0x1a, 0x4a, 0xdd, 0x64, 0xcd, 0x2f, 0x70, 0x93, 0xf5, 0x83, 0xe4, 0x36, 0xa2, 0xda, 0x28, + 0x5e, 0x99, 0xbb, 0xfb, 0x50, 0xed, 0x8a, 0xf6, 0xb6, 0xbb, 0x22, 0x75, 0x35, 0xf1, 0x0d, 0x1d, + 0x62, 0x15, 0x17, 0x71, 0x51, 0xd5, 0x99, 0xfa, 0xdb, 0xd3, 0x25, 0xf0, 0x8b, 0xd5, 0x90, 0xcd, + 0x78, 0x91, 0xf0, 0xd2, 0x5e, 0xe4, 0xb7, 0xa6, 0xa2, 0x99, 0xea, 0xdc, 0x4c, 0xd4, 0x15, 0x17, + 0xfc, 0xbe, 0x05, 0x95, 0xa1, 0x13, 0x4a, 0x3f, 0x50, 0x97, 0x4e, 0x67, 0x2f, 0xc9, 0xa4, 0x46, + 0x6b, 0x57, 0x11, 0x52, 0xc1, 0x4f, 0xc4, 0xc5, 0xbf, 0x0b, 0x6b, 0x34, 0xf0, 0x47, 0x89, 0xb3, + 0x10, 0x36, 0xeb, 0x73, 0x0b, 0xad, 0x52, 0xa2, 0x36, 0xa7, 0x58, 0xcc, 0x59, 0x21, 0xad, 0x01, + 0x40, 0x32, 0x3f, 0x33, 0x56, 0xec, 0x33, 0x5c, 0x3a, 0xbd, 0x09, 0xe5, 0x70, 0x72, 0x9c, 0x9c, + 0x1b, 0x69, 0xa8, 0x75, 0x0e, 0xad, 0x19, 0xef, 0xe0, 0x48, 0x04, 0xaa, 0xb9, 0x57, 0xde, 0x7c, + 0xfd, 0x20, 0x3d, 0xf1, 0x4a, 0x39, 0xef, 0x5e, 0x32, 0x7b, 0xb1, 0xe4, 0x94, 0x06, 0xb4, 0xde, + 0x86, 0x7a, 0x6a, 0x50, 0xd1, 0x32, 0x4f, 0x3c, 0xdb, 0x8f, 0xb2, 0x9f, 0xf8, 0xac, 0x6e, 0xfe, + 0xd8, 0x51, 0xfe, 0x93, 0x9e, 0x5b, 0x26, 0xb0, 0xe9, 0x01, 0xbc, 0x22, 0xe2, 0x7d, 0x05, 0x1a, + 0x29, 0x4f, 0x2e, 0xce, 0x8c, 0x65, 0x91, 0xc6, 0x19, 0x7c, 0x3e, 0x25, 0xee, 0x48, 0x04, 0x23, + 0x27, 0xc4, 0x8d, 0x44, 0x45, 0x72, 0x94, 0xb4, 0xb0, 0x85, 0x27, 0x1d, 0x19, 0x59, 0xd0, 0x18, + 0xe6, 0xbf, 0x02, 0xa5, 0xb1, 0x08, 0x46, 0xa1, 0xb6, 0xa2, 0xd3, 0x1a, 0x34, 0x57, 0x6c, 0x68, + 0x2a, 0x1e, 0xe3, 0x1f, 0xe7, 0xa0, 0xba, 0x2f, 0xa4, 0x85, 0xbe, 0x03, 0xdf, 0x9f, 0xfa, 0xca, + 0xec, 0x59, 0x67, 0x44, 0xba, 0xae, 0x63, 0xcb, 0xf5, 0x8e, 0xa6, 0xd7, 0xf0, 0xee, 0x52, 0xd2, + 0xb0, 0xd6, 0x26, 0x54, 0x34, 0xba, 0xf5, 0x0e, 0xac, 0x4e, 0x51, 0xd2, 0xb8, 0x28, 0x97, 0xbe, + 0x7b, 0x31, 0x8a, 0x4a, 0x6e, 0x96, 0xcd, 0x2c, 0x72, 0xb3, 0x06, 0x95, 0xb1, 0x62, 0x30, 0xfe, + 0xd5, 0x0d, 0x2a, 0x03, 0x71, 0x4e, 0x30, 0xc6, 0x9e, 0xb7, 0xb3, 0xde, 0x01, 0xa0, 0xad, 0x59, + 0x15, 0x0b, 0xa8, 0x6c, 0x65, 0x0a, 0xc3, 0xdf, 0x8b, 0xd3, 0xcc, 0xc5, 0xb9, 0x4e, 0x55, 0x5a, + 0xf8, 0x74, 0xae, 0xb9, 0x09, 0x15, 0x27, 0xdc, 0xc3, 0xad, 0x4d, 0x97, 0xd0, 0x44, 0x20, 0xff, + 0x26, 0x94, 0x9d, 0xd1, 0xd8, 0x0f, 0xa4, 0xce, 0x43, 0x5f, 0x29, 0xb5, 0x43, 0x94, 0xbb, 0x4b, + 0xa6, 0xe6, 0x41, 0x6e, 0x71, 0x4e, 0xdc, 0xd5, 0x17, 0x73, 0xb7, 0xcf, 0x23, 0x6e, 0xc5, 0xc3, + 0xbf, 0x03, 0x8d, 0x81, 0x2a, 0x6a, 0x53, 0x82, 0xb5, 0x11, 0xf9, 0xca, 0x55, 0x42, 0x1e, 0xa5, + 0x19, 0x76, 0x97, 0xcc, 0xac, 0x04, 0x14, 0x89, 0x0e, 0xbc, 0x08, 0x65, 0xcf, 0xff, 0xd0, 0x77, + 0x3c, 0x8a, 0x45, 0x5f, 0x20, 0xd2, 0x4c, 0x33, 0xa0, 0xc8, 0x8c, 0x04, 0xfe, 0x75, 0xf4, 0x78, + 0x42, 0xa9, 0xef, 0xfd, 0xde, 0xbd, 0x4a, 0x52, 0x4f, 0x84, 0xfa, 0xc6, 0x6e, 0x28, 0xf9, 0x39, + 0xb4, 0x52, 0x8b, 0x44, 0x7f, 0x64, 0x63, 0x3c, 0x0e, 0x7c, 0x0c, 0x68, 0x1b, 0x24, 0xed, 0xeb, + 0x57, 0x49, 0x3b, 0xba, 0x94, 0x7b, 0x77, 0xc9, 0xbc, 0x42, 0x36, 0xef, 0x61, 0x40, 0xa7, 0xbb, + 0xb0, 0x27, 0xac, 0xb3, 0xe8, 0xd6, 0xf0, 0xfd, 0x85, 0x46, 0x81, 0x38, 0x76, 0x97, 0xcc, 0x29, + 0x19, 0xfc, 0xd7, 0x60, 0x2d, 0xf3, 0x4d, 0xba, 0x28, 0xa8, 0xee, 0x14, 0x7f, 0x6d, 0xe1, 0x6e, + 0x20, 0xd3, 0xee, 0x92, 0x39, 0x2b, 0x89, 0x4f, 0xe0, 0x73, 0xb3, 0x5d, 0xda, 0x16, 0x7d, 0xd7, + 0xf1, 0x84, 0xbe, 0x7e, 0xfc, 0xf6, 0xcb, 0x8d, 0x96, 0x66, 0xde, 0x5d, 0x32, 0x2f, 0x97, 0xcc, + 0xff, 0x0a, 0xdc, 0x1e, 0xcf, 0x35, 0x31, 0xca, 0x74, 0xe9, 0xdb, 0xcb, 0xef, 0x2e, 0xf8, 0xe5, + 0x19, 0xfe, 0xdd, 0x25, 0xf3, 0x4a, 0xf9, 0xe8, 0x3b, 0x53, 0xe0, 0xac, 0x6b, 0x6f, 0x15, 0xc0, + 0x6f, 0x43, 0xcd, 0xea, 0xbb, 0xbb, 0xc2, 0xb2, 0xe3, 0xc4, 0x7a, 0x82, 0x68, 0xfd, 0x71, 0x0e, + 0xca, 0x5a, 0xdf, 0x6f, 0xc7, 0x67, 0xdb, 0xb1, 0xe9, 0x4e, 0x10, 0xfc, 0x7d, 0xa8, 0x89, 0x20, + 0xf0, 0x83, 0x2d, 0xdf, 0x8e, 0x0a, 0xff, 0xa6, 0xb3, 0xbe, 0x4a, 0xce, 0x7a, 0x3b, 0x22, 0x33, + 0x13, 0x0e, 0xfe, 0x1e, 0x80, 0x5a, 0xe7, 0xbd, 0xe4, 0x0a, 0x45, 0x6b, 0x3e, 0xbf, 0x3a, 0x7d, + 0x49, 0xa8, 0x93, 0x9c, 0x59, 0x74, 0xf4, 0x11, 0x81, 0x71, 0xc0, 0x59, 0x4a, 0x05, 0x9c, 0xb7, + 0x75, 0xfa, 0xe0, 0x00, 0x5f, 0xe8, 0x8b, 0x44, 0x31, 0xa2, 0xf5, 0x2f, 0x73, 0x50, 0x56, 0xc6, + 0x83, 0xb7, 0x67, 0x7b, 0xf4, 0xe5, 0x17, 0xdb, 0x9c, 0xf5, 0xe9, 0x9e, 0x7d, 0x13, 0x40, 0xd9, + 0xa0, 0x54, 0xcf, 0x6e, 0x4f, 0xc9, 0xd1, 0xac, 0x51, 0xf5, 0x67, 0x42, 0x6f, 0x3c, 0x54, 0x97, + 0x5d, 0x28, 0x45, 0xfb, 0x78, 0x6f, 0x8f, 0x2d, 0xf1, 0x35, 0x68, 0x3c, 0x3e, 0xf8, 0xe8, 0xe0, + 0xf0, 0xe9, 0xc1, 0xb3, 0xb6, 0x69, 0x1e, 0x9a, 0x2a, 0x53, 0xbb, 0xb9, 0xb1, 0xfd, 0xac, 0x73, + 0x70, 0xf4, 0xb8, 0xc7, 0xf2, 0xad, 0x9f, 0xe5, 0xa0, 0x91, 0xb1, 0x5d, 0x7f, 0xb1, 0x53, 0x97, + 0x1a, 0xfe, 0xc2, 0xfc, 0xe1, 0x2f, 0x5e, 0x36, 0xfc, 0xa5, 0xe9, 0xe1, 0xff, 0xfd, 0x1c, 0x34, + 0x32, 0x36, 0x32, 0x2d, 0x3d, 0x97, 0x95, 0x9e, 0xde, 0xe9, 0xf3, 0x53, 0x3b, 0xbd, 0x01, 0xcb, + 0xd1, 0xf3, 0x41, 0x92, 0x71, 0xc8, 0xe0, 0xd2, 0x34, 0x54, 0x6d, 0x5e, 0xcc, 0xd2, 0x50, 0xc5, + 0xf9, 0xd5, 0xad, 0xa5, 0xdb, 0x75, 0x21, 0x5d, 0x3e, 0x6e, 0x5d, 0x6e, 0x41, 0xaf, 0xe8, 0xc2, + 0x23, 0xa8, 0x8f, 0x93, 0x65, 0xfa, 0x72, 0x6e, 0x49, 0x9a, 0xf3, 0x05, 0xed, 0xfc, 0x49, 0x0e, + 0x56, 0xb2, 0x36, 0xf7, 0xff, 0xe9, 0x61, 0xfd, 0xa7, 0x39, 0x58, 0x9b, 0xb1, 0xe4, 0x57, 0x3a, + 0x76, 0xd3, 0xed, 0xca, 0x2f, 0xd0, 0xae, 0xc2, 0x9c, 0x76, 0x5d, 0x6e, 0x49, 0xae, 0x6e, 0x71, + 0x17, 0x3e, 0x77, 0xe9, 0x9e, 0x70, 0xc5, 0x50, 0x67, 0x84, 0x16, 0xa6, 0x85, 0xfe, 0x6e, 0x0e, + 0x6e, 0x5f, 0x65, 0xef, 0xff, 0xaf, 0xeb, 0xd5, 0x74, 0x0b, 0x8d, 0x77, 0xe2, 0x33, 0xf4, 0x3a, + 0x54, 0xf4, 0x8f, 0xfa, 0xe8, 0x92, 0xe3, 0xa1, 0xff, 0xdc, 0x53, 0x09, 0x68, 0x53, 0x58, 0xfa, + 0xda, 0xb3, 0x29, 0xc6, 0xae, 0x43, 0x67, 0x96, 0xb7, 0x00, 0x36, 0x28, 0xae, 0x8b, 0x6e, 0x21, + 0x6c, 0xed, 0x1d, 0x76, 0xdb, 0x6c, 0x29, 0xed, 0xc4, 0x7e, 0x1c, 0x19, 0x62, 0xe3, 0x08, 0xca, + 0x49, 0x7d, 0xfa, 0xbe, 0x15, 0x9c, 0xda, 0xea, 0x64, 0x70, 0x19, 0xaa, 0x47, 0x3a, 0x84, 0x52, + 0x9f, 0xfa, 0xb0, 0x7b, 0x78, 0xa0, 0x72, 0xdd, 0xdb, 0x87, 0x3d, 0x55, 0xe5, 0xde, 0x7d, 0xf2, + 0x48, 0x1d, 0x51, 0x3d, 0x32, 0x37, 0x8e, 0x76, 0x9f, 0x11, 0x45, 0xc9, 0xf8, 0x59, 0x3e, 0xda, + 0xd5, 0x0c, 0x53, 0x9f, 0x39, 0x02, 0x94, 0xd1, 0x9a, 0xfb, 0x5a, 0x70, 0xfc, 0x19, 0x2a, 0x4e, + 0x6d, 0x9f, 0xab, 0x3c, 0x04, 0xcb, 0xf3, 0x32, 0xe4, 0x8f, 0x8e, 0x55, 0x11, 0xce, 0xae, 0x1c, + 0xb9, 0xea, 0x5a, 0x5a, 0xef, 0x5c, 0xb2, 0x12, 0x3e, 0x6c, 0x85, 0x67, 0xac, 0x6c, 0xfc, 0xc7, + 0x1c, 0xd4, 0x62, 0x53, 0xf9, 0x32, 0xa6, 0x9b, 0x73, 0x58, 0xe9, 0x1c, 0xf4, 0xda, 0xe6, 0xc1, + 0xc6, 0x9e, 0x26, 0x29, 0xf0, 0x26, 0x5c, 0x3f, 0x38, 0x7c, 0x76, 0xb8, 0xf9, 0x61, 0x7b, 0xab, + 0xd7, 0x7d, 0xd6, 0x3b, 0x7c, 0xd6, 0xd9, 0x3f, 0x3a, 0x34, 0x7b, 0xac, 0xc4, 0x6f, 0x02, 0x57, + 0xcf, 0xcf, 0x3a, 0xdd, 0x67, 0x5b, 0x1b, 0x07, 0x5b, 0xed, 0xbd, 0xf6, 0x36, 0x2b, 0xf3, 0x2f, + 0xc3, 0x17, 0xf7, 0x3a, 0xfb, 0x9d, 0xde, 0xb3, 0xc3, 0x9d, 0x67, 0xe6, 0xe1, 0xd3, 0xee, 0xb3, + 0x43, 0xf3, 0x99, 0xd9, 0xde, 0xdb, 0xe8, 0x75, 0x0e, 0x0f, 0xba, 0xcf, 0xda, 0xdf, 0xdd, 0x6a, + 0xb7, 0xb7, 0xdb, 0xdb, 0xac, 0xc2, 0xaf, 0xc1, 0xea, 0x4e, 0x67, 0xaf, 0xfd, 0x6c, 0xef, 0x70, + 0x63, 0x5b, 0x7f, 0xaf, 0xca, 0x6f, 0x43, 0xb3, 0x73, 0xd0, 0x7d, 0xbc, 0xb3, 0xd3, 0xd9, 0xea, + 0xb4, 0x0f, 0x7a, 0xcf, 0x8e, 0xda, 0xe6, 0x7e, 0xa7, 0xdb, 0x45, 0x5e, 0x56, 0x33, 0xbe, 0x0d, + 0xe5, 0x8e, 0x77, 0xe6, 0x48, 0x52, 0x3f, 0x3d, 0x57, 0x3a, 0x20, 0x89, 0x40, 0xd2, 0x1a, 0x67, + 0xe0, 0xd1, 0x6d, 0x64, 0x52, 0xbe, 0x65, 0x33, 0x41, 0x18, 0xff, 0x2c, 0x0f, 0x0d, 0x25, 0x22, + 0x0a, 0x70, 0xee, 0xc1, 0xaa, 0xce, 0x14, 0x76, 0xb2, 0x2b, 0x7c, 0x1a, 0x4d, 0x3f, 0xf3, 0xa3, + 0x50, 0xa9, 0x75, 0x9e, 0x46, 0xd1, 0xa1, 0x13, 0x09, 0xc7, 0x40, 0x49, 0x1d, 0xb7, 0x25, 0x88, + 0xcf, 0xba, 0xc0, 0xd1, 0x78, 0x28, 0xc2, 0xbe, 0xef, 0x6d, 0xc5, 0x77, 0x00, 0x32, 0x38, 0xfe, + 0x31, 0xdc, 0x8a, 0xe1, 0xb6, 0xd7, 0x0f, 0x2e, 0xc6, 0xf1, 0xaf, 0x71, 0x55, 0xe6, 0x46, 0xdc, + 0x3b, 0x8e, 0x2b, 0x32, 0x84, 0xe6, 0x65, 0x02, 0x8c, 0x3f, 0xc9, 0xa5, 0xc2, 0x42, 0x15, 0xf6, + 0x5d, 0x69, 0x10, 0xe7, 0x1d, 0x51, 0x60, 0x60, 0xa6, 0x9b, 0xaf, 0xf7, 0x69, 0x0d, 0xf2, 0x23, + 0xe0, 0xce, 0x6c, 0xa3, 0x8b, 0x0b, 0x36, 0x7a, 0x0e, 0xef, 0x74, 0x86, 0xb9, 0x34, 0x9b, 0x61, + 0xbe, 0x03, 0x30, 0x70, 0xfd, 0x63, 0xcb, 0x4d, 0xf9, 0x61, 0x29, 0x8c, 0xe1, 0x42, 0x35, 0xfa, + 0xcd, 0x2f, 0x7e, 0x13, 0xca, 0xf4, 0xab, 0x5f, 0x71, 0xbe, 0x4d, 0x41, 0x7c, 0x17, 0x56, 0x44, + 0xb6, 0xcd, 0xf9, 0x05, 0xdb, 0x3c, 0xc5, 0x67, 0x7c, 0x03, 0xd6, 0x66, 0x88, 0x70, 0x10, 0xc7, + 0x96, 0x8c, 0x2f, 0xfe, 0xe2, 0xf3, 0xec, 0xd1, 0xae, 0xf1, 0xef, 0xf3, 0xb0, 0xbc, 0x6f, 0x79, + 0xce, 0x89, 0x08, 0x65, 0xd4, 0xda, 0xb0, 0x3f, 0x14, 0x23, 0x2b, 0x6a, 0xad, 0x82, 0x74, 0x10, + 0x9e, 0x4f, 0xa7, 0xb7, 0x67, 0x4e, 0x43, 0x6e, 0x42, 0xd9, 0x9a, 0xc8, 0x61, 0x5c, 0x96, 0xac, + 0x21, 0x9c, 0x3b, 0xd7, 0xe9, 0x0b, 0x2f, 0x8c, 0x74, 0x33, 0x02, 0x93, 0xe2, 0x8e, 0xf2, 0x15, + 0xc5, 0x1d, 0x95, 0xd9, 0xf1, 0xbf, 0x0b, 0xf5, 0xb0, 0x1f, 0x08, 0xe1, 0x85, 0x43, 0x5f, 0x46, + 0xbf, 0x17, 0x97, 0x46, 0x51, 0x51, 0x93, 0xff, 0xdc, 0xc3, 0x15, 0xba, 0xe7, 0x78, 0xa7, 0xba, + 0xb2, 0x27, 0x83, 0x43, 0x1d, 0xa4, 0x14, 0x84, 0xf3, 0x03, 0x41, 0xe1, 0x6f, 0xc9, 0x8c, 0x61, + 0x4a, 0x32, 0x58, 0x52, 0x0c, 0xfc, 0xc0, 0x11, 0x2a, 0xd3, 0x56, 0x33, 0x53, 0x18, 0xe4, 0x75, + 0x2d, 0x6f, 0x30, 0xb1, 0x06, 0x42, 0x1f, 0x95, 0xc6, 0xb0, 0xf1, 0xdf, 0x4a, 0x00, 0xfb, 0x62, + 0x74, 0x2c, 0x82, 0x70, 0xe8, 0x8c, 0xe9, 0x24, 0xc0, 0xd1, 0xf5, 0x9b, 0x0d, 0x93, 0x9e, 0xf9, + 0xbb, 0x99, 0x3a, 0xe9, 0xd9, 0xb3, 0xbb, 0x84, 0x7d, 0x3a, 0x43, 0x81, 0x83, 0x63, 0x49, 0xa1, + 0xeb, 0x6a, 0x68, 0xfc, 0x8b, 0x66, 0x1a, 0x45, 0x25, 0x4f, 0x96, 0x14, 0x6d, 0xcf, 0x56, 0x19, + 0x90, 0xa2, 0x19, 0xc3, 0x74, 0xd3, 0x22, 0xdc, 0x98, 0x48, 0xdf, 0x14, 0x9e, 0x78, 0x1e, 0x5f, + 0x13, 0x4a, 0x50, 0x7c, 0x1f, 0x1a, 0x63, 0xeb, 0x62, 0x24, 0x3c, 0xb9, 0x2f, 0xe4, 0xd0, 0xb7, + 0x75, 0x11, 0xcc, 0x97, 0x2f, 0x6f, 0xe0, 0x51, 0x9a, 0xdc, 0xcc, 0x72, 0xa3, 0x4e, 0x78, 0x21, + 0xad, 0x12, 0x35, 0x8d, 0x1a, 0xe2, 0x9b, 0x00, 0xea, 0x89, 0x02, 0x8b, 0xea, 0xfc, 0x44, 0x8d, + 0x35, 0x12, 0xa1, 0x08, 0xce, 0x1c, 0x65, 0xc7, 0x54, 0xe8, 0x94, 0x70, 0xa1, 0xd5, 0x9b, 0x84, + 0x22, 0x68, 0x8f, 0x2c, 0xc7, 0xd5, 0x13, 0x9c, 0x20, 0xf8, 0x5b, 0x70, 0x23, 0x9c, 0x1c, 0xa3, + 0xce, 0x1c, 0x8b, 0x9e, 0x7f, 0x20, 0x9e, 0x87, 0xae, 0x90, 0x52, 0x04, 0xfa, 0xd4, 0x7d, 0xfe, + 0x4b, 0x63, 0x10, 0x7b, 0x05, 0xf4, 0xdb, 0x04, 0xf8, 0x94, 0x54, 0xf3, 0xc4, 0x28, 0x5d, 0xea, + 0xc4, 0x72, 0x9c, 0xc1, 0xb2, 0x42, 0xe9, 0x4a, 0xa8, 0x3c, 0xff, 0x12, 0x7c, 0x21, 0x43, 0x64, + 0xaa, 0x73, 0xd2, 0x70, 0xc7, 0xf1, 0x2c, 0xd7, 0xf9, 0x81, 0x3a, 0xac, 0x2e, 0x18, 0x63, 0x68, + 0x64, 0x06, 0x0e, 0xb7, 0x79, 0xf5, 0xa4, 0x6b, 0x43, 0x18, 0x2c, 0x2b, 0xb8, 0x2b, 0x03, 0x87, + 0x0e, 0x00, 0x62, 0xcc, 0x16, 0xae, 0x73, 0x9f, 0xe5, 0xf9, 0x75, 0x60, 0x0a, 0xd3, 0xf1, 0xac, + 0xf1, 0x78, 0x63, 0x3c, 0x76, 0x05, 0x2b, 0xd0, 0x75, 0xba, 0x04, 0xab, 0xaa, 0xa5, 0x59, 0xd1, + 0xf8, 0x2e, 0xdc, 0xa2, 0x91, 0x79, 0x22, 0x82, 0x38, 0xee, 0xd3, 0x7d, 0xbd, 0x01, 0x6b, 0xea, + 0xe9, 0xc0, 0x97, 0xea, 0x35, 0xf9, 0x42, 0x1c, 0x56, 0x14, 0x1a, 0x5d, 0x81, 0xae, 0xf0, 0xa4, + 0x2a, 0x51, 0x51, 0xb8, 0x98, 0x2e, 0x6f, 0xfc, 0xb4, 0x0c, 0x3c, 0x51, 0x88, 0x9e, 0x23, 0x82, + 0x6d, 0x4b, 0x5a, 0xa9, 0xc4, 0x5d, 0xe3, 0xd2, 0xa3, 0xe7, 0x17, 0x17, 0x72, 0xdd, 0x84, 0xb2, + 0x13, 0x62, 0xa4, 0xa2, 0x0b, 0x27, 0x35, 0xc4, 0xf7, 0x00, 0xc6, 0x22, 0x70, 0x7c, 0x9b, 0x34, + 0xa8, 0x34, 0xb7, 0x5c, 0x7d, 0xb6, 0x51, 0xeb, 0x47, 0x31, 0x8f, 0x99, 0xe2, 0xc7, 0x76, 0x28, + 0x48, 0x1d, 0xe4, 0x96, 0xa9, 0xd1, 0x69, 0x14, 0x7f, 0x1d, 0xae, 0x8d, 0x03, 0xa7, 0x2f, 0xd4, + 0x74, 0x3c, 0x0e, 0xed, 0x2d, 0xfa, 0x45, 0xaf, 0x0a, 0x51, 0xce, 0x7b, 0x85, 0x1a, 0x68, 0x79, + 0xe4, 0xbf, 0x87, 0x74, 0x74, 0xa9, 0xaf, 0x73, 0xaa, 0x42, 0xc4, 0x86, 0x39, 0xff, 0x25, 0xbf, + 0x0f, 0x4c, 0xbf, 0xd8, 0x77, 0xbc, 0x3d, 0xe1, 0x0d, 0xe4, 0x90, 0x94, 0xbb, 0x61, 0xce, 0xe0, + 0xc9, 0x82, 0xa9, 0xdf, 0x4d, 0x51, 0xc7, 0x1a, 0x35, 0x33, 0x86, 0xd5, 0x15, 0x61, 0xd7, 0x0f, + 0xba, 0x32, 0xd0, 0x35, 0x92, 0x31, 0x8c, 0x3e, 0x4b, 0x48, 0x6d, 0x3d, 0x0a, 0x7c, 0x7b, 0x42, + 0x49, 0x77, 0x65, 0xc4, 0xa6, 0xd1, 0x09, 0xe5, 0xbe, 0xe5, 0xe9, 0x6a, 0xba, 0x46, 0x9a, 0x32, + 0x46, 0x53, 0x88, 0xe2, 0x87, 0x89, 0xc0, 0x55, 0x1d, 0xa2, 0xa4, 0x70, 0x9a, 0x26, 0x11, 0xc5, + 0x62, 0x9a, 0x44, 0x0e, 0xf5, 0xdf, 0x0e, 0x7c, 0xc7, 0x4e, 0x64, 0xad, 0xa9, 0x5a, 0xc7, 0x69, + 0x7c, 0x8a, 0x36, 0x91, 0xc9, 0x33, 0xb4, 0x31, 0xde, 0xf8, 0x51, 0x0e, 0x20, 0x99, 0x7c, 0x54, + 0xf9, 0x04, 0x4a, 0x96, 0xf8, 0x2d, 0xb8, 0x96, 0x46, 0x53, 0x11, 0x3c, 0x9d, 0x7f, 0x72, 0x58, + 0x49, 0x5e, 0x6c, 0x5b, 0x17, 0x21, 0xcb, 0xab, 0xa2, 0xc7, 0x08, 0xf7, 0x54, 0x08, 0x2a, 0x2f, + 0xbb, 0x0e, 0x2c, 0x41, 0xd2, 0x85, 0xa5, 0x90, 0x15, 0xb3, 0xa4, 0xdf, 0x13, 0x56, 0x10, 0xb2, + 0x92, 0xb1, 0x0b, 0x65, 0x75, 0xf6, 0x32, 0xe7, 0xd4, 0xf4, 0xe5, 0x4a, 0x20, 0xfe, 0x66, 0x0e, + 0x60, 0x5b, 0xd5, 0xb5, 0xe2, 0x2e, 0x3e, 0xe7, 0x30, 0x7a, 0x9e, 0x47, 0x65, 0xd9, 0x36, 0x55, + 0xfc, 0x16, 0xe2, 0x5f, 0xe3, 0x40, 0x10, 0x35, 0xc7, 0x8a, 0xea, 0x89, 0xd4, 0x9a, 0x8b, 0x61, + 0xb5, 0x81, 0x6c, 0xf9, 0x9e, 0x27, 0xfa, 0xb8, 0xfd, 0xc4, 0x1b, 0x48, 0x8c, 0x32, 0xfe, 0x75, + 0x05, 0xea, 0x5b, 0x43, 0x4b, 0xee, 0x8b, 0x30, 0xb4, 0x06, 0x62, 0xa6, 0x2d, 0x4d, 0xa8, 0xf8, + 0x81, 0x2d, 0x82, 0xe4, 0xd2, 0x91, 0x06, 0xd3, 0x47, 0xf0, 0x85, 0xec, 0x11, 0xfc, 0x6d, 0xa8, + 0xa9, 0x04, 0xbf, 0xbd, 0xa1, 0xcc, 0x40, 0xc1, 0x4c, 0x10, 0xb8, 0x57, 0x8f, 0x7c, 0x9b, 0x8c, + 0xd1, 0x86, 0xca, 0x8d, 0x17, 0xcc, 0x14, 0x46, 0x55, 0x3c, 0x8c, 0xdd, 0x8b, 0x9e, 0xaf, 0xdb, + 0xd4, 0xb1, 0x93, 0x1b, 0x9a, 0x59, 0x3c, 0xdf, 0x82, 0xca, 0x48, 0x01, 0x3a, 0xcf, 0x3f, 0x9d, + 0x11, 0x4f, 0x75, 0x6d, 0x5d, 0xff, 0xd5, 0xf7, 0x2a, 0xcc, 0x88, 0x13, 0x23, 0x58, 0x4b, 0x4a, + 0xab, 0x3f, 0x1c, 0x69, 0x13, 0x51, 0x98, 0x73, 0xe4, 0x97, 0x16, 0xb4, 0x11, 0x53, 0x9b, 0x69, + 0x4e, 0xbe, 0x09, 0xb5, 0x40, 0x58, 0x99, 0x53, 0xc7, 0x57, 0xae, 0x10, 0x63, 0x46, 0xb4, 0x66, + 0xc2, 0xd6, 0xfa, 0xbd, 0x1c, 0xac, 0x64, 0x1b, 0xfa, 0x17, 0xf1, 0x83, 0x4a, 0xdf, 0x4c, 0x7e, + 0x50, 0xe9, 0x33, 0xfc, 0x38, 0xd1, 0xef, 0xe6, 0x00, 0x92, 0x31, 0x40, 0x93, 0xaf, 0x7e, 0xf8, + 0x25, 0x72, 0x42, 0x15, 0xc4, 0x77, 0x33, 0x57, 0xb3, 0xdf, 0x5a, 0x68, 0x40, 0x53, 0x8f, 0xa9, + 0x62, 0xdd, 0x07, 0xb0, 0x92, 0xc5, 0xd3, 0x4f, 0xb9, 0x74, 0xf6, 0xda, 0x2a, 0x03, 0xd0, 0xd9, + 0xdf, 0x78, 0xd4, 0xd6, 0xf7, 0x58, 0x3a, 0x07, 0x1f, 0xb1, 0x7c, 0xeb, 0xbf, 0xe7, 0xa0, 0x16, + 0x0f, 0x2f, 0xff, 0x4e, 0x7a, 0x5e, 0x54, 0x19, 0xc1, 0x9b, 0x8b, 0xcc, 0x4b, 0xf2, 0xd4, 0xf6, + 0x64, 0x70, 0x91, 0x9e, 0x26, 0x1f, 0x56, 0xb2, 0x2f, 0xe7, 0xd8, 0x84, 0x47, 0x59, 0x9b, 0xf0, + 0xc6, 0x42, 0x9f, 0x8c, 0x22, 0xaf, 0x3d, 0x27, 0x94, 0xda, 0x5c, 0xbc, 0x97, 0x7f, 0x37, 0xd7, + 0xba, 0x0b, 0xcb, 0xe9, 0x57, 0xb3, 0x37, 0xcf, 0xee, 0xff, 0xa7, 0x02, 0xac, 0x64, 0x4f, 0xe2, + 0xe9, 0x6a, 0x8c, 0xaa, 0x02, 0x39, 0x74, 0xed, 0x54, 0x7d, 0x33, 0xe3, 0xab, 0x50, 0xd7, 0xb1, + 0x1d, 0x21, 0xd6, 0x28, 0xc7, 0xe0, 0x8f, 0x04, 0xbb, 0x9b, 0xfe, 0xd1, 0xb8, 0xd7, 0x39, 0x44, + 0x97, 0x96, 0xd8, 0x98, 0xd7, 0xf4, 0xcf, 0xe7, 0xfc, 0x7a, 0x9e, 0x37, 0x52, 0x55, 0xb6, 0x3f, + 0x46, 0xc7, 0x66, 0x75, 0x73, 0xe2, 0xd9, 0xae, 0xb0, 0x63, 0xec, 0xef, 0xa5, 0xb1, 0x71, 0xcd, + 0xec, 0xaf, 0x17, 0xf9, 0x0a, 0xd4, 0xba, 0x93, 0x63, 0x5d, 0x2f, 0xfb, 0x57, 0x8b, 0xfc, 0x26, + 0xac, 0x69, 0xaa, 0xa4, 0x02, 0x8e, 0xfd, 0x35, 0x34, 0xc1, 0x2b, 0x1b, 0x6a, 0xbc, 0x74, 0x43, + 0xd9, 0x5f, 0x2f, 0x62, 0x13, 0xe8, 0x62, 0xeb, 0x6f, 0x90, 0x9c, 0xf8, 0xe6, 0x00, 0xfb, 0xcd, + 0x22, 0x5f, 0x05, 0xe8, 0xf6, 0xe2, 0x0f, 0xfd, 0x56, 0x91, 0xd7, 0xa1, 0xdc, 0xed, 0x91, 0xb4, + 0x1f, 0x15, 0xf9, 0x0d, 0x60, 0xc9, 0x5b, 0x5d, 0x0e, 0xf8, 0xb7, 0x55, 0x63, 0xe2, 0xfa, 0xbe, + 0xdf, 0x2e, 0x62, 0xbf, 0xa2, 0x51, 0x66, 0x7f, 0xa7, 0xc8, 0x19, 0xd4, 0x53, 0x99, 0x2b, 0xf6, + 0x77, 0x8b, 0x9c, 0x43, 0x63, 0xdf, 0x09, 0x43, 0xc7, 0x1b, 0xe8, 0x1e, 0xfc, 0x90, 0xbe, 0xbc, + 0x13, 0x5f, 0x7e, 0x60, 0xbf, 0x53, 0xe4, 0xb7, 0x80, 0xa7, 0xb3, 0xf5, 0xfa, 0xc5, 0xdf, 0x23, + 0x6e, 0x65, 0xf6, 0x43, 0x8d, 0xfb, 0xfb, 0xc4, 0x8d, 0x9a, 0xa0, 0x11, 0xff, 0x80, 0x06, 0x64, + 0x2b, 0x29, 0x20, 0xd4, 0xf8, 0x1f, 0x17, 0xef, 0xff, 0x94, 0x32, 0xab, 0xe9, 0xe2, 0x1b, 0xbe, + 0x0c, 0x55, 0xd7, 0xf7, 0x06, 0x52, 0xfd, 0x30, 0x5f, 0x03, 0x6a, 0xe1, 0xd0, 0x0f, 0x24, 0x81, + 0x74, 0x13, 0xcb, 0xa3, 0x0b, 0xb6, 0xaa, 0xa0, 0x5a, 0x05, 0x24, 0x2a, 0x53, 0x25, 0xad, 0x01, + 0xab, 0xc7, 0x65, 0x8e, 0xc5, 0xb8, 0x14, 0x93, 0x2e, 0xfa, 0x46, 0x17, 0x29, 0x59, 0x19, 0x49, + 0x27, 0x81, 0xab, 0x4a, 0x32, 0x05, 0x3a, 0xa3, 0xea, 0x17, 0xb8, 0xc6, 0x43, 0xf4, 0x79, 0x6b, + 0x0a, 0xeb, 0x7f, 0xe2, 0xa8, 0x2b, 0x7a, 0xba, 0xd4, 0xc9, 0xc6, 0x76, 0xc4, 0xa7, 0xf9, 0x4c, + 0xdc, 0xff, 0xed, 0x1c, 0x2c, 0x47, 0xd7, 0x5b, 0x9d, 0x81, 0xe3, 0xa9, 0xa2, 0xce, 0xe8, 0xe7, + 0x0e, 0xfb, 0xae, 0x33, 0x8e, 0x7e, 0x3e, 0x6c, 0x15, 0xea, 0x76, 0x60, 0x0d, 0x36, 0x3c, 0x7b, + 0x3b, 0xf0, 0xc7, 0xaa, 0xd9, 0xea, 0xec, 0x45, 0x15, 0x93, 0x3e, 0x17, 0xc7, 0x48, 0x3e, 0x16, + 0x01, 0x2b, 0x52, 0x19, 0xd5, 0xd0, 0x0a, 0x1c, 0x6f, 0xd0, 0x3e, 0x97, 0xc2, 0x0b, 0x55, 0x51, + 0x69, 0x1d, 0x2a, 0x93, 0x50, 0xf4, 0xad, 0x50, 0xb0, 0x32, 0x02, 0xc7, 0x13, 0xc7, 0x95, 0x8e, + 0xa7, 0x7e, 0xb5, 0x2b, 0xae, 0x1a, 0xad, 0xde, 0xff, 0xc3, 0x1c, 0xd4, 0x69, 0xe6, 0x93, 0xa4, + 0x62, 0xe2, 0x55, 0xd4, 0xa1, 0xb2, 0x17, 0xff, 0x6a, 0x53, 0x19, 0xf2, 0x87, 0xa7, 0x2a, 0xa9, + 0xa8, 0x67, 0x5e, 0xdd, 0x67, 0x53, 0x3f, 0xe0, 0x54, 0xe4, 0x9f, 0x83, 0x1b, 0xa6, 0x18, 0xf9, + 0x52, 0x3c, 0xb5, 0x1c, 0x99, 0xbe, 0x50, 0x51, 0xc2, 0x00, 0x44, 0xbd, 0x8a, 0x6e, 0x50, 0x94, + 0x29, 0x00, 0xc1, 0xcf, 0x46, 0x98, 0x0a, 0x76, 0x9a, 0x30, 0x3a, 0x22, 0xa9, 0xc6, 0x24, 0x1f, + 0xfa, 0x8e, 0x87, 0x5f, 0xa3, 0x2b, 0x91, 0x84, 0xa1, 0xec, 0x34, 0xa2, 0xe0, 0xfe, 0x01, 0xdc, + 0x9c, 0x9f, 0x53, 0x55, 0x97, 0x25, 0xe9, 0xa7, 0x42, 0xa9, 0xc4, 0xfe, 0x69, 0xe0, 0xa8, 0x6b, + 0x72, 0x35, 0x28, 0x1d, 0x3e, 0xf7, 0x48, 0x1b, 0xd6, 0xa0, 0x71, 0xe0, 0xa7, 0x78, 0x58, 0xe1, + 0x7e, 0x3f, 0x93, 0x06, 0x4f, 0x06, 0x25, 0x6a, 0xc4, 0x52, 0xea, 0xfa, 0x48, 0x4e, 0x25, 0x58, + 0xe9, 0xd7, 0xde, 0xd5, 0x45, 0x72, 0x9d, 0x7e, 0xb6, 0xd5, 0x45, 0xf2, 0xb8, 0x99, 0x45, 0xf5, + 0x33, 0x2e, 0x5e, 0x5f, 0xb8, 0xc2, 0x66, 0xa5, 0xfb, 0xef, 0xc2, 0xaa, 0xee, 0x6a, 0x5f, 0x84, + 0x61, 0x74, 0xfd, 0xe2, 0x28, 0x70, 0xce, 0xd4, 0x65, 0xf5, 0x65, 0xa8, 0x1e, 0x89, 0x20, 0xf4, + 0x3d, 0xba, 0xa8, 0x0f, 0x50, 0xee, 0x0e, 0xad, 0x00, 0xbf, 0x71, 0xff, 0xab, 0x50, 0xa3, 0xeb, + 0x18, 0x1f, 0x39, 0x9e, 0x8d, 0x3d, 0xd9, 0xd4, 0x15, 0xc8, 0x35, 0x28, 0x6d, 0xf9, 0x67, 0xd4, + 0xbf, 0xaa, 0xfa, 0xc1, 0x42, 0x96, 0xbf, 0xff, 0x2d, 0xe0, 0x2a, 0x9d, 0x63, 0x8b, 0x73, 0xc7, + 0x1b, 0xc4, 0x37, 0x78, 0x81, 0xae, 0xe3, 0xdb, 0xe2, 0x9c, 0xa2, 0xa5, 0x3a, 0x54, 0x22, 0x20, + 0xfa, 0x51, 0x80, 0x1d, 0x7f, 0xe2, 0xe1, 0xd7, 0x9e, 0xc0, 0x75, 0xa5, 0x1b, 0xf8, 0x79, 0xba, + 0xf6, 0x75, 0x69, 0x8c, 0xa9, 0xee, 0xcc, 0xc8, 0x49, 0x18, 0xd3, 0xb2, 0x1c, 0xbf, 0x09, 0x3c, + 0x8e, 0xcf, 0x12, 0x7c, 0xfe, 0xbe, 0x01, 0xd7, 0xe6, 0x04, 0xc9, 0x64, 0x70, 0x55, 0xa8, 0xc0, + 0x96, 0xee, 0x7f, 0x00, 0x6b, 0xca, 0x44, 0x1c, 0xa8, 0x6b, 0x3c, 0xd1, 0x6e, 0xf7, 0xb4, 0xb3, + 0xd3, 0x51, 0x43, 0xb4, 0xd5, 0xde, 0xdb, 0x7b, 0xbc, 0xb7, 0x61, 0xb2, 0x1c, 0x4d, 0xe4, 0x61, + 0xef, 0xd9, 0xd6, 0xe1, 0xc1, 0x41, 0x7b, 0xab, 0xd7, 0xde, 0x66, 0xf9, 0xcd, 0xfb, 0x7f, 0xf4, + 0x8b, 0x3b, 0xb9, 0x9f, 0xff, 0xe2, 0x4e, 0xee, 0xbf, 0xfc, 0xe2, 0x4e, 0xee, 0x47, 0x9f, 0xde, + 0x59, 0xfa, 0xf9, 0xa7, 0x77, 0x96, 0xfe, 0xc3, 0xa7, 0x77, 0x96, 0x3e, 0x66, 0xd3, 0xff, 0x69, + 0xe1, 0xb8, 0x4c, 0xde, 0xe9, 0x9b, 0xff, 0x27, 0x00, 0x00, 0xff, 0xff, 0x51, 0xf3, 0xf8, 0x60, + 0x84, 0x61, 0x00, 0x00, } func (m *SmartBlockSnapshotBase) Marshal() (dAtA []byte, err error) { @@ -10263,6 +10689,29 @@ func (m *BlockContentOfWidget) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } +func (m *BlockContentOfChat) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BlockContentOfChat) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.Chat != nil { + { + size, err := m.Chat.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintModels(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xf2 + } + return len(dAtA) - i, nil +} func (m *BlockRestrictions) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -11984,6 +12433,29 @@ func (m *BlockContentWidget) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *BlockContentChat) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *BlockContentChat) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BlockContentChat) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func (m *BlockMetaOnly) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12464,20 +12936,20 @@ func (m *Restrictions) MarshalToSizedBuffer(dAtA []byte) (int, error) { } } if len(m.Object) > 0 { - dAtA40 := make([]byte, len(m.Object)*10) - var j39 int + dAtA41 := make([]byte, len(m.Object)*10) + var j40 int for _, num := range m.Object { for num >= 1<<7 { - dAtA40[j39] = uint8(uint64(num)&0x7f | 0x80) + dAtA41[j40] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j39++ + j40++ } - dAtA40[j39] = uint8(num) - j39++ + dAtA41[j40] = uint8(num) + j40++ } - i -= j39 - copy(dAtA[i:], dAtA40[:j39]) - i = encodeVarintModels(dAtA, i, uint64(j39)) + i -= j40 + copy(dAtA[i:], dAtA41[:j40]) + i = encodeVarintModels(dAtA, i, uint64(j40)) i-- dAtA[i] = 0xa } @@ -12505,20 +12977,20 @@ func (m *RestrictionsDataviewRestrictions) MarshalToSizedBuffer(dAtA []byte) (in var l int _ = l if len(m.Restrictions) > 0 { - dAtA42 := make([]byte, len(m.Restrictions)*10) - var j41 int + dAtA43 := make([]byte, len(m.Restrictions)*10) + var j42 int for _, num := range m.Restrictions { for num >= 1<<7 { - dAtA42[j41] = uint8(uint64(num)&0x7f | 0x80) + dAtA43[j42] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j41++ + j42++ } - dAtA42[j41] = uint8(num) - j41++ + dAtA43[j42] = uint8(num) + j42++ } - i -= j41 - copy(dAtA[i:], dAtA42[:j41]) - i = encodeVarintModels(dAtA, i, uint64(j41)) + i -= j42 + copy(dAtA[i:], dAtA43[:j42]) + i = encodeVarintModels(dAtA, i, uint64(j42)) i-- dAtA[i] = 0x12 } @@ -12700,20 +13172,20 @@ func (m *ObjectType) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x48 } if len(m.Types) > 0 { - dAtA44 := make([]byte, len(m.Types)*10) - var j43 int + dAtA45 := make([]byte, len(m.Types)*10) + var j44 int for _, num := range m.Types { for num >= 1<<7 { - dAtA44[j43] = uint8(uint64(num)&0x7f | 0x80) + dAtA45[j44] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j43++ + j44++ } - dAtA44[j43] = uint8(num) - j43++ + dAtA45[j44] = uint8(num) + j44++ } - i -= j43 - copy(dAtA[i:], dAtA44[:j43]) - i = encodeVarintModels(dAtA, i, uint64(j43)) + i -= j44 + copy(dAtA[i:], dAtA45[:j44]) + i = encodeVarintModels(dAtA, i, uint64(j44)) i-- dAtA[i] = 0x42 } @@ -15175,6 +15647,270 @@ func (m *DeviceInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ChatMessage) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ChatMessage) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ChatMessage) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ModifiedAt != 0 { + i = encodeVarintModels(dAtA, i, uint64(m.ModifiedAt)) + i-- + dAtA[i] = 0x48 + } + if m.Reactions != nil { + { + size, err := m.Reactions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintModels(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + if len(m.Attachments) > 0 { + for iNdEx := len(m.Attachments) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Attachments[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintModels(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if m.Message != nil { + { + size, err := m.Message.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintModels(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if len(m.ReplyToMessageId) > 0 { + i -= len(m.ReplyToMessageId) + copy(dAtA[i:], m.ReplyToMessageId) + i = encodeVarintModels(dAtA, i, uint64(len(m.ReplyToMessageId))) + i-- + dAtA[i] = 0x2a + } + if m.CreatedAt != 0 { + i = encodeVarintModels(dAtA, i, uint64(m.CreatedAt)) + i-- + dAtA[i] = 0x20 + } + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintModels(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0x1a + } + if len(m.OrderId) > 0 { + i -= len(m.OrderId) + copy(dAtA[i:], m.OrderId) + i = encodeVarintModels(dAtA, i, uint64(len(m.OrderId))) + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintModels(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ChatMessageMessageContent) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ChatMessageMessageContent) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ChatMessageMessageContent) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Marks) > 0 { + for iNdEx := len(m.Marks) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Marks[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintModels(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if m.Style != 0 { + i = encodeVarintModels(dAtA, i, uint64(m.Style)) + i-- + dAtA[i] = 0x10 + } + if len(m.Text) > 0 { + i -= len(m.Text) + copy(dAtA[i:], m.Text) + i = encodeVarintModels(dAtA, i, uint64(len(m.Text))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ChatMessageAttachment) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ChatMessageAttachment) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ChatMessageAttachment) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Type != 0 { + i = encodeVarintModels(dAtA, i, uint64(m.Type)) + i-- + dAtA[i] = 0x10 + } + if len(m.Target) > 0 { + i -= len(m.Target) + copy(dAtA[i:], m.Target) + i = encodeVarintModels(dAtA, i, uint64(len(m.Target))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ChatMessageReactions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ChatMessageReactions) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ChatMessageReactions) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Reactions) > 0 { + for k := range m.Reactions { + v := m.Reactions[k] + baseI := i + if v != nil { + { + size, err := v.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintModels(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintModels(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintModels(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *ChatMessageReactionsIdentityList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ChatMessageReactionsIdentityList) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ChatMessageReactionsIdentityList) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Ids) > 0 { + for iNdEx := len(m.Ids) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Ids[iNdEx]) + copy(dAtA[i:], m.Ids[iNdEx]) + i = encodeVarintModels(dAtA, i, uint64(len(m.Ids[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func encodeVarintModels(dAtA []byte, offset int, v uint64) int { offset -= sovModels(v) base := offset @@ -15555,6 +16291,18 @@ func (m *BlockContentOfWidget) Size() (n int) { } return n } +func (m *BlockContentOfChat) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Chat != nil { + l = m.Chat.Size() + n += 2 + l + sovModels(uint64(l)) + } + return n +} func (m *BlockRestrictions) Size() (n int) { if m == nil { return 0 @@ -16326,6 +17074,15 @@ func (m *BlockContentWidget) Size() (n int) { return n } +func (m *BlockContentChat) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func (m *BlockMetaOnly) Size() (n int) { if m == nil { return 0 @@ -17792,6 +18549,126 @@ func (m *DeviceInfo) Size() (n int) { return n } +func (m *ChatMessage) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + l = len(m.OrderId) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + if m.CreatedAt != 0 { + n += 1 + sovModels(uint64(m.CreatedAt)) + } + l = len(m.ReplyToMessageId) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + if m.Message != nil { + l = m.Message.Size() + n += 1 + l + sovModels(uint64(l)) + } + if len(m.Attachments) > 0 { + for _, e := range m.Attachments { + l = e.Size() + n += 1 + l + sovModels(uint64(l)) + } + } + if m.Reactions != nil { + l = m.Reactions.Size() + n += 1 + l + sovModels(uint64(l)) + } + if m.ModifiedAt != 0 { + n += 1 + sovModels(uint64(m.ModifiedAt)) + } + return n +} + +func (m *ChatMessageMessageContent) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Text) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + if m.Style != 0 { + n += 1 + sovModels(uint64(m.Style)) + } + if len(m.Marks) > 0 { + for _, e := range m.Marks { + l = e.Size() + n += 1 + l + sovModels(uint64(l)) + } + } + return n +} + +func (m *ChatMessageAttachment) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Target) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + if m.Type != 0 { + n += 1 + sovModels(uint64(m.Type)) + } + return n +} + +func (m *ChatMessageReactions) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Reactions) > 0 { + for k, v := range m.Reactions { + _ = k + _ = v + l = 0 + if v != nil { + l = v.Size() + l += 1 + sovModels(uint64(l)) + } + mapEntrySize := 1 + len(k) + sovModels(uint64(len(k))) + l + n += mapEntrySize + 1 + sovModels(uint64(mapEntrySize)) + } + } + return n +} + +func (m *ChatMessageReactionsIdentityList) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Ids) > 0 { + for _, s := range m.Ids { + l = len(s) + n += 1 + l + sovModels(uint64(l)) + } + } + return n +} + func sovModels(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -19457,6 +20334,41 @@ func (m *Block) Unmarshal(dAtA []byte) error { } m.Content = &BlockContentOfWidget{v} iNdEx = postIndex + case 30: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Chat", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &BlockContentChat{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Content = &BlockContentOfChat{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipModels(dAtA[iNdEx:]) @@ -24208,6 +25120,56 @@ func (m *BlockContentWidget) Unmarshal(dAtA []byte) error { } return nil } +func (m *BlockContentChat) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Chat: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Chat: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipModels(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModels + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *BlockMetaOnly) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -33567,6 +34529,825 @@ func (m *DeviceInfo) Unmarshal(dAtA []byte) error { } return nil } +func (m *ChatMessage) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ChatMessage: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ChatMessage: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OrderId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OrderId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType) + } + m.CreatedAt = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CreatedAt |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReplyToMessageId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ReplyToMessageId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Message == nil { + m.Message = &ChatMessageMessageContent{} + } + if err := m.Message.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Attachments", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Attachments = append(m.Attachments, &ChatMessageAttachment{}) + if err := m.Attachments[len(m.Attachments)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reactions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Reactions == nil { + m.Reactions = &ChatMessageReactions{} + } + if err := m.Reactions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ModifiedAt", wireType) + } + m.ModifiedAt = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ModifiedAt |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipModels(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModels + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ChatMessageMessageContent) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MessageContent: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MessageContent: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Text", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Text = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Style", wireType) + } + m.Style = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Style |= BlockContentTextStyle(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Marks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Marks = append(m.Marks, &BlockContentTextMark{}) + if err := m.Marks[len(m.Marks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipModels(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModels + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ChatMessageAttachment) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Attachment: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Attachment: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Target = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + m.Type = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Type |= ChatMessageAttachmentAttachmentType(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipModels(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModels + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ChatMessageReactions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Reactions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Reactions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reactions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Reactions == nil { + m.Reactions = make(map[string]*ChatMessageReactionsIdentityList) + } + var mapkey string + var mapvalue *ChatMessageReactionsIdentityList + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthModels + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthModels + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthModels + } + postmsgIndex := iNdEx + mapmsglen + if postmsgIndex < 0 { + return ErrInvalidLengthModels + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue = &ChatMessageReactionsIdentityList{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + } else { + iNdEx = entryPreIndex + skippy, err := skipModels(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModels + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Reactions[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipModels(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModels + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ChatMessageReactionsIdentityList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IdentityList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IdentityList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ids", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ids = append(m.Ids, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipModels(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModels + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipModels(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/pkg/lib/pb/model/protos/models.proto b/pkg/lib/pb/model/protos/models.proto index 6eef89f03..a0a3253dc 100644 --- a/pkg/lib/pb/model/protos/models.proto +++ b/pkg/lib/pb/model/protos/models.proto @@ -51,6 +51,9 @@ enum SmartBlockType { NotificationObject = 0x217; DevicesObject = 0x218; + + ChatObject = 0x219; // Container for any-store based chats + ChatDerivedObject = 0x220; // Any-store based object for chat } message Search { @@ -97,6 +100,7 @@ message Block { Content.TableColumn tableColumn = 27; Content.TableRow tableRow = 28; Content.Widget widget = 29; + Content.Chat chat = 30; } message Restrictions { @@ -574,6 +578,9 @@ message Block { View = 4; } } + message Chat { + + } } } @@ -751,6 +758,8 @@ message ObjectType { participant = 19; pdf = 20; + chat = 21; + chatDerived = 22; } } @@ -1308,4 +1317,41 @@ message DeviceInfo { int64 addDate = 3; bool archived = 4; bool isConnected = 5; +} + +message ChatMessage { + string id = 1; // Unique message identifier + string orderId = 2; // Used for subscriptions + string creator = 3; // Identifier for the message creator + int64 createdAt = 4; + int64 modifiedAt = 9; + string replyToMessageId = 5; // Identifier for the message being replied to + MessageContent message = 6; // Message content + repeated Attachment attachments = 7; // Attachments slice + Reactions reactions = 8; // Reactions to the message + + message MessageContent { + string text = 1; // The text content of the message part + Block.Content.Text.Style style = 2; // The style/type of the message part + repeated Block.Content.Text.Mark marks = 3; // List of marks applied to the text + } + + message Attachment { + string target = 1; // Identifier for the attachment object + AttachmentType type = 2; // Type of attachment + + enum AttachmentType { + FILE = 0; // File attachment + IMAGE = 1; // Image attachment + LINK = 2; // Link attachment + } + } + + message Reactions { + map reactions = 1; // Map of emoji to list of user IDs + + message IdentityList { + repeated string ids = 1; // List of user IDs + } + } } \ No newline at end of file diff --git a/space/spacecore/localdiscovery/common.go b/space/spacecore/localdiscovery/common.go index a7dcb8d49..c68b289da 100644 --- a/space/spacecore/localdiscovery/common.go +++ b/space/spacecore/localdiscovery/common.go @@ -1,8 +1,17 @@ package localdiscovery import ( + "fmt" + gonet "net" + "runtime" + "strings" + "github.com/anyproto/any-sync/app" "github.com/anyproto/any-sync/app/logger" + + "github.com/anyproto/anytype-heart/net/addrs" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" + "github.com/anyproto/anytype-heart/util/slice" ) const ( @@ -14,6 +23,16 @@ const ( var log = logger.NewNamed(CName) +type DiscoveryPossibility int + +const ( + DiscoveryPossible DiscoveryPossibility = 0 + DiscoveryNoInterfaces DiscoveryPossibility = 2 + DiscoveryLocalNetworkRestricted DiscoveryPossibility = 3 +) + +type HookCallback func(state DiscoveryPossibility) + type DiscoveredPeer struct { Addrs []string PeerId string @@ -33,3 +52,79 @@ type LocalDiscovery interface { Start() error // Start the local discovery. Used when automatic start is disabled. app.ComponentRunnable } + +type NetworkStateService interface { + RegisterHook(hook func(network model.DeviceNetworkType)) +} + +// filterMulticastInterfaces filters out interfaces that doesn't make sense to use for multicast discovery. +// Also filters out loopback interfaces to make less mess. +// Please note: this call do a number of underlying syscalls to get addrs for each interface, but they will be cached after first call. +func filterMulticastInterfaces(ifaces []addrs.NetInterfaceWithAddrCache) []addrs.NetInterfaceWithAddrCache { + return slice.Filter(ifaces, func(iface addrs.NetInterfaceWithAddrCache) bool { + if iface.Flags&gonet.FlagUp != 0 && iface.Flags&gonet.FlagMulticast != 0 && iface.Flags&gonet.FlagLoopback == 0 { + if len(iface.GetAddr()) > 0 { + return true + } + } + return false + }) +} + +func (l *localDiscovery) getP2PPossibility(newAddrs addrs.InterfacesAddrs) DiscoveryPossibility { + // some sophisticated logic for ios, because of possible Local Network Restrictions + var err error + interfaces := newAddrs.Interfaces + for _, iface := range interfaces { + if runtime.GOOS == "ios" { + // on ios we have to check only en interfaces + if !strings.HasPrefix(iface.Name, "en") { + // en1 used for wifi + // en2 used for wired connection + continue + } + } + addrs := iface.GetAddr() + if len(addrs) == 0 { + continue + } + for _, addr := range addrs { + if ip, ok := addr.(*gonet.IPNet); ok { + ipv4 := ip.IP.To4() + if ipv4 == nil { + continue + } + err = testSelfConnection(ipv4.String()) + if err != nil { + log.Warn(fmt.Sprintf("self connection via %s to %s failed: %v", iface.Name, ipv4.String(), err)) + } else { + return DiscoveryPossible + } + break + } + } + } + if err != nil { + // todo: double check network state provided by the client? + return DiscoveryLocalNetworkRestricted + } + return DiscoveryNoInterfaces +} + +func (l *localDiscovery) notifyP2PPossibilityState(state DiscoveryPossibility) { + l.hookMu.Lock() + defer l.hookMu.Unlock() + if state == l.hookState { + return + } + l.hookState = state + for _, callback := range l.hooks { + callback(state) + } +} + +func (l *localDiscovery) RegisterDiscoveryPossibilityHook(hook func(state DiscoveryPossibility)) { + l.hookMu.Lock() + defer l.hookMu.Unlock() + l.hooks = append(l.hooks, hook) +} diff --git a/space/spacecore/localdiscovery/localdiscovery.go b/space/spacecore/localdiscovery/localdiscovery.go index c20b058d5..ada558215 100644 --- a/space/spacecore/localdiscovery/localdiscovery.go +++ b/space/spacecore/localdiscovery/localdiscovery.go @@ -20,19 +20,13 @@ import ( "github.com/anyproto/anytype-heart/core/anytype/config" "github.com/anyproto/anytype-heart/net/addrs" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/space/spacecore/clientserver" ) -var interfacesSortPriority = []string{"en", "wlan", "wl", "eth", "lo"} - type Hook int -const ( - PeerToPeerImpossible Hook = 0 - PeerToPeerPossible Hook = 1 -) - -type HookCallback func() +var interfacesSortPriority = []string{"wlan", "wl", "en", "eth", "tun", "tap", "utun", "lo"} type localDiscovery struct { server *zeroconf.Server @@ -54,12 +48,14 @@ type localDiscovery struct { notifier Notifier m sync.Mutex - hookMu sync.Mutex - hooks map[Hook][]HookCallback + hookMu sync.Mutex + hookState DiscoveryPossibility + hooks []HookCallback + networkState NetworkStateService } func New() LocalDiscovery { - return &localDiscovery{hooks: make(map[Hook][]HookCallback, 0)} + return &localDiscovery{hooks: make([]HookCallback, 0)} } func (l *localDiscovery) SetNotifier(notifier Notifier) { @@ -70,8 +66,10 @@ func (l *localDiscovery) Init(a *app.App) (err error) { l.manualStart = a.MustComponent(config.CName).(*config.Config).DontStartLocalNetworkSyncAutomatically l.nodeConf = a.MustComponent(config.CName).(*config.Config).GetNodeConf() l.peerId = a.MustComponent(accountservice.CName).(accountservice.Service).Account().PeerId - l.periodicCheck = periodicsync.NewPeriodicSync(10, 0, l.checkAddrs, log) + l.periodicCheck = periodicsync.NewPeriodicSync(5, 0, l.refreshInterfaces, log) l.drpcServer = app.MustComponent[clientserver.ClientServer](a) + l.networkState = app.MustComponent[NetworkStateService](a) + return } @@ -86,7 +84,7 @@ func (l *localDiscovery) Run(ctx context.Context) (err error) { func (l *localDiscovery) Start() (err error) { if !l.drpcServer.ServerStarted() { - l.executeHook(PeerToPeerImpossible) + l.notifyP2PPossibilityState(DiscoveryNoInterfaces) return } l.m.Lock() @@ -95,6 +93,9 @@ func (l *localDiscovery) Start() (err error) { return } l.started = true + l.networkState.RegisterHook(func(_ model.DeviceNetworkType) { + l.refreshInterfaces(l.ctx) + }) l.port = l.drpcServer.Port() l.periodicCheck.Run() @@ -142,27 +143,21 @@ func (l *localDiscovery) Close(ctx context.Context) (err error) { return nil } -func (l *localDiscovery) RegisterP2PNotPossible(hook func()) { - l.hookMu.Lock() - defer l.hookMu.Unlock() - l.hooks[PeerToPeerImpossible] = append(l.hooks[PeerToPeerImpossible], hook) -} - -func (l *localDiscovery) RegisterResetNotPossible(hook func()) { - l.hookMu.Lock() - defer l.hookMu.Unlock() - l.hooks[PeerToPeerPossible] = append(l.hooks[PeerToPeerPossible], hook) -} - -func (l *localDiscovery) checkAddrs(ctx context.Context) (err error) { +func (l *localDiscovery) refreshInterfaces(ctx context.Context) (err error) { + l.m.Lock() + defer l.m.Unlock() newAddrs, err := addrs.GetInterfacesAddrs() - l.notifyPeerToPeerStatus(newAddrs) - if err != nil { - return + if !addrs.NetAddrsEqualUnordered(l.interfacesAddrs.Addrs, newAddrs.Addrs) { + // only replace existing interface structs in case if we have a different set of addresses + // this optimization allows to save syscalls to get addrs for every iface, as we have a cache + newAddrs.Interfaces = filterMulticastInterfaces(newAddrs.Interfaces) + newAddrs.SortInterfacesWithPriority(interfacesSortPriority) } - newAddrs.SortWithPriority(interfacesSortPriority) + l.notifyP2PPossibilityState(l.getP2PPossibility(newAddrs)) if newAddrs.Equal(l.interfacesAddrs) && l.server != nil { + // we do additional check after we filter and sort multicast interfaces + // so this equal check is more precise return } l.interfacesAddrs = newAddrs @@ -174,22 +169,45 @@ func (l *localDiscovery) checkAddrs(ctx context.Context) (err error) { } l.ctx, l.cancel = context.WithCancel(ctx) if err = l.startServer(); err != nil { - return + return fmt.Errorf("starting mdns server: %w", err) } l.startQuerying(l.ctx) return } +func (l *localDiscovery) getAddresses() (ipv4, ipv6 []gonet.IP) { + for _, iface := range l.interfacesAddrs.Interfaces { + for _, addr := range iface.GetAddr() { + ip := addr.(*gonet.IPNet).IP + if ip.To4() != nil { + ipv4 = append(ipv4, ip) + } else { + ipv6 = append(ipv6, ip) + } + } + } + + if len(ipv4) == 0 { + // fallback in case we have no ipv4 addresses from interfaces + for _, addr := range l.interfacesAddrs.Addrs { + ip := strings.Split(addr.String(), "/")[0] + ipVal := gonet.ParseIP(ip) + if ipVal.To4() != nil { + ipv4 = append(ipv4, ipVal) + } else { + ipv6 = append(ipv6, ipVal) + } + } + l.interfacesAddrs.SortIPsLikeInterfaces(ipv4) + } + return +} + func (l *localDiscovery) startServer() (err error) { l.ipv4 = l.ipv4[:0] - l.ipv6 = l.ipv6[:0] - for _, addr := range l.interfacesAddrs.Addrs { - ip := strings.Split(addr.String(), "/")[0] - if gonet.ParseIP(ip).To4() != nil { - l.ipv4 = append(l.ipv4, ip) - } else { - l.ipv6 = append(l.ipv6, ip) - } + ipv4, _ := l.getAddresses() // ignore ipv6 for now + for _, ip := range ipv4 { + l.ipv4 = append(l.ipv4, ip.String()) } log.Debug("starting mdns server", zap.Strings("ips", l.ipv4), zap.Int("port", l.port), zap.String("peerId", l.peerId)) l.server, err = zeroconf.RegisterProxy( @@ -200,10 +218,10 @@ func (l *localDiscovery) startServer() (err error) { l.peerId, l.ipv4, // do not include ipv6 addresses, because they are disabled nil, - l.interfacesAddrs.Interfaces, - zeroconf.TTL(60), + l.interfacesAddrs.NetInterfaces(), + zeroconf.TTL(3600), // big ttl because we don't have re-broadcasting zeroconf.ServerSelectIPTraffic(zeroconf.IPv4), // disable ipv6 for now - zeroconf.WriteTimeout(time.Second*1), + zeroconf.WriteTimeout(time.Second*3), ) return } @@ -223,6 +241,7 @@ func (l *localDiscovery) readAnswers(ch chan *zeroconf.ServiceEntry) { continue } var portAddrs []string + l.interfacesAddrs.SortIPsLikeInterfaces(entry.AddrIPv4) for _, a := range entry.AddrIPv4 { portAddrs = append(portAddrs, fmt.Sprintf("%s:%d", a.String(), entry.Port)) } @@ -242,47 +261,17 @@ func (l *localDiscovery) readAnswers(ch chan *zeroconf.ServiceEntry) { func (l *localDiscovery) browse(ctx context.Context, ch chan *zeroconf.ServiceEntry) { defer l.closeWait.Done() - newAddrs, err := addrs.GetInterfacesAddrs() - l.notifyPeerToPeerStatus(newAddrs) - - if err != nil { - return - } - newAddrs.SortWithPriority(interfacesSortPriority) if err := zeroconf.Browse(ctx, serviceName, mdnsDomain, ch, - zeroconf.ClientWriteTimeout(time.Second*1), - zeroconf.SelectIfaces(newAddrs.Interfaces), + zeroconf.ClientWriteTimeout(time.Second*3), + zeroconf.SelectIfaces(l.interfacesAddrs.NetInterfaces()), zeroconf.SelectIPTraffic(zeroconf.IPv4)); err != nil { log.Error("browsing failed", zap.Error(err)) } } -func (l *localDiscovery) notifyPeerToPeerStatus(newAddrs addrs.InterfacesAddrs) { - if l.notifyP2PNotPossible(newAddrs) { - l.executeHook(PeerToPeerImpossible) - } else { - l.executeHook(PeerToPeerPossible) +func (l *localDiscovery) GetOwnAddresses() OwnAddresses { + return OwnAddresses{ + Addrs: l.ipv4, + Port: l.port, } } - -func (l *localDiscovery) notifyP2PNotPossible(newAddrs addrs.InterfacesAddrs) bool { - return len(newAddrs.Interfaces) == 0 || addrs.IsLoopBack(newAddrs.Interfaces) -} - -func (l *localDiscovery) executeHook(hook Hook) { - hooks := l.getHooks(hook) - for _, callback := range hooks { - callback() - } -} - -func (l *localDiscovery) getHooks(hook Hook) []HookCallback { - l.hookMu.Lock() - defer l.hookMu.Unlock() - if hooks, ok := l.hooks[hook]; ok { - callback := make([]HookCallback, 0, len(hooks)) - callback = append(callback, hooks...) - return callback - } - return nil -} diff --git a/space/spacecore/localdiscovery/localdiscovery_android.go b/space/spacecore/localdiscovery/localdiscovery_android.go index 665d389a3..3b4b2bcc1 100644 --- a/space/spacecore/localdiscovery/localdiscovery_android.go +++ b/space/spacecore/localdiscovery/localdiscovery_android.go @@ -2,9 +2,7 @@ package localdiscovery import ( "context" - "net" gonet "net" - "slices" "strings" "sync" @@ -14,6 +12,7 @@ import ( "github.com/anyproto/anytype-heart/core/anytype/config" "github.com/anyproto/anytype-heart/net/addrs" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/space/spacecore/clientserver" ) @@ -22,13 +21,6 @@ var proxyLock = sync.Mutex{} type Hook int -const ( - PeerToPeerImpossible Hook = 0 - PeerToPeerPossible Hook = 1 -) - -type HookCallback func() - type NotifierProvider interface { Provide(notifier Notifier, port int, peerId, serviceName string) Remove() @@ -54,9 +46,11 @@ type localDiscovery struct { notifier Notifier drpcServer clientserver.ClientServer manualStart bool - m sync.Mutex - hooks map[Hook][]HookCallback - hookMu sync.Mutex + + hookMu sync.Mutex + hookState DiscoveryPossibility + hooks []HookCallback + networkState NetworkStateService } func (l *localDiscovery) PeerDiscovered(peer DiscoveredPeer, own OwnAddresses) { @@ -66,7 +60,7 @@ func (l *localDiscovery) PeerDiscovered(peer DiscoveredPeer, own OwnAddresses) { } // TODO: move this to android side newAddrs, err := addrs.GetInterfacesAddrs() - l.notifyPeerToPeerStatus(newAddrs) + l.notifyP2PPossibilityState(l.getP2PPossibility(newAddrs)) if err != nil { return @@ -87,7 +81,7 @@ func (l *localDiscovery) PeerDiscovered(peer DiscoveredPeer, own OwnAddresses) { } func New() LocalDiscovery { - return &localDiscovery{hooks: make(map[Hook][]HookCallback, 0)} + return &localDiscovery{hooks: make([]HookCallback, 0)} } func (l *localDiscovery) SetNotifier(notifier Notifier) { @@ -98,6 +92,7 @@ func (l *localDiscovery) Init(a *app.App) (err error) { l.peerId = a.MustComponent(accountservice.CName).(accountservice.Service).Account().PeerId l.drpcServer = a.MustComponent(clientserver.CName).(clientserver.ClientServer) l.manualStart = a.MustComponent(config.CName).(*config.Config).DontStartLocalNetworkSyncAutomatically + l.networkState = app.MustComponent[NetworkStateService](a) return } @@ -110,10 +105,18 @@ func (l *localDiscovery) Run(ctx context.Context) (err error) { return l.Start() } +func (l *localDiscovery) refreshInterfaces() { + newAddrs, err := addrs.GetInterfacesAddrs() + if err != nil { + return + } + newAddrs.Interfaces = filterMulticastInterfaces(newAddrs.Interfaces) + l.notifyP2PPossibilityState(l.getP2PPossibility(newAddrs)) +} + func (l *localDiscovery) Start() (err error) { - l.m.Lock() - defer l.m.Unlock() if !l.drpcServer.ServerStarted() { + l.notifyP2PPossibilityState(DiscoveryNoInterfaces) return } provider := getNotifierProvider() @@ -121,6 +124,11 @@ func (l *localDiscovery) Start() (err error) { return } provider.Provide(l, l.drpcServer.Port(), l.peerId, serviceName) + l.networkState.RegisterHook(func(_ model.DeviceNetworkType) { + l.refreshInterfaces() + }) + + l.refreshInterfaces() return } @@ -128,18 +136,6 @@ func (l *localDiscovery) Name() (name string) { return CName } -func (l *localDiscovery) RegisterP2PNotPossible(hook func()) { - l.hookMu.Lock() - defer l.hookMu.Unlock() - l.hooks[PeerToPeerImpossible] = append(l.hooks[PeerToPeerImpossible], hook) -} - -func (l *localDiscovery) RegisterResetNotPossible(hook func()) { - l.hookMu.Lock() - defer l.hookMu.Unlock() - l.hooks[PeerToPeerPossible] = append(l.hooks[PeerToPeerPossible], hook) -} - func (l *localDiscovery) Close(ctx context.Context) (err error) { if !l.drpcServer.ServerStarted() { return @@ -151,38 +147,3 @@ func (l *localDiscovery) Close(ctx context.Context) (err error) { provider.Remove() return nil } -func (l *localDiscovery) notifyPeerToPeerStatus(newAddrs addrs.InterfacesAddrs) { - if l.notifyP2PNotPossible(newAddrs) { - l.executeHook(PeerToPeerImpossible) - } else { - l.executeHook(PeerToPeerPossible) - } -} - -func (l *localDiscovery) notifyP2PNotPossible(newAddrs addrs.InterfacesAddrs) bool { - return len(newAddrs.Interfaces) == 0 || IsLoopBack(newAddrs.Interfaces) -} - -func IsLoopBack(interfaces []net.Interface) bool { - return len(interfaces) == 1 && slices.ContainsFunc(interfaces, func(n net.Interface) bool { - return n.Flags&net.FlagLoopback != 0 - }) -} - -func (l *localDiscovery) executeHook(hook Hook) { - hooks := l.getHooks(hook) - for _, callback := range hooks { - callback() - } -} - -func (l *localDiscovery) getHooks(hook Hook) []HookCallback { - l.hookMu.Lock() - defer l.hookMu.Unlock() - if hooks, ok := l.hooks[hook]; ok { - callback := make([]HookCallback, 0, len(hooks)) - callback = append(callback, hooks...) - return callback - } - return nil -} diff --git a/space/spacecore/localdiscovery/localdiscovery_test.go b/space/spacecore/localdiscovery/localdiscovery_test.go index 5cf59233b..293ed80c5 100644 --- a/space/spacecore/localdiscovery/localdiscovery_test.go +++ b/space/spacecore/localdiscovery/localdiscovery_test.go @@ -15,6 +15,7 @@ import ( "go.uber.org/mock/gomock" "github.com/anyproto/anytype-heart/core/anytype/config" + "github.com/anyproto/anytype-heart/core/device/mock_device" "github.com/anyproto/anytype-heart/core/event/mock_event" "github.com/anyproto/anytype-heart/space/spacecore/clientserver/mock_clientserver" "github.com/anyproto/anytype-heart/tests/testutil" @@ -22,10 +23,11 @@ import ( type fixture struct { LocalDiscovery - nodeConf *mock_nodeconf.MockService - eventSender *mock_event.MockSender - clientServer *mock_clientserver.MockClientServer - account *mock_accountservice.MockService + nodeConf *mock_nodeconf.MockService + eventSender *mock_event.MockSender + clientServer *mock_clientserver.MockClientServer + deviceService *mock_device.MockNetworkState + account *mock_accountservice.MockService } func newFixture(t *testing.T) *fixture { @@ -33,7 +35,7 @@ func newFixture(t *testing.T) *fixture { c := &config.Config{} nodeConf := mock_nodeconf.NewMockService(ctrl) eventSender := mock_event.NewMockSender(t) - + deviceService := mock_device.NewMockNetworkState(t) clientServer := mock_clientserver.NewMockClientServer(t) accountKeys, err := accountdata.NewRandom() assert.Nil(t, err) @@ -45,6 +47,7 @@ func newFixture(t *testing.T) *fixture { Register(testutil.PrepareMock(ctx, a, nodeConf)). Register(testutil.PrepareMock(ctx, a, eventSender)). Register(account). + Register(testutil.PrepareMock(ctx, a, deviceService)). Register(testutil.PrepareMock(ctx, a, clientServer)) discovery := New() @@ -56,6 +59,7 @@ func newFixture(t *testing.T) *fixture { nodeConf: nodeConf, eventSender: eventSender, clientServer: clientServer, + deviceService: deviceService, account: account, } return f @@ -65,10 +69,10 @@ func TestLocalDiscovery_Init(t *testing.T) { t.Run("init success", func(t *testing.T) { // given f := newFixture(t) - // when f.clientServer.EXPECT().ServerStarted().Return(true) f.clientServer.EXPECT().Port().Return(6789) + f.deviceService.EXPECT().RegisterHook(mock.Anything).Return() err := f.Run(context.Background()) assert.Nil(t, err) @@ -80,34 +84,34 @@ func TestLocalDiscovery_Init(t *testing.T) { } func TestLocalDiscovery_checkAddrs(t *testing.T) { - t.Run("checkAddrs - server run successfully", func(t *testing.T) { + t.Run("refreshInterfaces - server run successfully", func(t *testing.T) { // given f := newFixture(t) // when ld := f.LocalDiscovery.(*localDiscovery) ld.port = 6789 - err := ld.checkAddrs(context.Background()) + err := ld.refreshInterfaces(context.Background()) // then assert.Nil(t, err) }) - t.Run("checkAddrs - server run successfully and send update to peer to peer status hook", func(t *testing.T) { + t.Run("refreshInterfaces - server run successfully and send update to peer to peer status hook", func(t *testing.T) { // given f := newFixture(t) // when ld := f.LocalDiscovery.(*localDiscovery) - var hookCalled atomic.Bool - ld.RegisterResetNotPossible(func() { - hookCalled.Store(true) + var hookCalled atomic.Int64 + ld.RegisterDiscoveryPossibilityHook(func(state DiscoveryPossibility) { + hookCalled.Store(int64(state)) }) ld.port = 6789 - err := ld.checkAddrs(context.Background()) + err := ld.refreshInterfaces(context.Background()) // then assert.Nil(t, err) - assert.True(t, hookCalled.Load()) + assert.True(t, hookCalled.Load() == int64(DiscoveryPossible)) }) } diff --git a/space/spacecore/localdiscovery/selfconnect.go b/space/spacecore/localdiscovery/selfconnect.go new file mode 100644 index 000000000..d6b4d3994 --- /dev/null +++ b/space/spacecore/localdiscovery/selfconnect.go @@ -0,0 +1,84 @@ +package localdiscovery + +import ( + "bufio" + "fmt" + "net" + "strings" + "time" +) + +const expectedMessage = "test" + +func handleConnection(conn net.Conn) error { + defer conn.Close() + + reader := bufio.NewReader(conn) + message, err := reader.ReadString('\n') + if err != nil { + return fmt.Errorf("error reading message: %w", err) + } + + // Trim newline characters and validate the message + message = strings.TrimSpace(message) + + if message != expectedMessage { + return fmt.Errorf("unexpected message received: %s", message) + } + + return nil +} + +func startServer(ip string) (listener net.Listener, port int, err error) { + listener, err = net.Listen("tcp", ip+":0") + if err != nil { + return nil, 0, fmt.Errorf("error starting server: %w", err) + } + + port = listener.Addr().(*net.TCPAddr).Port + + return listener, port, nil +} + +func sendMessage(ip string, port int, message string) error { + conn, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%d", ip, port), 3*time.Second) + if err != nil { + return fmt.Errorf("error connecting: %w", err) + } + defer conn.Close() + + _, err = fmt.Fprintf(conn, "%s\n", message) + if err != nil { + return fmt.Errorf("error sending message: %w", err) + } + + return nil +} + +func testSelfConnection(ip string) error { + listener, port, err := startServer(ip) + if err != nil { + return err + } + var err2 error + defer listener.Close() + ch := make(chan struct{}) + go func() { + defer close(ch) + for { + conn, err := listener.Accept() + if err != nil { + err2 = err + return + } + err2 = handleConnection(conn) + return + } + }() + err = sendMessage(ip, port, expectedMessage) + if err != nil { + return err + } + <-ch + return err2 +} diff --git a/space/spacecore/localdiscovery/selfconnect_test.go b/space/spacecore/localdiscovery/selfconnect_test.go new file mode 100644 index 000000000..308eac2e6 --- /dev/null +++ b/space/spacecore/localdiscovery/selfconnect_test.go @@ -0,0 +1,15 @@ +package localdiscovery + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func Test_testSelfConnection(t *testing.T) { + err := testSelfConnection("127.0.0.1") + require.NoError(t, err) + + err = testSelfConnection("11.11.11.11") + require.Error(t, err) +} diff --git a/space/spacecore/rpchandler.go b/space/spacecore/rpchandler.go index 76800390e..07509fea1 100644 --- a/space/spacecore/rpchandler.go +++ b/space/spacecore/rpchandler.go @@ -3,11 +3,13 @@ package spacecore import ( "context" "fmt" + "net/url" "github.com/anyproto/any-sync/commonspace" "github.com/anyproto/any-sync/commonspace/spacesyncproto" "github.com/anyproto/any-sync/net/peer" "go.uber.org/zap" + "golang.org/x/exp/slices" "github.com/anyproto/anytype-heart/space/spacecore/clientspaceproto" ) @@ -49,8 +51,21 @@ func (r *rpcHandler) SpaceExchange(ctx context.Context, request *clientspaceprot return nil, err } var portAddrs []string + peerAddr := peer.CtxPeerAddr(ctx) + + if peerAddr != "" { + // prioritize address remote peer connected us from + if u, errParse := url.Parse(peerAddr); errParse == nil { + portAddrs = append(portAddrs, u.Host) + } + } + for _, ip := range request.LocalServer.Ips { - portAddrs = append(portAddrs, fmt.Sprintf("%s:%d", ip, request.LocalServer.Port)) + addr := fmt.Sprintf("%s:%d", ip, request.LocalServer.Port) + if slices.Contains(portAddrs, addr) { + continue + } + portAddrs = append(portAddrs, addr) } r.s.peerService.SetPeerAddrs(peerId, portAddrs) r.s.peerStore.UpdateLocalPeer(peerId, request.SpaceIds) diff --git a/space/spacecore/service.go b/space/spacecore/service.go index e857484d3..4ca2e36d2 100644 --- a/space/spacecore/service.go +++ b/space/spacecore/service.go @@ -81,12 +81,6 @@ type service struct { peerService peerservice.PeerService poolManager PoolManager streamHandler *streamHandler - syncStatusService syncStatusService -} - -type syncStatusService interface { - RegisterSpace(space commonspace.Space, sw objectsyncstatus.StatusWatcher) - UnregisterSpace(space commonspace.Space) } func (s *service) Init(a *app.App) (err error) { @@ -101,7 +95,6 @@ func (s *service) Init(a *app.App) (err error) { s.spaceStorageProvider = a.MustComponent(spacestorage.CName).(storage.ClientStorage) s.peerStore = a.MustComponent(peerstore.CName).(peerstore.PeerStore) s.peerService = a.MustComponent(peerservice.CName).(peerservice.PeerService) - s.syncStatusService = app.MustComponent[syncStatusService](a) localDiscovery := a.MustComponent(localdiscovery.CName).(localdiscovery.LocalDiscovery) localDiscovery.SetNotifier(s) s.streamHandler = &streamHandler{spaceCore: s} @@ -242,7 +235,7 @@ func (s *service) loadSpace(ctx context.Context, id string) (value ocache.Object if err != nil { return } - ns, err := newAnySpace(cc, s.syncStatusService, statusService) + ns, err := newAnySpace(cc) if err != nil { return } diff --git a/space/spacecore/space.go b/space/spacecore/space.go index e1e5d2545..672969399 100644 --- a/space/spacecore/space.go +++ b/space/spacecore/space.go @@ -5,22 +5,14 @@ import ( "time" "github.com/anyproto/any-sync/commonspace" - - "github.com/anyproto/anytype-heart/core/syncstatus/objectsyncstatus" ) -func newAnySpace(cc commonspace.Space, status syncStatusService, statusWatcher objectsyncstatus.StatusWatcher) (*AnySpace, error) { - return &AnySpace{ - Space: cc, - status: status, - statusWatcher: statusWatcher, - }, nil +func newAnySpace(cc commonspace.Space) (*AnySpace, error) { + return &AnySpace{Space: cc}, nil } type AnySpace struct { commonspace.Space - status syncStatusService - statusWatcher objectsyncstatus.StatusWatcher } func (s *AnySpace) Init(ctx context.Context) (err error) { @@ -28,7 +20,6 @@ func (s *AnySpace) Init(ctx context.Context) (err error) { if err != nil { return } - s.status.RegisterSpace(s, s.statusWatcher) return } @@ -37,6 +28,5 @@ func (s *AnySpace) TryClose(objectTTL time.Duration) (close bool, err error) { } func (s *AnySpace) Close() (err error) { - s.status.UnregisterSpace(s) return s.Space.Close() } diff --git a/space/spacecore/storage/sqlitestorage/service.go b/space/spacecore/storage/sqlitestorage/service.go index 39daf2703..fed45cd03 100644 --- a/space/spacecore/storage/sqlitestorage/service.go +++ b/space/spacecore/storage/sqlitestorage/service.go @@ -30,6 +30,7 @@ var ( type configGetter interface { GetSpaceStorePath() string + GetTempDirPath() string } type storageService struct { @@ -64,6 +65,7 @@ type storageService struct { getBind *sql.Stmt } dbPath string + dbTempPath string lockedSpaces map[string]*lockSpace ctx context.Context @@ -88,6 +90,7 @@ func New() *storageService { func (s *storageService) Init(a *app.App) (err error) { s.dbPath = a.MustComponent("config").(configGetter).GetSpaceStorePath() + s.dbTempPath = a.MustComponent("config").(configGetter).GetTempDirPath() s.lockedSpaces = map[string]*lockSpace{} if s.checkpointAfterWrite == 0 { s.checkpointAfterWrite = time.Second @@ -123,6 +126,13 @@ func (s *storageService) Run(ctx context.Context) (err error) { return } s.writeDb.SetMaxOpenConns(1) + if s.dbTempPath != "" { + if _, err = s.writeDb.Exec("PRAGMA temp_store_directory = '" + s.dbTempPath + "';"); err != nil { + log.Error("write:: failed to set temp store directory", zap.Error(err)) + return + } + } + if _, err = s.writeDb.Exec(sqlCreateTables); err != nil { log.With(zap.String("db", "spacestore_sqlite"), zap.String("type", "createtable"), zap.Error(err)).Error("failed to open db") return @@ -132,6 +142,12 @@ func (s *storageService) Run(ctx context.Context) (err error) { log.With(zap.String("db", "spacestore_sqlite"), zap.String("type", "read"), zap.Error(err)).Error("failed to open db") return } + if s.dbTempPath != "" { + if _, err = s.readDb.Exec("PRAGMA temp_store_directory = '" + s.dbTempPath + "';"); err != nil { + log.Error("read:: failed to set temp store directory", zap.Error(err)) + return + } + } s.readDb.SetMaxOpenConns(10) if err = initStmts(s); err != nil { diff --git a/space/spacecore/storage/sqlitestorage/service_test.go b/space/spacecore/storage/sqlitestorage/service_test.go index 3d5ed4bab..279b79aa0 100644 --- a/space/spacecore/storage/sqlitestorage/service_test.go +++ b/space/spacecore/storage/sqlitestorage/service_test.go @@ -195,6 +195,9 @@ type testConfig struct { func (t *testConfig) GetSpaceStorePath() string { return filepath.Join(t.tmpDir, "spaceStore.db") } +func (t *testConfig) GetTempDirPath() string { + return "" +} func (t *testConfig) Init(a *app.App) (err error) { return nil diff --git a/util/persistentqueue/queue.go b/util/persistentqueue/queue.go index ddf4dca3c..2b0afad76 100644 --- a/util/persistentqueue/queue.go +++ b/util/persistentqueue/queue.go @@ -312,6 +312,7 @@ func (q *Queue[T]) notifyWaiters() { for _, w := range q.waiters { close(w.waitCh) } + q.waiters = nil q.currentProcessingKey = nil }