mirror of
https://github.com/anyproto/anytype-heart.git
synced 2025-06-09 17:44:59 +09:00
GO-3811 Merge branch 'main' into go-3811-lib-declattering
This commit is contained in:
commit
697b82ed91
75 changed files with 6124 additions and 2665 deletions
5
.github/workflows/build.yml
vendored
5
.github/workflows/build.yml
vendored
|
@ -82,7 +82,7 @@ jobs:
|
|||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
||||
- name: Install old MacOS SDK (for backward compatibility of CGO)
|
||||
run: source .github/install_macos_sdk.sh 10.15
|
||||
if: github.event.inputs.run-on-runner != 'ARM64'
|
||||
if: github.event.inputs.run-on-runner != 'ARM64' && github.event_name != 'schedule'
|
||||
- name: Set env vars
|
||||
env:
|
||||
UNSPLASH_KEY: ${{ secrets.UNSPLASH_KEY }}
|
||||
|
@ -233,6 +233,9 @@ jobs:
|
|||
go install go.uber.org/mock/mockgen@v0.3.0
|
||||
make test-deps
|
||||
gomobile bind -tags "envproduction nogrpcserver gomobile nowatchdog nosigar nomutexdeadlockdetector timetzdata" -ldflags "$FLAGS" -v -target=ios -o Lib.xcframework github.com/anyproto/anytype-heart/clientlibrary/service github.com/anyproto/anytype-heart/core || true
|
||||
mkdir -p dist/ios/ && mv Lib.xcframework dist/ios/
|
||||
go run cmd/iosrepack/main.go
|
||||
mv dist/ios/Lib.xcframework .
|
||||
gtar --exclude ".*" -czvf ios_framework.tar.gz Lib.xcframework protobuf json
|
||||
gradle publish
|
||||
mv ios_framework.tar.gz .release/ios_framework_${VERSION}.tar.gz
|
||||
|
|
|
@ -84,6 +84,9 @@ packages:
|
|||
github.com/anyproto/anytype-heart/core/block/object/objectcache:
|
||||
interfaces:
|
||||
Cache:
|
||||
github.com/anyproto/anytype-heart/core/block/object/objectcreator:
|
||||
interfaces:
|
||||
Service:
|
||||
github.com/anyproto/anytype-heart/metrics/anymetry:
|
||||
interfaces:
|
||||
Service:
|
||||
|
|
7
Makefile
7
Makefile
|
@ -135,6 +135,8 @@ endif
|
|||
@cp pkg/lib/bundle/relations.json dist/ios/json/
|
||||
@cp pkg/lib/bundle/internal*.json dist/ios/json/
|
||||
@go mod tidy
|
||||
@echo 'Repacking iOS framework...'
|
||||
@go run cmd/iosrepack/main.go
|
||||
|
||||
install-dev-ios: setup-go build-ios protos-swift
|
||||
@echo 'Installing iOS framework locally at $(CLIENT_IOS_PATH)...'
|
||||
|
@ -337,7 +339,7 @@ endif
|
|||
### Tantivy Section
|
||||
|
||||
REPO := anyproto/tantivy-go
|
||||
VERSION := v0.0.7
|
||||
VERSION := v0.0.9
|
||||
OUTPUT_DIR := deps/libs
|
||||
SHA_FILE = tantivity_sha256.txt
|
||||
|
||||
|
@ -349,6 +351,7 @@ TANTIVY_LIBS := android-386.tar.gz \
|
|||
darwin-arm64.tar.gz \
|
||||
ios-amd64.tar.gz \
|
||||
ios-arm64.tar.gz \
|
||||
ios-arm64-sim.tar.gz \
|
||||
linux-amd64-musl.tar.gz \
|
||||
windows-amd64.tar.gz
|
||||
|
||||
|
@ -376,10 +379,12 @@ download-tantivy-all-force: download-tantivy
|
|||
@echo "SHA256 checksums generated."
|
||||
|
||||
download-tantivy-all: download-tantivy
|
||||
@rm -rf /deps/libs/*
|
||||
@echo "Validating SHA256 checksums..."
|
||||
@shasum -a 256 -c $(SHA_FILE) --status || { echo "Hash mismatch detected."; exit 1; }
|
||||
@echo "All files are valid."
|
||||
|
||||
download-tantivy-local:
|
||||
@rm -rf /deps/libs/*
|
||||
@mkdir -p $(OUTPUT_DIR)
|
||||
@cp -r $(TANTIVY_GO_PATH)/libs/ $(OUTPUT_DIR)
|
|
@ -25,314 +25,316 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
|
|||
func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) }
|
||||
|
||||
var fileDescriptor_93a29dc403579097 = []byte{
|
||||
// 4904 bytes of a gzipped FileDescriptorProto
|
||||
// 4931 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, 0xe8, 0x85, 0x65, 0x6f, 0xb9, 0x9b, 0xef, 0x6f,
|
||||
0x8f, 0xdb, 0xde, 0x99, 0xfd, 0x38, 0xf6, 0x90, 0x90, 0xc7, 0x1e, 0x7b, 0xcd, 0xd9, 0x1e, 0xe3,
|
||||
0x6e, 0xcf, 0x48, 0x2b, 0x21, 0x51, 0xae, 0x0e, 0xb7, 0x0b, 0x57, 0x57, 0xd6, 0x55, 0x65, 0xb7,
|
||||
0xa7, 0x0f, 0x81, 0x40, 0x20, 0x10, 0x08, 0xc4, 0x89, 0xaf, 0x17, 0x1e, 0x90, 0xf8, 0x6b, 0xe0,
|
||||
0xed, 0x1e, 0xef, 0x11, 0xed, 0xfe, 0x23, 0xa7, 0xca, 0xcc, 0xca, 0x8f, 0xa8, 0x8c, 0xac, 0xf2,
|
||||
0x3e, 0xcd, 0xa8, 0xe3, 0x17, 0x11, 0x99, 0x95, 0x91, 0x99, 0x91, 0x1f, 0x55, 0x8e, 0x6e, 0x16,
|
||||
0x67, 0x1b, 0x45, 0xc9, 0x38, 0xab, 0x36, 0x2a, 0x28, 0x97, 0x69, 0x02, 0xcd, 0xbf, 0x23, 0xf1,
|
||||
0xf3, 0xf0, 0xdd, 0x38, 0x5f, 0xf1, 0x55, 0x01, 0x1f, 0x7d, 0x68, 0xc8, 0x84, 0xcd, 0xe7, 0x71,
|
||||
0x3e, 0xad, 0x24, 0xf2, 0xd1, 0x07, 0x46, 0x02, 0x4b, 0xc8, 0xb9, 0xfa, 0xfd, 0xd9, 0xff, 0xfd,
|
||||
0x62, 0x10, 0xbd, 0xb7, 0x9d, 0xa5, 0x90, 0xf3, 0x6d, 0xa5, 0x31, 0xfc, 0x2a, 0xfa, 0xee, 0x56,
|
||||
0x51, 0xec, 0x01, 0x7f, 0x0d, 0x65, 0x95, 0xb2, 0x7c, 0x78, 0x77, 0xa4, 0x1c, 0x8c, 0x4e, 0x8a,
|
||||
0x64, 0xb4, 0x55, 0x14, 0x23, 0x23, 0x1c, 0x9d, 0xc0, 0x4f, 0x16, 0x50, 0xf1, 0x8f, 0xee, 0x85,
|
||||
0xa1, 0xaa, 0x60, 0x79, 0x05, 0xc3, 0xf3, 0xe8, 0xb7, 0xb6, 0x8a, 0x62, 0x0c, 0x7c, 0x07, 0xea,
|
||||
0x0a, 0x8c, 0x79, 0xcc, 0x61, 0xf8, 0xb0, 0xa5, 0xea, 0x02, 0xda, 0xc7, 0xa3, 0x6e, 0x50, 0xf9,
|
||||
0x99, 0x44, 0xdf, 0xa9, 0xfd, 0x5c, 0x2c, 0xf8, 0x94, 0x5d, 0xe5, 0xc3, 0xdb, 0x6d, 0x45, 0x25,
|
||||
0xd2, 0xb6, 0xef, 0x84, 0x10, 0x65, 0xf5, 0x4d, 0xf4, 0xeb, 0x6f, 0xe2, 0x2c, 0x03, 0xbe, 0x5d,
|
||||
0x42, 0x5d, 0x70, 0x57, 0x47, 0x8a, 0x46, 0x52, 0xa6, 0xed, 0xde, 0x0d, 0x32, 0xca, 0xf0, 0x57,
|
||||
0xd1, 0x77, 0xa5, 0xe4, 0x04, 0x12, 0xb6, 0x84, 0x72, 0xe8, 0xd5, 0x52, 0x42, 0xe2, 0x91, 0xb7,
|
||||
0x20, 0x6c, 0x7b, 0x9b, 0xe5, 0x4b, 0x28, 0xb9, 0xdf, 0xb6, 0x12, 0x86, 0x6d, 0x1b, 0x48, 0xd9,
|
||||
0xfe, 0x87, 0x41, 0xf4, 0xfd, 0xad, 0x24, 0x61, 0x8b, 0x9c, 0x1f, 0xb0, 0x24, 0xce, 0x0e, 0xd2,
|
||||
0xfc, 0xf2, 0x08, 0xae, 0xb6, 0x2f, 0x6a, 0x3e, 0x9f, 0xc1, 0xf0, 0xb9, 0xfb, 0x54, 0x25, 0x3a,
|
||||
0xd2, 0xec, 0xc8, 0x86, 0xb5, 0xef, 0x4f, 0xae, 0xa7, 0xa4, 0xca, 0xf2, 0x2f, 0x83, 0xe8, 0x06,
|
||||
0x2e, 0xcb, 0x98, 0x65, 0x4b, 0x30, 0xa5, 0xf9, 0xb4, 0xc3, 0xb0, 0x8b, 0xeb, 0xf2, 0x7c, 0x76,
|
||||
0x5d, 0x35, 0x55, 0xa2, 0x2c, 0x7a, 0xdf, 0x0e, 0x97, 0x31, 0x54, 0xa2, 0x3b, 0x3d, 0xa6, 0x23,
|
||||
0x42, 0x21, 0xda, 0xf3, 0x93, 0x3e, 0xa8, 0xf2, 0x96, 0x46, 0x43, 0xe5, 0x2d, 0x63, 0x95, 0x76,
|
||||
0xf6, 0xc8, 0x6b, 0xc1, 0x22, 0xb4, 0xaf, 0xc7, 0x3d, 0x48, 0xe5, 0xea, 0x4f, 0xa3, 0xdf, 0x78,
|
||||
0xc3, 0xca, 0xcb, 0xaa, 0x88, 0x13, 0x50, 0x5d, 0xe1, 0xbe, 0xab, 0xdd, 0x48, 0x71, 0x6f, 0x78,
|
||||
0xd0, 0x85, 0x59, 0x41, 0xdb, 0x08, 0x5f, 0x15, 0x80, 0xc7, 0x20, 0xa3, 0x58, 0x0b, 0xa9, 0xa0,
|
||||
0xc5, 0x90, 0xb2, 0x7d, 0x19, 0x0d, 0x8d, 0xed, 0xb3, 0x3f, 0x83, 0x84, 0x6f, 0x4d, 0xa7, 0xb8,
|
||||
0x55, 0x8c, 0xae, 0x20, 0x46, 0x5b, 0xd3, 0x29, 0xd5, 0x2a, 0x7e, 0x54, 0x39, 0xbb, 0x8a, 0x3e,
|
||||
0x40, 0xce, 0x0e, 0xd2, 0x4a, 0x38, 0x5c, 0x0f, 0x5b, 0x51, 0x98, 0x76, 0x3a, 0xea, 0x8b, 0x2b,
|
||||
0xc7, 0x7f, 0x35, 0x88, 0xbe, 0xe7, 0xf1, 0x7c, 0x02, 0x73, 0xb6, 0x84, 0xe1, 0x66, 0xb7, 0x35,
|
||||
0x49, 0x6a, 0xff, 0x1f, 0x5f, 0x43, 0xc3, 0x13, 0x26, 0x63, 0xc8, 0x20, 0xe1, 0x64, 0x98, 0x48,
|
||||
0x71, 0x67, 0x98, 0x68, 0xcc, 0xea, 0x61, 0x8d, 0x70, 0x0f, 0xf8, 0xf6, 0xa2, 0x2c, 0x21, 0xe7,
|
||||
0x64, 0x5b, 0x1a, 0xa4, 0xb3, 0x2d, 0x1d, 0xd4, 0x53, 0x9f, 0x3d, 0xe0, 0x5b, 0x59, 0x46, 0xd6,
|
||||
0x47, 0x8a, 0x3b, 0xeb, 0xa3, 0x31, 0xe5, 0x21, 0x89, 0x7e, 0xd3, 0x7a, 0x62, 0x7c, 0x3f, 0x3f,
|
||||
0x67, 0x43, 0xfa, 0x59, 0x08, 0xb9, 0xf6, 0xf1, 0xb0, 0x93, 0xf3, 0x54, 0xe3, 0xe5, 0xdb, 0x82,
|
||||
0x95, 0x74, 0xb3, 0x48, 0x71, 0x67, 0x35, 0x34, 0xa6, 0x3c, 0xfc, 0x49, 0xf4, 0x9e, 0x1a, 0x25,
|
||||
0x9b, 0xf9, 0xec, 0x9e, 0x77, 0x08, 0xc5, 0x13, 0xda, 0xfd, 0x0e, 0xca, 0x0c, 0x0e, 0x4a, 0xa6,
|
||||
0x06, 0x9f, 0xbb, 0x5e, 0x3d, 0x34, 0xf4, 0xdc, 0x0b, 0x43, 0x2d, 0xdb, 0x3b, 0x90, 0x01, 0x69,
|
||||
0x5b, 0x0a, 0x3b, 0x6c, 0x6b, 0x48, 0xd9, 0x2e, 0xa3, 0xdf, 0xd1, 0x8f, 0xa5, 0x9e, 0x47, 0x85,
|
||||
0xbc, 0x1e, 0xa4, 0xd7, 0x88, 0x7a, 0xdb, 0x90, 0xf6, 0xf5, 0xb4, 0x1f, 0xdc, 0xaa, 0x8f, 0xea,
|
||||
0x81, 0xfe, 0xfa, 0xa0, 0xfe, 0x77, 0x2f, 0x0c, 0x29, 0xdb, 0xff, 0x38, 0x88, 0x7e, 0xa0, 0x64,
|
||||
0x2f, 0xf3, 0xf8, 0x2c, 0x03, 0x31, 0x25, 0x1e, 0x01, 0xbf, 0x62, 0xe5, 0xe5, 0x78, 0x95, 0x27,
|
||||
0xc4, 0xf4, 0xef, 0x87, 0x3b, 0xa6, 0x7f, 0x52, 0xc9, 0xca, 0xf8, 0x54, 0x45, 0x39, 0x2b, 0x70,
|
||||
0xc6, 0xd7, 0xd4, 0x80, 0xb3, 0x82, 0xca, 0xf8, 0x5c, 0xa4, 0x65, 0xf5, 0xb0, 0x1e, 0x36, 0xfd,
|
||||
0x56, 0x0f, 0xed, 0x71, 0xf2, 0x4e, 0x08, 0x31, 0xc3, 0x56, 0x13, 0xc0, 0x2c, 0x3f, 0x4f, 0x67,
|
||||
0xa7, 0xc5, 0xb4, 0x0e, 0xe3, 0xc7, 0xfe, 0x08, 0xb5, 0x10, 0x62, 0xd8, 0x22, 0x50, 0xe5, 0xed,
|
||||
0x9f, 0x4d, 0x62, 0xa4, 0xba, 0xd2, 0x6e, 0xc9, 0xe6, 0x07, 0x30, 0x8b, 0x93, 0x95, 0xea, 0xff,
|
||||
0x9f, 0x84, 0x3a, 0x1e, 0xa6, 0x75, 0x21, 0x3e, 0xbd, 0xa6, 0x96, 0x2a, 0xcf, 0x7f, 0x0f, 0xa2,
|
||||
0x7b, 0x4d, 0xf5, 0x2f, 0xe2, 0x7c, 0x06, 0xaa, 0x3d, 0x65, 0xe9, 0xb7, 0xf2, 0xe9, 0x09, 0x54,
|
||||
0x3c, 0x2e, 0xf9, 0xf0, 0x0b, 0x7f, 0x25, 0x43, 0x3a, 0xba, 0x6c, 0x3f, 0xfa, 0x56, 0xba, 0xa6,
|
||||
0xd5, 0xc7, 0xf5, 0xc0, 0xa6, 0x86, 0x00, 0xb7, 0xd5, 0x85, 0x04, 0x0f, 0x00, 0x77, 0x42, 0x88,
|
||||
0x69, 0x75, 0x21, 0xd8, 0xcf, 0x97, 0x29, 0x87, 0x3d, 0xc8, 0xa1, 0x6c, 0xb7, 0xba, 0x54, 0x75,
|
||||
0x11, 0xa2, 0xd5, 0x09, 0xd4, 0x0c, 0x36, 0x8e, 0x37, 0x3d, 0x39, 0xae, 0x05, 0x8c, 0xb4, 0xa6,
|
||||
0xc7, 0xa7, 0xfd, 0x60, 0xb3, 0xba, 0xb3, 0x7c, 0x9e, 0xc0, 0x92, 0x5d, 0xe2, 0xd5, 0x9d, 0x6d,
|
||||
0x42, 0x02, 0xc4, 0xea, 0xce, 0x0b, 0x9a, 0x19, 0xcc, 0xf2, 0xf3, 0x3a, 0x85, 0x2b, 0x34, 0x83,
|
||||
0xd9, 0xca, 0xb5, 0x98, 0x98, 0xc1, 0x3c, 0x98, 0xf2, 0x70, 0x14, 0xfd, 0x9a, 0x10, 0xfe, 0x11,
|
||||
0x4b, 0xf3, 0xe1, 0x4d, 0x8f, 0x52, 0x2d, 0xd0, 0x56, 0x6f, 0xd1, 0x00, 0x2a, 0x71, 0xfd, 0xeb,
|
||||
0x76, 0x9c, 0x27, 0x90, 0x79, 0x4b, 0x6c, 0xc4, 0xc1, 0x12, 0x3b, 0x98, 0x49, 0x1d, 0x84, 0xb0,
|
||||
0x1e, 0xbf, 0xc6, 0x17, 0x71, 0x99, 0xe6, 0xb3, 0xa1, 0x4f, 0xd7, 0x92, 0x13, 0xa9, 0x83, 0x8f,
|
||||
0x43, 0x21, 0xac, 0x14, 0xb7, 0x8a, 0xa2, 0xac, 0x87, 0x45, 0x5f, 0x08, 0xbb, 0x48, 0x30, 0x84,
|
||||
0x5b, 0xa8, 0xdf, 0xdb, 0x0e, 0x24, 0x59, 0x9a, 0x07, 0xbd, 0x29, 0xa4, 0x8f, 0x37, 0x83, 0xa2,
|
||||
0xe0, 0x3d, 0x80, 0x78, 0x09, 0x4d, 0xcd, 0x7c, 0x4f, 0xc6, 0x06, 0x82, 0xc1, 0x8b, 0x40, 0xb3,
|
||||
0x4e, 0x13, 0xe2, 0xc3, 0xf8, 0x12, 0xea, 0x07, 0x0c, 0xf5, 0xbc, 0x36, 0xf4, 0xe9, 0x3b, 0x04,
|
||||
0xb1, 0x4e, 0xf3, 0x93, 0xca, 0xd5, 0x22, 0xfa, 0x40, 0xc8, 0x8f, 0xe3, 0x92, 0xa7, 0x49, 0x5a,
|
||||
0xc4, 0x79, 0x93, 0xff, 0xfb, 0xfa, 0x75, 0x8b, 0xd2, 0x2e, 0xd7, 0x7b, 0xd2, 0xca, 0xed, 0x7f,
|
||||
0x0e, 0xa2, 0xdb, 0xd8, 0xef, 0x31, 0x94, 0xf3, 0x54, 0x2c, 0x23, 0x2b, 0x39, 0x08, 0x0f, 0x3f,
|
||||
0x0f, 0x1b, 0x6d, 0x29, 0xe8, 0xd2, 0xfc, 0xf0, 0xfa, 0x8a, 0xaa, 0x60, 0x7f, 0x1c, 0x45, 0x72,
|
||||
0xb9, 0x22, 0x96, 0x94, 0x6e, 0xaf, 0x55, 0xeb, 0x18, 0x67, 0x3d, 0x79, 0x3b, 0x40, 0x98, 0xa9,
|
||||
0x42, 0xfe, 0x2e, 0x56, 0xca, 0x43, 0xaf, 0x86, 0x10, 0x11, 0x53, 0x05, 0x42, 0x70, 0x41, 0xc7,
|
||||
0x17, 0xec, 0xca, 0x5f, 0xd0, 0x5a, 0x12, 0x2e, 0xa8, 0x22, 0xcc, 0xde, 0x95, 0x2a, 0xa8, 0x6f,
|
||||
0xef, 0xaa, 0x29, 0x46, 0x68, 0xef, 0x0a, 0x33, 0xca, 0x30, 0x8b, 0x7e, 0xdb, 0x36, 0xfc, 0x82,
|
||||
0xb1, 0xcb, 0x79, 0x5c, 0x5e, 0x0e, 0x9f, 0xd0, 0xca, 0x0d, 0xa3, 0x1d, 0xad, 0xf5, 0x62, 0xcd,
|
||||
0xb0, 0x60, 0x3b, 0xac, 0x13, 0x8d, 0xd3, 0x32, 0x43, 0xc3, 0x82, 0x63, 0x43, 0x21, 0xc4, 0xb0,
|
||||
0x40, 0xa0, 0x66, 0xe4, 0xb6, 0xbd, 0x8d, 0x01, 0xaf, 0x96, 0x1c, 0xf5, 0x31, 0x50, 0xab, 0x25,
|
||||
0x0f, 0x86, 0x43, 0x68, 0xaf, 0x8c, 0x8b, 0x0b, 0x7f, 0x08, 0x09, 0x51, 0x38, 0x84, 0x1a, 0x04,
|
||||
0xb7, 0xf7, 0x18, 0xe2, 0x32, 0xb9, 0xf0, 0xb7, 0xb7, 0x94, 0x85, 0xdb, 0x5b, 0x33, 0xb8, 0xbd,
|
||||
0xa5, 0xe0, 0x4d, 0xca, 0x2f, 0x0e, 0x81, 0xc7, 0xfe, 0xf6, 0x76, 0x99, 0x70, 0x7b, 0xb7, 0x58,
|
||||
0x93, 0xc9, 0xd8, 0x0e, 0xc7, 0x8b, 0xb3, 0x2a, 0x29, 0xd3, 0x33, 0x18, 0x06, 0xac, 0x68, 0x88,
|
||||
0xc8, 0x64, 0x48, 0xd8, 0x0c, 0xd2, 0xca, 0x67, 0x23, 0xdb, 0x9f, 0x56, 0x68, 0x90, 0x6e, 0x6c,
|
||||
0x58, 0x04, 0x31, 0x48, 0xfb, 0x49, 0x5c, 0xbd, 0xbd, 0x92, 0x2d, 0x8a, 0xaa, 0xa3, 0x7a, 0x08,
|
||||
0x0a, 0x57, 0xaf, 0x0d, 0x2b, 0x9f, 0x6f, 0xa3, 0xdf, 0xb5, 0x1f, 0xe9, 0x69, 0x5e, 0x69, 0xaf,
|
||||
0xeb, 0xf4, 0x73, 0xb2, 0x30, 0x62, 0x5b, 0x2a, 0x80, 0x9b, 0x34, 0xa5, 0xf1, 0xcc, 0x77, 0x80,
|
||||
0xc7, 0x69, 0x56, 0x0d, 0x1f, 0xf8, 0x6d, 0x34, 0x72, 0x22, 0x4d, 0xf1, 0x71, 0xb8, 0xcf, 0xee,
|
||||
0x2c, 0x8a, 0x2c, 0x4d, 0xda, 0xfb, 0x93, 0x4a, 0x57, 0x8b, 0xc3, 0x7d, 0xd6, 0xc6, 0xf0, 0x18,
|
||||
0x34, 0x06, 0x2e, 0xff, 0x33, 0x59, 0x15, 0xe0, 0x1f, 0x83, 0x1c, 0x24, 0x3c, 0x06, 0x61, 0x14,
|
||||
0xd7, 0x67, 0x0c, 0xfc, 0x20, 0x5e, 0xb1, 0x05, 0x31, 0x06, 0x69, 0x71, 0xb8, 0x3e, 0x36, 0x66,
|
||||
0x32, 0x05, 0xed, 0x61, 0x3f, 0xe7, 0x50, 0xe6, 0x71, 0xb6, 0x9b, 0xc5, 0xb3, 0x6a, 0x48, 0xf4,
|
||||
0x1b, 0x97, 0x22, 0x32, 0x05, 0x9a, 0xf6, 0x3c, 0xc6, 0xfd, 0x6a, 0x37, 0x5e, 0xb2, 0x32, 0xe5,
|
||||
0xf4, 0x63, 0x34, 0x48, 0xe7, 0x63, 0x74, 0x50, 0xaf, 0xb7, 0xad, 0x32, 0xb9, 0x48, 0x97, 0x30,
|
||||
0x0d, 0x78, 0x6b, 0x90, 0x1e, 0xde, 0x2c, 0xd4, 0xd3, 0x68, 0x63, 0xb6, 0x28, 0x13, 0x20, 0x1b,
|
||||
0x4d, 0x8a, 0x3b, 0x1b, 0x4d, 0x63, 0xca, 0xc3, 0xdf, 0x0e, 0xa2, 0xdf, 0x93, 0x52, 0x7b, 0xd3,
|
||||
0x70, 0x27, 0xae, 0x2e, 0xce, 0x58, 0x5c, 0x4e, 0x87, 0x1f, 0xfb, 0xec, 0x78, 0x51, 0xed, 0xfa,
|
||||
0xd9, 0x75, 0x54, 0xf0, 0x63, 0x3d, 0x48, 0x2b, 0xab, 0xc7, 0x79, 0x1f, 0xab, 0x83, 0x84, 0x1f,
|
||||
0x2b, 0x46, 0xf1, 0x00, 0x22, 0xe4, 0x72, 0x81, 0xfe, 0x80, 0xd4, 0x77, 0x57, 0xe9, 0x0f, 0x3b,
|
||||
0x39, 0x3c, 0x3e, 0xd6, 0x42, 0x37, 0x5a, 0xd6, 0x29, 0x1b, 0xfe, 0x88, 0x19, 0xf5, 0xc5, 0x49,
|
||||
0xcf, 0xba, 0x57, 0x84, 0x3d, 0xb7, 0x7a, 0xc6, 0xa8, 0x2f, 0x4e, 0x78, 0xb6, 0x86, 0xb5, 0x90,
|
||||
0x67, 0xcf, 0xd0, 0x36, 0xea, 0x8b, 0xe3, 0x8c, 0x42, 0x31, 0xcd, 0xbc, 0xf0, 0x24, 0x60, 0x07,
|
||||
0xcf, 0x0d, 0x6b, 0xbd, 0x58, 0x1c, 0xb1, 0x5b, 0x45, 0x91, 0xad, 0x26, 0x30, 0x2f, 0x32, 0x32,
|
||||
0x62, 0x1d, 0x24, 0x1c, 0xb1, 0x18, 0xc5, 0xf9, 0xdd, 0x84, 0xd5, 0xd9, 0xa3, 0x37, 0xbf, 0x13,
|
||||
0xa2, 0x70, 0x7e, 0xd7, 0x20, 0x38, 0x43, 0x99, 0xb0, 0x6d, 0x96, 0x65, 0x90, 0xf0, 0xf6, 0x71,
|
||||
0x9f, 0xd6, 0x34, 0x44, 0x38, 0x43, 0x41, 0xa4, 0x59, 0x19, 0x37, 0xab, 0x91, 0xb8, 0x84, 0x17,
|
||||
0xab, 0x83, 0x34, 0xbf, 0x1c, 0xfa, 0x27, 0x63, 0x03, 0x10, 0x2b, 0x63, 0x2f, 0x88, 0x57, 0x3d,
|
||||
0xa7, 0xf9, 0x94, 0xf9, 0x57, 0x3d, 0xb5, 0x24, 0xbc, 0xea, 0x51, 0x04, 0x36, 0x79, 0x02, 0x94,
|
||||
0xc9, 0x5a, 0x12, 0x36, 0xa9, 0x08, 0xdf, 0x00, 0xa4, 0xf6, 0x4f, 0xc9, 0x01, 0x08, 0xed, 0x98,
|
||||
0x3e, 0xec, 0xe4, 0x70, 0x84, 0x36, 0xcb, 0x9f, 0x5d, 0xe0, 0xc9, 0x85, 0x3f, 0x42, 0x1d, 0x24,
|
||||
0x1c, 0xa1, 0x18, 0xc5, 0x55, 0x9a, 0x30, 0xbd, 0x7c, 0x7b, 0xe0, 0x8f, 0x8f, 0xd6, 0xd2, 0xed,
|
||||
0x61, 0x27, 0x87, 0x17, 0x24, 0xfb, 0x73, 0xf1, 0xcc, 0xbc, 0x41, 0x2e, 0x65, 0xe1, 0x05, 0x89,
|
||||
0x66, 0x70, 0xe9, 0xa5, 0xa0, 0x7e, 0x9c, 0xfe, 0xd2, 0x1b, 0x79, 0xb8, 0xf4, 0x0e, 0xa7, 0x9c,
|
||||
0xfc, 0xfb, 0x20, 0xba, 0x69, 0x7b, 0x39, 0x62, 0x75, 0x1f, 0x79, 0x1d, 0x67, 0xe9, 0x34, 0xe6,
|
||||
0x30, 0x61, 0x97, 0x90, 0xa3, 0x1d, 0x0d, 0xb7, 0xb4, 0x92, 0x1f, 0x39, 0x0a, 0xc4, 0x8e, 0x46,
|
||||
0x2f, 0x45, 0x1c, 0x27, 0x92, 0x3e, 0xad, 0x60, 0x3b, 0xae, 0x88, 0x91, 0xcc, 0x41, 0xc2, 0x71,
|
||||
0x82, 0x51, 0x9c, 0x25, 0x4a, 0xf9, 0xcb, 0xb7, 0x05, 0x94, 0x29, 0xe4, 0x09, 0xf8, 0xb3, 0x44,
|
||||
0x4c, 0x85, 0xb3, 0x44, 0x0f, 0xdd, 0x5a, 0xf0, 0xeb, 0xc1, 0xa9, 0x7d, 0x62, 0x8f, 0x89, 0xc0,
|
||||
0x89, 0x3d, 0x81, 0xe2, 0x4a, 0x1a, 0xc0, 0xbb, 0x69, 0xd6, 0xb2, 0x12, 0xdc, 0x34, 0xa3, 0xe9,
|
||||
0xd6, 0x36, 0x8a, 0x66, 0xc6, 0x75, 0x37, 0xe9, 0x28, 0xfa, 0xd8, 0xee, 0x2e, 0x6b, 0xbd, 0x58,
|
||||
0xff, 0xbe, 0xcd, 0x09, 0x64, 0xb1, 0x98, 0x42, 0x02, 0x9b, 0x23, 0x0d, 0xd3, 0x67, 0xdf, 0xc6,
|
||||
0x62, 0x95, 0xc3, 0xbf, 0x1e, 0x44, 0x1f, 0xf9, 0x3c, 0xbe, 0x2a, 0x84, 0xdf, 0xcd, 0x6e, 0x5b,
|
||||
0x92, 0x24, 0xae, 0x24, 0x84, 0x35, 0x54, 0x19, 0xfe, 0x3c, 0xfa, 0xb0, 0x11, 0x99, 0x1b, 0x0b,
|
||||
0xaa, 0x00, 0x6e, 0xda, 0xa2, 0xcb, 0x8f, 0x39, 0xed, 0x7e, 0xa3, 0x37, 0x6f, 0x56, 0x04, 0x6e,
|
||||
0xb9, 0x2a, 0xb4, 0x22, 0xd0, 0x36, 0x94, 0x98, 0x58, 0x11, 0x78, 0x30, 0x3c, 0x53, 0x37, 0x48,
|
||||
0xdd, 0x4f, 0x7c, 0x63, 0x9c, 0x36, 0x61, 0xf7, 0x92, 0x47, 0xdd, 0x20, 0x8e, 0x9d, 0x46, 0xac,
|
||||
0x12, 0xf1, 0x27, 0x21, 0x0b, 0x28, 0x19, 0x5f, 0xeb, 0xc5, 0x2a, 0x87, 0x7f, 0x19, 0x7d, 0xaf,
|
||||
0x55, 0xb1, 0x5d, 0x88, 0xf9, 0xa2, 0x84, 0xe9, 0x70, 0xa3, 0xa3, 0xdc, 0x0d, 0xa8, 0x5d, 0x6f,
|
||||
0xf6, 0x57, 0x50, 0xfe, 0xff, 0x7e, 0x10, 0x7d, 0xdf, 0xe5, 0x64, 0x13, 0xeb, 0x32, 0x3c, 0x0b,
|
||||
0x99, 0x74, 0x59, 0x5d, 0x8c, 0xe7, 0xd7, 0xd2, 0x69, 0x2d, 0xfa, 0xec, 0x40, 0xde, 0x5a, 0xc6,
|
||||
0x69, 0x26, 0x0e, 0x12, 0x3e, 0x0e, 0x19, 0x75, 0xd0, 0xe0, 0xa2, 0x8f, 0x54, 0x69, 0x8d, 0x92,
|
||||
0xa2, 0xbf, 0x59, 0x8b, 0x85, 0xa7, 0x74, 0xaf, 0xf4, 0xac, 0x15, 0xd6, 0x7b, 0xd2, 0xca, 0x2d,
|
||||
0x6f, 0x36, 0xcb, 0xea, 0x9f, 0xed, 0x20, 0xf7, 0x79, 0x55, 0xaa, 0x9e, 0x48, 0x5f, 0xef, 0x49,
|
||||
0x2b, 0xaf, 0x7f, 0x11, 0x7d, 0xd8, 0xf6, 0xaa, 0x26, 0x85, 0x8d, 0x4e, 0x53, 0x68, 0x5e, 0xd8,
|
||||
0xec, 0xaf, 0x60, 0x52, 0xfd, 0x2f, 0xd3, 0x8a, 0xb3, 0x72, 0x35, 0xbe, 0x60, 0x57, 0xcd, 0xad,
|
||||
0x5c, 0xb7, 0xb7, 0x2a, 0x60, 0x64, 0x11, 0x44, 0xaa, 0xef, 0x27, 0x5b, 0xae, 0xcc, 0xed, 0xdd,
|
||||
0x8a, 0x70, 0x65, 0x11, 0x1d, 0xae, 0x5c, 0xd2, 0x8c, 0x55, 0x4d, 0xad, 0xcc, 0x55, 0xe3, 0x87,
|
||||
0xfe, 0xa2, 0xb6, 0xaf, 0x1b, 0x3f, 0xea, 0x06, 0x4d, 0xf6, 0xa0, 0xc4, 0x3b, 0xe9, 0xf9, 0xb9,
|
||||
0xae, 0x93, 0xbf, 0xa4, 0x36, 0x42, 0x64, 0x0f, 0x04, 0x6a, 0x92, 0xd1, 0xdd, 0x34, 0x03, 0x71,
|
||||
0x2a, 0xf5, 0xea, 0xfc, 0x3c, 0x63, 0xf1, 0x14, 0x25, 0xa3, 0xb5, 0x78, 0x64, 0xcb, 0x89, 0x64,
|
||||
0xd4, 0xc7, 0x99, 0x4b, 0x3d, 0xb5, 0xf4, 0x04, 0x12, 0x96, 0x27, 0x69, 0x86, 0x2f, 0x29, 0x09,
|
||||
0x4d, 0x2d, 0x24, 0x2e, 0xf5, 0xb4, 0x20, 0x33, 0x49, 0xd5, 0xa2, 0xba, 0xdb, 0x37, 0xe5, 0xbf,
|
||||
0xdf, 0x56, 0xb4, 0xc4, 0xc4, 0x24, 0xe5, 0xc1, 0xcc, 0x9a, 0xac, 0x16, 0x9e, 0x16, 0xc2, 0xf8,
|
||||
0xad, 0xb6, 0x96, 0x94, 0x10, 0x6b, 0x32, 0x97, 0x30, 0x6b, 0x8b, 0xfa, 0xf7, 0x1d, 0x76, 0x95,
|
||||
0x0b, 0xa3, 0x77, 0xda, 0x2a, 0x8d, 0x8c, 0x58, 0x5b, 0x60, 0x46, 0x19, 0xfe, 0x71, 0xf4, 0xab,
|
||||
0xc2, 0x70, 0xc9, 0x8a, 0xe1, 0x0d, 0x8f, 0x42, 0x69, 0xdd, 0x27, 0xba, 0x49, 0xca, 0xcd, 0xb5,
|
||||
0x38, 0x1d, 0x1b, 0xa7, 0x55, 0x3c, 0x83, 0xe1, 0x3d, 0xa2, 0xc5, 0x85, 0x94, 0xb8, 0x16, 0xd7,
|
||||
0xa6, 0xdc, 0xa8, 0x38, 0x62, 0x53, 0x65, 0xdd, 0x53, 0x43, 0x2d, 0x0c, 0x45, 0x85, 0x0d, 0x99,
|
||||
0x43, 0x8a, 0xa3, 0x78, 0x99, 0xce, 0xf4, 0x84, 0x23, 0xc7, 0xad, 0x0a, 0x1d, 0x52, 0x18, 0x66,
|
||||
0x64, 0x41, 0xc4, 0x21, 0x05, 0x09, 0x2b, 0x9f, 0xff, 0x36, 0x88, 0x6e, 0x19, 0x66, 0xaf, 0xd9,
|
||||
0x3b, 0xda, 0xcf, 0xcf, 0xd9, 0x9b, 0x94, 0x5f, 0x1c, 0xa4, 0xf9, 0x65, 0x35, 0xfc, 0x8c, 0x32,
|
||||
0xe9, 0xe7, 0x75, 0x51, 0x3e, 0xbf, 0xb6, 0x9e, 0xc9, 0x20, 0x9b, 0x2d, 0x1e, 0x73, 0x62, 0x28,
|
||||
0x35, 0x50, 0x06, 0xa9, 0x77, 0x82, 0x30, 0x47, 0x64, 0x90, 0x21, 0xde, 0x34, 0xb1, 0x76, 0x9e,
|
||||
0xb1, 0x1c, 0x37, 0xb1, 0xb1, 0x50, 0x0b, 0x89, 0x26, 0x6e, 0x41, 0x66, 0x3c, 0x6e, 0x44, 0x72,
|
||||
0x37, 0x62, 0x2b, 0xcb, 0xd0, 0x78, 0xac, 0x55, 0x35, 0x40, 0x8c, 0xc7, 0x5e, 0x50, 0xf9, 0x39,
|
||||
0x89, 0xbe, 0x53, 0x3f, 0xd2, 0xe3, 0x12, 0x96, 0x29, 0xe0, 0xc3, 0x6d, 0x4b, 0x42, 0xf4, 0x7f,
|
||||
0x97, 0x30, 0x3d, 0xeb, 0x34, 0xaf, 0x8a, 0x2c, 0xae, 0x2e, 0xd4, 0x71, 0xa7, 0x5b, 0xe7, 0x46,
|
||||
0x88, 0x0f, 0x3c, 0xef, 0x77, 0x50, 0x66, 0x50, 0x6f, 0x64, 0x7a, 0x88, 0x79, 0xe0, 0x57, 0x6d,
|
||||
0x0d, 0x33, 0x0f, 0x3b, 0x39, 0xb3, 0xff, 0xba, 0x17, 0x67, 0x19, 0x94, 0xab, 0x46, 0x76, 0x18,
|
||||
0xe7, 0xe9, 0x39, 0x54, 0x1c, 0xed, 0xbf, 0x2a, 0x6a, 0x84, 0x31, 0x62, 0xff, 0x35, 0x80, 0x9b,
|
||||
0x6c, 0x1e, 0x79, 0xde, 0xcf, 0xa7, 0xf0, 0x16, 0x65, 0xf3, 0xd8, 0x8e, 0x60, 0x88, 0x6c, 0x9e,
|
||||
0x62, 0xcd, 0x8e, 0xe8, 0x8b, 0x8c, 0x25, 0x97, 0x6a, 0x0a, 0x70, 0x1b, 0x58, 0x48, 0xf0, 0x1c,
|
||||
0x70, 0x27, 0x84, 0x98, 0x49, 0x40, 0x08, 0x4e, 0xa0, 0xc8, 0xe2, 0x04, 0xdf, 0x70, 0x90, 0x3a,
|
||||
0x4a, 0x46, 0x4c, 0x02, 0x98, 0x41, 0xc5, 0x55, 0x37, 0x27, 0x7c, 0xc5, 0x45, 0x17, 0x27, 0xee,
|
||||
0x84, 0x10, 0x33, 0x0d, 0x0a, 0xc1, 0xb8, 0xc8, 0x52, 0x8e, 0xba, 0x81, 0xd4, 0x10, 0x12, 0xa2,
|
||||
0x1b, 0xb8, 0x04, 0x32, 0x79, 0x08, 0xe5, 0x0c, 0xbc, 0x26, 0x85, 0x24, 0x68, 0xb2, 0x21, 0xcc,
|
||||
0x45, 0x38, 0x59, 0x77, 0x56, 0xac, 0xd0, 0x45, 0x38, 0x55, 0x2d, 0x56, 0xac, 0x88, 0x8b, 0x70,
|
||||
0x0e, 0x80, 0x8a, 0x78, 0x1c, 0x57, 0xdc, 0x5f, 0x44, 0x21, 0x09, 0x16, 0xb1, 0x21, 0xcc, 0x1c,
|
||||
0x2d, 0x8b, 0xb8, 0xe0, 0x68, 0x8e, 0x56, 0x05, 0xb0, 0xce, 0x43, 0x6f, 0x92, 0x72, 0x33, 0x92,
|
||||
0xc8, 0x56, 0x01, 0xbe, 0x9b, 0x42, 0x36, 0xad, 0xd0, 0x48, 0xa2, 0x9e, 0x7b, 0x23, 0x25, 0x46,
|
||||
0x92, 0x36, 0x85, 0x42, 0x49, 0xed, 0x1b, 0xfb, 0x6a, 0x87, 0xb6, 0x8c, 0xef, 0x84, 0x10, 0x33,
|
||||
0x3e, 0x35, 0x85, 0xde, 0x8e, 0xcb, 0x32, 0xad, 0x27, 0xff, 0x07, 0xfe, 0x02, 0x35, 0x72, 0x62,
|
||||
0x7c, 0xf2, 0x71, 0xa8, 0x7b, 0x35, 0x03, 0xb7, 0xaf, 0x60, 0x78, 0xe8, 0xbe, 0x1b, 0x64, 0x4c,
|
||||
0xc6, 0x29, 0x24, 0xd6, 0x81, 0x9e, 0xef, 0x69, 0x7a, 0xce, 0xf3, 0x1e, 0x74, 0x61, 0xd6, 0x45,
|
||||
0x75, 0xed, 0xe2, 0x90, 0x2d, 0x61, 0xc2, 0x5e, 0xbe, 0x4d, 0x2b, 0x9e, 0xe6, 0x33, 0x35, 0x73,
|
||||
0x3f, 0x27, 0x2c, 0xf9, 0x60, 0xe2, 0xa2, 0x7a, 0xa7, 0x92, 0x49, 0x20, 0x50, 0x59, 0x8e, 0xe0,
|
||||
0xca, 0x9b, 0x40, 0x60, 0x8b, 0x9a, 0x23, 0x12, 0x88, 0x10, 0x6f, 0xf6, 0x51, 0xb4, 0x73, 0xf5,
|
||||
0x36, 0xdf, 0x84, 0x35, 0xb9, 0x1c, 0x65, 0x0d, 0x83, 0xc4, 0x52, 0x36, 0xa8, 0x60, 0xd6, 0x97,
|
||||
0xda, 0xbf, 0xe9, 0x62, 0x8f, 0x08, 0x3b, 0xed, 0x6e, 0xf6, 0xb8, 0x07, 0xe9, 0x71, 0x65, 0x4e,
|
||||
0xa5, 0x29, 0x57, 0xed, 0x43, 0xe9, 0xc7, 0x3d, 0x48, 0x6b, 0x4f, 0xc6, 0xae, 0xd6, 0x8b, 0x38,
|
||||
0xb9, 0x9c, 0x95, 0x6c, 0x91, 0x4f, 0xb7, 0x59, 0xc6, 0x4a, 0xb4, 0x27, 0xe3, 0x94, 0x1a, 0xa1,
|
||||
0xc4, 0x9e, 0x4c, 0x87, 0x8a, 0xc9, 0xe0, 0xec, 0x52, 0x6c, 0x65, 0xe9, 0x0c, 0xaf, 0xa8, 0x1d,
|
||||
0x43, 0x02, 0x20, 0x32, 0x38, 0x2f, 0xe8, 0x09, 0x22, 0xb9, 0xe2, 0xe6, 0x69, 0x12, 0x67, 0xd2,
|
||||
0xdf, 0x06, 0x6d, 0xc6, 0x01, 0x3b, 0x83, 0xc8, 0xa3, 0xe0, 0xa9, 0xe7, 0x64, 0x51, 0xe6, 0xfb,
|
||||
0x39, 0x67, 0x64, 0x3d, 0x1b, 0xa0, 0xb3, 0x9e, 0x16, 0x88, 0x86, 0xd5, 0x09, 0xbc, 0xad, 0x4b,
|
||||
0x53, 0xff, 0xe3, 0x1b, 0x56, 0xeb, 0xdf, 0x47, 0x4a, 0x1e, 0x1a, 0x56, 0x11, 0x87, 0x2a, 0xa3,
|
||||
0x9c, 0xc8, 0x80, 0x09, 0x68, 0xbb, 0x61, 0xf2, 0xa8, 0x1b, 0xf4, 0xfb, 0x19, 0xf3, 0x55, 0x06,
|
||||
0x21, 0x3f, 0x02, 0xe8, 0xe3, 0xa7, 0x01, 0xcd, 0x76, 0x8b, 0x53, 0x9f, 0x0b, 0x48, 0x2e, 0x5b,
|
||||
0x97, 0x6c, 0xdc, 0x82, 0x4a, 0x84, 0xd8, 0x6e, 0x21, 0x50, 0x7f, 0x13, 0xed, 0x27, 0x2c, 0x0f,
|
||||
0x35, 0x51, 0x2d, 0xef, 0xd3, 0x44, 0x8a, 0x33, 0x8b, 0x5f, 0x2d, 0x55, 0x91, 0x29, 0x9b, 0x69,
|
||||
0x8d, 0xb0, 0x60, 0x43, 0xc4, 0xe2, 0x97, 0x84, 0x4d, 0x4e, 0x8e, 0x7d, 0x1e, 0xb6, 0x6f, 0xd5,
|
||||
0xb6, 0xac, 0x1c, 0xd2, 0xb7, 0x6a, 0x29, 0x96, 0xae, 0xa4, 0x8c, 0x91, 0x0e, 0x2b, 0x6e, 0x9c,
|
||||
0x3c, 0xed, 0x07, 0x9b, 0x25, 0x8f, 0xe3, 0x73, 0x3b, 0x83, 0xb8, 0x94, 0x5e, 0xd7, 0x03, 0x86,
|
||||
0x0c, 0x46, 0x2c, 0x79, 0x02, 0x38, 0x1a, 0xc2, 0x1c, 0xcf, 0xdb, 0x2c, 0xe7, 0x90, 0x73, 0xdf,
|
||||
0x10, 0xe6, 0x1a, 0x53, 0x60, 0x68, 0x08, 0xa3, 0x14, 0x50, 0xdc, 0x8a, 0xfd, 0x20, 0xe0, 0x47,
|
||||
0xf1, 0xdc, 0x9b, 0xb1, 0xc9, 0xbd, 0x1e, 0x29, 0x0f, 0xc5, 0x2d, 0xe2, 0xac, 0x03, 0x37, 0xdb,
|
||||
0xcb, 0x24, 0x2e, 0x67, 0x7a, 0x77, 0x63, 0x3a, 0xdc, 0xa4, 0xed, 0xb8, 0x24, 0x71, 0xe0, 0x16,
|
||||
0xd6, 0x40, 0xc3, 0xce, 0xfe, 0x3c, 0x9e, 0xe9, 0x9a, 0x7a, 0x6a, 0x20, 0xe4, 0xad, 0xaa, 0x3e,
|
||||
0xea, 0x06, 0x91, 0x9f, 0xd7, 0xe9, 0x14, 0x58, 0xc0, 0x8f, 0x90, 0xf7, 0xf1, 0x83, 0x41, 0x94,
|
||||
0xbd, 0xd5, 0xf5, 0x96, 0x2b, 0xba, 0xad, 0x7c, 0xaa, 0xd6, 0xb1, 0x23, 0xe2, 0xf1, 0x20, 0x2e,
|
||||
0x94, 0xbd, 0x11, 0x3c, 0xea, 0xa3, 0xcd, 0x06, 0x6d, 0xa8, 0x8f, 0xea, 0xfd, 0xd7, 0x3e, 0x7d,
|
||||
0xd4, 0x07, 0x2b, 0x9f, 0x3f, 0x55, 0x7d, 0x74, 0x27, 0xe6, 0x71, 0x9d, 0xb7, 0xbf, 0x4e, 0xe1,
|
||||
0x4a, 0x2d, 0x84, 0x3d, 0xf5, 0x6d, 0xa8, 0x91, 0x78, 0x9d, 0x0a, 0xad, 0x8a, 0x37, 0x7a, 0xf3,
|
||||
0x01, 0xdf, 0x6a, 0x85, 0xd0, 0xe9, 0x1b, 0x2d, 0x15, 0x36, 0x7a, 0xf3, 0x01, 0xdf, 0xea, 0x3d,
|
||||
0xcd, 0x4e, 0xdf, 0xe8, 0x65, 0xcd, 0x8d, 0xde, 0xbc, 0xf2, 0xfd, 0x37, 0x4d, 0xc7, 0xb5, 0x9d,
|
||||
0xd7, 0x79, 0x58, 0xc2, 0xd3, 0x25, 0xf8, 0xd2, 0x49, 0xd7, 0x9e, 0x46, 0x43, 0xe9, 0x24, 0xad,
|
||||
0x62, 0x7d, 0xdc, 0xc3, 0x57, 0x8a, 0x63, 0x56, 0xa5, 0xe2, 0xc0, 0xfc, 0x79, 0x0f, 0xa3, 0x0d,
|
||||
0x1c, 0x5a, 0x34, 0x85, 0x94, 0xcc, 0x71, 0xa3, 0x83, 0x9a, 0x3b, 0xb5, 0x4f, 0x03, 0xf6, 0xda,
|
||||
0x57, 0x6b, 0xd7, 0x7b, 0xd2, 0xe6, 0xe0, 0xcf, 0x61, 0xec, 0x13, 0xc7, 0x50, 0xab, 0x7a, 0x0f,
|
||||
0x1d, 0x37, 0xfb, 0x2b, 0x28, 0xf7, 0x7f, 0xd7, 0xac, 0x2b, 0xb0, 0x7f, 0xd5, 0x09, 0x9e, 0xf5,
|
||||
0xb1, 0x88, 0x3a, 0xc2, 0xf3, 0x6b, 0xe9, 0xa8, 0x82, 0xfc, 0xd7, 0x20, 0xba, 0xe3, 0x2d, 0x88,
|
||||
0x7b, 0xf6, 0xfc, 0xfb, 0x7d, 0x6c, 0xfb, 0xcf, 0xa0, 0xbf, 0xf8, 0x36, 0xaa, 0xaa, 0x74, 0xff,
|
||||
0xd4, 0x2c, 0xef, 0x1b, 0x0d, 0xf1, 0xde, 0xc3, 0xab, 0x72, 0x0a, 0xa5, 0xea, 0xb1, 0xa1, 0xa0,
|
||||
0x33, 0x30, 0xee, 0xb7, 0x9f, 0x5e, 0x53, 0xcb, 0xfa, 0x10, 0x8d, 0x03, 0xab, 0x77, 0xce, 0xac,
|
||||
0xf2, 0x84, 0x2c, 0x5b, 0x34, 0x2e, 0xd0, 0x67, 0xd7, 0x55, 0xa3, 0x7a, 0xb2, 0x05, 0x8b, 0xf7,
|
||||
0xda, 0x9f, 0xf7, 0x34, 0xec, 0xbc, 0xe9, 0xfe, 0xc9, 0xf5, 0x94, 0x54, 0x59, 0xfe, 0x67, 0x10,
|
||||
0xdd, 0x77, 0x58, 0x73, 0xda, 0x81, 0xf6, 0x64, 0x7e, 0x14, 0xb0, 0x4f, 0x29, 0xe9, 0xc2, 0xfd,
|
||||
0xc1, 0xb7, 0x53, 0x36, 0x5f, 0x6d, 0x71, 0x54, 0x76, 0xd3, 0x8c, 0x43, 0xd9, 0xfe, 0x6a, 0x8b,
|
||||
0x6b, 0x57, 0x52, 0x23, 0xfa, 0xab, 0x2d, 0x01, 0xdc, 0xfa, 0x6a, 0x8b, 0xc7, 0xb3, 0xf7, 0xab,
|
||||
0x2d, 0x5e, 0x6b, 0xc1, 0xaf, 0xb6, 0x84, 0x35, 0xa8, 0xc9, 0xa7, 0x29, 0x82, 0xdc, 0x55, 0xef,
|
||||
0x65, 0xd1, 0xdd, 0x64, 0x7f, 0x76, 0x1d, 0x15, 0x62, 0xfa, 0x95, 0x9c, 0xb8, 0x11, 0xd7, 0xe3,
|
||||
0x99, 0x3a, 0xb7, 0xe2, 0x36, 0x7a, 0xf3, 0xca, 0xf7, 0x4f, 0xd4, 0xda, 0x4b, 0x4f, 0x36, 0xac,
|
||||
0x14, 0x5f, 0xec, 0x59, 0x0b, 0x4d, 0x1e, 0xb5, 0x05, 0xbb, 0xe5, 0x9f, 0xf6, 0x83, 0x89, 0xea,
|
||||
0xd6, 0x84, 0x6a, 0xf4, 0x51, 0x97, 0x21, 0xd4, 0xe4, 0x1b, 0xbd, 0x79, 0x62, 0x92, 0x93, 0xbe,
|
||||
0x65, 0x6b, 0xf7, 0x30, 0xe6, 0xb6, 0xf5, 0x66, 0x7f, 0x05, 0xe5, 0x7e, 0xa9, 0x92, 0x5a, 0xdb,
|
||||
0xbd, 0x68, 0xe7, 0xf5, 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, 0x78, 0x7d,
|
||||
0x45, 0x6a, 0xba, 0xb7, 0xf1, 0x71, 0xfb, 0x73, 0x26, 0x01, 0xdb, 0x63, 0xfa, 0x73, 0x26, 0xdd,
|
||||
0x5a, 0x78, 0x0b, 0xaa, 0x4e, 0x4a, 0xd4, 0xca, 0xc8, 0xb7, 0x05, 0x25, 0x72, 0x16, 0xb4, 0x22,
|
||||
0x7a, 0xd8, 0xc9, 0xf9, 0x9c, 0xbc, 0x7c, 0x5b, 0xc4, 0xf9, 0x94, 0x76, 0x22, 0xe5, 0xdd, 0x4e,
|
||||
0x34, 0x87, 0xb7, 0xee, 0x6a, 0xe9, 0x09, 0x6b, 0x96, 0x79, 0x8f, 0x29, 0x7d, 0x8d, 0x04, 0xb7,
|
||||
0xee, 0x5a, 0x28, 0xe1, 0x4d, 0xe5, 0xb4, 0x21, 0x6f, 0x28, 0x95, 0x7d, 0xd2, 0x07, 0x45, 0x0b,
|
||||
0x08, 0xed, 0x4d, 0x9f, 0x08, 0x3c, 0x0d, 0x59, 0x69, 0x9d, 0x0a, 0xac, 0xf7, 0xa4, 0x09, 0xb7,
|
||||
0x63, 0xe0, 0x5f, 0x42, 0x3c, 0x85, 0x32, 0xe8, 0x56, 0x53, 0xbd, 0xdc, 0xda, 0xb4, 0xcf, 0xed,
|
||||
0x36, 0xcb, 0x16, 0xf3, 0x5c, 0x35, 0x26, 0xe9, 0xd6, 0xa6, 0xba, 0xdd, 0x22, 0x1a, 0x6f, 0x5a,
|
||||
0x1a, 0xb7, 0x22, 0xbd, 0x7c, 0x12, 0x36, 0xe3, 0x64, 0x95, 0x6b, 0xbd, 0x58, 0xba, 0x9e, 0x2a,
|
||||
0x8c, 0x3a, 0xea, 0x89, 0x22, 0x69, 0xbd, 0x27, 0x8d, 0x77, 0x0f, 0x2d, 0xb7, 0x3a, 0x9e, 0x36,
|
||||
0x3a, 0x6c, 0xb5, 0x42, 0x6a, 0xb3, 0xbf, 0x02, 0xde, 0xab, 0x55, 0x51, 0x55, 0xaf, 0x8b, 0x76,
|
||||
0xd3, 0x2c, 0x1b, 0xae, 0x05, 0xc2, 0xa4, 0x81, 0x82, 0x7b, 0xb5, 0x1e, 0x98, 0x88, 0xe4, 0x66,
|
||||
0x6f, 0x33, 0x1f, 0x76, 0xd9, 0x11, 0x54, 0xaf, 0x48, 0xb6, 0x69, 0xb4, 0xdf, 0x66, 0x3d, 0x6a,
|
||||
0x5d, 0xdb, 0x51, 0xf8, 0xc1, 0xb5, 0x2a, 0xbc, 0xd1, 0x9b, 0x47, 0x97, 0x01, 0x04, 0x25, 0x66,
|
||||
0x96, 0x7b, 0x94, 0x09, 0x67, 0x26, 0xb9, 0xdf, 0x41, 0xa1, 0x3d, 0x4b, 0xd9, 0x8d, 0xde, 0xa4,
|
||||
0xd3, 0x19, 0x70, 0xef, 0x39, 0x96, 0x0d, 0x04, 0xcf, 0xb1, 0x10, 0x88, 0x9a, 0x4e, 0xfe, 0xae,
|
||||
0x37, 0x6b, 0xf7, 0xa7, 0xbe, 0xa6, 0x53, 0xca, 0x16, 0x15, 0x6a, 0x3a, 0x2f, 0x8d, 0x46, 0x03,
|
||||
0xed, 0x56, 0xbd, 0xba, 0xfe, 0x24, 0x64, 0x06, 0xbd, 0xbf, 0xbe, 0xd6, 0x8b, 0x45, 0x33, 0x8a,
|
||||
0x71, 0x98, 0xce, 0x53, 0xee, 0x9b, 0x51, 0x2c, 0x1b, 0x35, 0x12, 0x9a, 0x51, 0xda, 0x28, 0x55,
|
||||
0xbd, 0x3a, 0x47, 0xd8, 0x9f, 0x86, 0xab, 0x27, 0x99, 0x7e, 0xd5, 0xd3, 0x6c, 0xeb, 0xd8, 0x35,
|
||||
0xd7, 0x21, 0xc3, 0x2f, 0xd4, 0x62, 0xd9, 0x13, 0xdb, 0xe2, 0xe5, 0x4a, 0x0c, 0x86, 0x46, 0x1d,
|
||||
0x4a, 0x01, 0x1f, 0x27, 0xd4, 0x5c, 0x73, 0x32, 0x5c, 0x14, 0x10, 0x97, 0x71, 0x9e, 0x78, 0x17,
|
||||
0xa7, 0xc2, 0x60, 0x8b, 0x0c, 0x2d, 0x4e, 0x49, 0x0d, 0x74, 0xa8, 0xef, 0xbe, 0x16, 0xe9, 0xe9,
|
||||
0x0a, 0xfa, 0xfd, 0x43, 0xf7, 0xad, 0xc8, 0xc7, 0x3d, 0x48, 0x7c, 0xa8, 0xdf, 0x00, 0x7a, 0x5b,
|
||||
0x5e, 0x3a, 0xfd, 0x38, 0x60, 0xca, 0x45, 0x43, 0x0b, 0x61, 0x5a, 0x05, 0x05, 0xb5, 0x4e, 0x70,
|
||||
0x81, 0xff, 0x18, 0x56, 0xbe, 0xa0, 0x36, 0xf9, 0xa9, 0x40, 0x42, 0x41, 0xdd, 0x46, 0x51, 0x9e,
|
||||
0x69, 0xaf, 0x83, 0x1e, 0x04, 0xf4, 0xed, 0xa5, 0xcf, 0xc3, 0x4e, 0x0e, 0xf5, 0x9c, 0x9d, 0x74,
|
||||
0xe9, 0x9c, 0x62, 0x78, 0x0a, 0xba, 0x93, 0x2e, 0xfd, 0x87, 0x18, 0x6b, 0xbd, 0x58, 0x7c, 0x61,
|
||||
0x20, 0xe6, 0xf0, 0xb6, 0x39, 0xc9, 0xf7, 0x14, 0x57, 0xc8, 0x5b, 0x47, 0xf9, 0x8f, 0xba, 0x41,
|
||||
0x73, 0x3d, 0xf7, 0xb8, 0x64, 0x09, 0x54, 0x95, 0xfa, 0xc6, 0x9b, 0x7b, 0xff, 0x49, 0xc9, 0x46,
|
||||
0xe8, 0x0b, 0x6f, 0xf7, 0xc2, 0x90, 0xb2, 0xfd, 0x65, 0xf4, 0xee, 0x01, 0x9b, 0x8d, 0x21, 0x9f,
|
||||
0x0e, 0x7f, 0xe0, 0x5e, 0x88, 0x65, 0xb3, 0x51, 0xfd, 0xb3, 0xb6, 0x77, 0x83, 0x12, 0x9b, 0x2b,
|
||||
0x7d, 0x3b, 0x70, 0xb6, 0x98, 0x8d, 0x79, 0xcc, 0xd1, 0x95, 0x3e, 0xf1, 0xfb, 0xa8, 0x16, 0x10,
|
||||
0x57, 0xfa, 0x1c, 0x00, 0xd9, 0x9b, 0x94, 0x00, 0x5e, 0x7b, 0xb5, 0x20, 0x68, 0x4f, 0x01, 0x66,
|
||||
0xd6, 0xd5, 0xf6, 0xea, 0xc4, 0x16, 0x5f, 0xc1, 0x33, 0x3a, 0x42, 0x4a, 0xcc, 0xba, 0x6d, 0xca,
|
||||
0x04, 0x83, 0xac, 0xbe, 0xf8, 0xa2, 0xc5, 0x62, 0x3e, 0x8f, 0xcb, 0x15, 0x0a, 0x06, 0x55, 0x4b,
|
||||
0x0b, 0x20, 0x82, 0xc1, 0x0b, 0x9a, 0x28, 0x6f, 0x1e, 0x73, 0x72, 0xb9, 0xc7, 0x4a, 0xb6, 0xe0,
|
||||
0x69, 0x0e, 0xf8, 0xab, 0x06, 0xfa, 0x81, 0xda, 0x0c, 0x11, 0xe5, 0x14, 0x6b, 0xb2, 0x42, 0x41,
|
||||
0xc8, 0xdb, 0x81, 0xe2, 0x4b, 0xa9, 0x15, 0x67, 0x25, 0x3e, 0x1d, 0x94, 0x56, 0x30, 0x44, 0x64,
|
||||
0x85, 0x24, 0x8c, 0xda, 0xfe, 0x38, 0xcd, 0x67, 0xde, 0xb6, 0x3f, 0xb6, 0xbf, 0x33, 0x78, 0x8b,
|
||||
0x06, 0xcc, 0xf8, 0x2e, 0x1f, 0x9a, 0xfc, 0x72, 0x90, 0x7a, 0x4b, 0xd2, 0xfb, 0xd0, 0x6d, 0x82,
|
||||
0x18, 0xdf, 0xfd, 0x24, 0x72, 0xf5, 0xaa, 0x80, 0x1c, 0xa6, 0xcd, 0x1d, 0x38, 0x9f, 0x2b, 0x87,
|
||||
0x08, 0xba, 0xc2, 0xa4, 0x19, 0x55, 0x85, 0xfc, 0x64, 0x91, 0x1f, 0x97, 0xec, 0x3c, 0xcd, 0xa0,
|
||||
0x44, 0xa3, 0xaa, 0x54, 0xb7, 0xe4, 0xc4, 0xa8, 0xea, 0xe3, 0xcc, 0x65, 0x0a, 0x21, 0x75, 0x3e,
|
||||
0xf7, 0x3b, 0x29, 0xe3, 0x04, 0x5f, 0xa6, 0x90, 0x36, 0xda, 0x18, 0xb1, 0x93, 0x16, 0xc0, 0x4d,
|
||||
0xa4, 0x1f, 0x02, 0x2f, 0xd3, 0xa4, 0x1a, 0x03, 0x3f, 0x8e, 0xcb, 0x78, 0x0e, 0x1c, 0x4a, 0x1c,
|
||||
0xe9, 0x0a, 0x19, 0x39, 0x0c, 0x11, 0xe9, 0x14, 0xab, 0x1c, 0xfe, 0x61, 0xf4, 0x7e, 0x3d, 0xd0,
|
||||
0x43, 0xae, 0xbe, 0x4c, 0xff, 0x52, 0xfc, 0x49, 0x8b, 0xe1, 0x07, 0xda, 0xc6, 0x98, 0x97, 0x10,
|
||||
0xcf, 0x1b, 0xdb, 0xef, 0xe9, 0xdf, 0x05, 0xb8, 0x39, 0xa8, 0x1b, 0xe4, 0x88, 0xf1, 0xf4, 0xbc,
|
||||
0x5e, 0x57, 0xa9, 0x53, 0x2c, 0xd4, 0x20, 0xb6, 0x78, 0x14, 0xf8, 0x64, 0x80, 0x8f, 0x33, 0x03,
|
||||
0x8d, 0x2d, 0x3d, 0x81, 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, 0x43, 0x98, 0x9f, 0x41, 0x59, 0x5d, 0xa4, 0xc5, 0x5e, 0x3d, 0xc3, 0xc6, 0x7c, 0x81, 0xdf,
|
||||
0xa2, 0x33, 0xc4, 0x48, 0x23, 0x44, 0x1a, 0x42, 0xa0, 0x66, 0x28, 0x33, 0xc0, 0x7e, 0x75, 0x14,
|
||||
0xcf, 0x41, 0x7c, 0x00, 0x61, 0xb8, 0x46, 0x19, 0xb1, 0x20, 0x62, 0x28, 0x23, 0x61, 0xeb, 0x75,
|
||||
0x23, 0xc3, 0x9c, 0xc0, 0xac, 0x8e, 0xb0, 0xf2, 0x38, 0x5e, 0xcd, 0x21, 0xe7, 0xca, 0x24, 0xda,
|
||||
0x84, 0xb5, 0x4c, 0xfa, 0x79, 0x62, 0x13, 0xb6, 0x8f, 0x9e, 0x95, 0x74, 0x3b, 0x0f, 0xfe, 0x98,
|
||||
0x95, 0x5c, 0xfe, 0xdd, 0x89, 0xd3, 0x32, 0x43, 0x49, 0xb7, 0xfb, 0x50, 0x1d, 0x92, 0x48, 0xba,
|
||||
0xc3, 0x1a, 0xd6, 0x07, 0x9b, 0x9d, 0x32, 0xbc, 0x86, 0x52, 0xc7, 0xc9, 0xcb, 0x79, 0x9c, 0x66,
|
||||
0x2a, 0x1a, 0xbe, 0x08, 0xd8, 0x26, 0x74, 0x88, 0x0f, 0x36, 0xf7, 0xd5, 0xb5, 0x3e, 0x71, 0x1d,
|
||||
0x2e, 0x21, 0xda, 0x13, 0xee, 0xb0, 0x4f, 0xec, 0x09, 0x77, 0x6b, 0x99, 0xa5, 0x9a, 0x61, 0x05,
|
||||
0xb7, 0x12, 0xc4, 0x36, 0x9b, 0xe2, 0x0d, 0x22, 0xcb, 0x26, 0x02, 0x89, 0xa5, 0x5a, 0x50, 0xc1,
|
||||
0xcc, 0x6d, 0x06, 0xdb, 0x4d, 0xf3, 0x38, 0x4b, 0x7f, 0x8a, 0xef, 0x3e, 0x5b, 0x76, 0x1a, 0x82,
|
||||
0x98, 0xdb, 0xfc, 0xa4, 0xcf, 0xd5, 0x1e, 0xf0, 0x49, 0x5a, 0x0f, 0xfd, 0x8f, 0x02, 0xcf, 0x4d,
|
||||
0x10, 0xdd, 0xae, 0x2c, 0x52, 0xb9, 0xfa, 0xd9, 0x20, 0xba, 0x89, 0x1f, 0xeb, 0x56, 0x51, 0x8c,
|
||||
0xeb, 0x94, 0xe4, 0x04, 0x12, 0x48, 0x0b, 0x3e, 0xfc, 0x34, 0xfc, 0xac, 0x10, 0x4e, 0x9c, 0xac,
|
||||
0xf7, 0x50, 0xb3, 0xce, 0x6b, 0xeb, 0xb1, 0x64, 0x2c, 0xff, 0x20, 0xd3, 0x69, 0x05, 0xa5, 0x9a,
|
||||
0x29, 0xf7, 0x80, 0xa3, 0xde, 0x69, 0x71, 0x23, 0x0b, 0xac, 0x2b, 0x4a, 0xf4, 0xce, 0xb0, 0x86,
|
||||
0xd9, 0xdd, 0xb1, 0xb8, 0x13, 0xa8, 0x58, 0xb6, 0x04, 0x71, 0xfd, 0xed, 0x29, 0x69, 0xcc, 0xa2,
|
||||
0x88, 0xdd, 0x1d, 0x9a, 0x36, 0xe9, 0x46, 0xdb, 0xed, 0x56, 0xbe, 0xda, 0xc7, 0x67, 0xe4, 0x1e,
|
||||
0x4b, 0x02, 0x23, 0xd2, 0x8d, 0x00, 0x6e, 0xed, 0x7e, 0x96, 0x2c, 0x9e, 0x26, 0x71, 0xc5, 0x8f,
|
||||
0xe3, 0x55, 0xc6, 0xe2, 0xa9, 0x98, 0xd7, 0xf1, 0xee, 0x67, 0xc3, 0x8c, 0x6c, 0x88, 0xda, 0xfd,
|
||||
0xa4, 0x60, 0xb3, 0xb2, 0x53, 0x7f, 0x67, 0x4a, 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, 0x2a, 0x81, 0xab, 0x4f, 0xd7,
|
||||
0x3e, 0xf5, 0xe9, 0xda, 0xd0, 0xc8, 0xfe, 0x0e, 0xd9, 0x7a, 0x4f, 0x5a, 0x7a, 0x7d, 0x71, 0xfb,
|
||||
0x7f, 0xbf, 0xbe, 0x31, 0xf8, 0xf9, 0xd7, 0x37, 0x06, 0xff, 0xff, 0xf5, 0x8d, 0xc1, 0xcf, 0xbe,
|
||||
0xb9, 0xf1, 0xce, 0xcf, 0xbf, 0xb9, 0xf1, 0xce, 0x2f, 0xbe, 0xb9, 0xf1, 0xce, 0x57, 0xef, 0xaa,
|
||||
0x3f, 0x58, 0x76, 0xf6, 0x2b, 0xe2, 0xcf, 0x8e, 0x3d, 0xff, 0x65, 0x00, 0x00, 0x00, 0xff, 0xff,
|
||||
0xf5, 0x3b, 0x43, 0x25, 0xd4, 0x6c, 0x00, 0x00,
|
||||
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, 0xd7, 0xf0,
|
||||
0x78, 0x12, 0x2f, 0xf0, 0x86, 0x76, 0xff, 0x91, 0x53, 0x65, 0x66, 0xe5, 0x47, 0x54, 0x46, 0x56,
|
||||
0x79, 0x9f, 0x66, 0xd4, 0xf1, 0x8b, 0x88, 0xcc, 0xca, 0xcc, 0xc8, 0xc8, 0x8f, 0x2a, 0x47, 0xd7,
|
||||
0xcb, 0x37, 0x1b, 0x65, 0xc5, 0x38, 0xab, 0x37, 0x6a, 0xa8, 0x96, 0x59, 0x0a, 0xed, 0xbf, 0x63,
|
||||
0xf1, 0x73, 0xfc, 0x6e, 0x52, 0xac, 0xf8, 0xaa, 0x84, 0x8f, 0x3e, 0x34, 0x64, 0xca, 0xe6, 0xf3,
|
||||
0xa4, 0x98, 0xd6, 0x12, 0xf9, 0xe8, 0x03, 0x23, 0x81, 0x25, 0x14, 0x5c, 0xfd, 0xfe, 0xf4, 0x7f,
|
||||
0xfe, 0x6f, 0x14, 0xbd, 0xb7, 0x95, 0x67, 0x50, 0xf0, 0x2d, 0xa5, 0x11, 0x7f, 0x15, 0x7d, 0x77,
|
||||
0xb3, 0x2c, 0x77, 0x81, 0xbf, 0x82, 0xaa, 0xce, 0x58, 0x11, 0xdf, 0x1e, 0x2b, 0x07, 0xe3, 0xe3,
|
||||
0x32, 0x1d, 0x6f, 0x96, 0xe5, 0xd8, 0x08, 0xc7, 0xc7, 0xf0, 0x93, 0x05, 0xd4, 0xfc, 0xa3, 0x3b,
|
||||
0x61, 0xa8, 0x2e, 0x59, 0x51, 0x43, 0x7c, 0x16, 0xfd, 0xc6, 0x66, 0x59, 0x4e, 0x80, 0x6f, 0x43,
|
||||
0x53, 0x81, 0x09, 0x4f, 0x38, 0xc4, 0xf7, 0x3b, 0xaa, 0x2e, 0xa0, 0x7d, 0x3c, 0xe8, 0x07, 0x95,
|
||||
0x9f, 0x93, 0xe8, 0x3b, 0x8d, 0x9f, 0xf3, 0x05, 0x9f, 0xb2, 0xcb, 0x22, 0xbe, 0xd9, 0x55, 0x54,
|
||||
0x22, 0x6d, 0xfb, 0x56, 0x08, 0x51, 0x56, 0x5f, 0x47, 0xbf, 0xfa, 0x3a, 0xc9, 0x73, 0xe0, 0x5b,
|
||||
0x15, 0x34, 0x05, 0x77, 0x75, 0xa4, 0x68, 0x2c, 0x65, 0xda, 0xee, 0xed, 0x20, 0xa3, 0x0c, 0x7f,
|
||||
0x15, 0x7d, 0x57, 0x4a, 0x8e, 0x21, 0x65, 0x4b, 0xa8, 0x62, 0xaf, 0x96, 0x12, 0x12, 0x8f, 0xbc,
|
||||
0x03, 0x61, 0xdb, 0x5b, 0xac, 0x58, 0x42, 0xc5, 0xfd, 0xb6, 0x95, 0x30, 0x6c, 0xdb, 0x40, 0xca,
|
||||
0xf6, 0xdf, 0x8d, 0xa2, 0xef, 0x6f, 0xa6, 0x29, 0x5b, 0x14, 0x7c, 0x9f, 0xa5, 0x49, 0xbe, 0x9f,
|
||||
0x15, 0x17, 0x87, 0x70, 0xb9, 0x75, 0xde, 0xf0, 0xc5, 0x0c, 0xe2, 0x67, 0xee, 0x53, 0x95, 0xe8,
|
||||
0x58, 0xb3, 0x63, 0x1b, 0xd6, 0xbe, 0x3f, 0xb9, 0x9a, 0x92, 0x2a, 0xcb, 0x3f, 0x8d, 0xa2, 0x6b,
|
||||
0xb8, 0x2c, 0x13, 0x96, 0x2f, 0xc1, 0x94, 0xe6, 0xd3, 0x1e, 0xc3, 0x2e, 0xae, 0xcb, 0xf3, 0xd9,
|
||||
0x55, 0xd5, 0x54, 0x89, 0xf2, 0xe8, 0x7d, 0xbb, 0xbb, 0x4c, 0xa0, 0x16, 0xc3, 0xe9, 0x21, 0xdd,
|
||||
0x23, 0x14, 0xa2, 0x3d, 0x3f, 0x1a, 0x82, 0x2a, 0x6f, 0x59, 0x14, 0x2b, 0x6f, 0x39, 0xab, 0xb5,
|
||||
0xb3, 0x07, 0x5e, 0x0b, 0x16, 0xa1, 0x7d, 0x3d, 0x1c, 0x40, 0x2a, 0x57, 0x7f, 0x1c, 0xfd, 0xda,
|
||||
0x6b, 0x56, 0x5d, 0xd4, 0x65, 0x92, 0x82, 0x1a, 0x0a, 0x77, 0x5d, 0xed, 0x56, 0x8a, 0x47, 0xc3,
|
||||
0xbd, 0x3e, 0xcc, 0xea, 0xb4, 0xad, 0xf0, 0x65, 0x09, 0x38, 0x06, 0x19, 0xc5, 0x46, 0x48, 0x75,
|
||||
0x5a, 0x0c, 0x29, 0xdb, 0x17, 0x51, 0x6c, 0x6c, 0xbf, 0xf9, 0x13, 0x48, 0xf9, 0xe6, 0x74, 0x8a,
|
||||
0x5b, 0xc5, 0xe8, 0x0a, 0x62, 0xbc, 0x39, 0x9d, 0x52, 0xad, 0xe2, 0x47, 0x95, 0xb3, 0xcb, 0xe8,
|
||||
0x03, 0xe4, 0x6c, 0x3f, 0xab, 0x85, 0xc3, 0xf5, 0xb0, 0x15, 0x85, 0x69, 0xa7, 0xe3, 0xa1, 0xb8,
|
||||
0x72, 0xfc, 0x17, 0xa3, 0xe8, 0x7b, 0x1e, 0xcf, 0xc7, 0x30, 0x67, 0x4b, 0x88, 0x9f, 0xf4, 0x5b,
|
||||
0x93, 0xa4, 0xf6, 0xff, 0xf1, 0x15, 0x34, 0x3c, 0xdd, 0x64, 0x02, 0x39, 0xa4, 0x9c, 0xec, 0x26,
|
||||
0x52, 0xdc, 0xdb, 0x4d, 0x34, 0x66, 0x8d, 0xb0, 0x56, 0xb8, 0x0b, 0x7c, 0x6b, 0x51, 0x55, 0x50,
|
||||
0x70, 0xb2, 0x2d, 0x0d, 0xd2, 0xdb, 0x96, 0x0e, 0xea, 0xa9, 0xcf, 0x2e, 0xf0, 0xcd, 0x3c, 0x27,
|
||||
0xeb, 0x23, 0xc5, 0xbd, 0xf5, 0xd1, 0x98, 0xf2, 0x90, 0x46, 0xbf, 0x6e, 0x3d, 0x31, 0xbe, 0x57,
|
||||
0x9c, 0xb1, 0x98, 0x7e, 0x16, 0x42, 0xae, 0x7d, 0xdc, 0xef, 0xe5, 0x3c, 0xd5, 0x78, 0xf1, 0xb6,
|
||||
0x64, 0x15, 0xdd, 0x2c, 0x52, 0xdc, 0x5b, 0x0d, 0x8d, 0x29, 0x0f, 0x7f, 0x14, 0xbd, 0xa7, 0xa2,
|
||||
0x64, 0x3b, 0x9f, 0xdd, 0xf1, 0x86, 0x50, 0x3c, 0xa1, 0xdd, 0xed, 0xa1, 0x4c, 0x70, 0x50, 0x32,
|
||||
0x15, 0x7c, 0x6e, 0x7b, 0xf5, 0x50, 0xe8, 0xb9, 0x13, 0x86, 0x3a, 0xb6, 0xb7, 0x21, 0x07, 0xd2,
|
||||
0xb6, 0x14, 0xf6, 0xd8, 0xd6, 0x90, 0xb2, 0x5d, 0x45, 0xbf, 0xa5, 0x1f, 0x4b, 0x33, 0x8f, 0x0a,
|
||||
0x79, 0x13, 0xa4, 0xd7, 0x88, 0x7a, 0xdb, 0x90, 0xf6, 0xf5, 0x78, 0x18, 0xdc, 0xa9, 0x8f, 0x1a,
|
||||
0x81, 0xfe, 0xfa, 0xa0, 0xf1, 0x77, 0x27, 0x0c, 0x29, 0xdb, 0x7f, 0x3f, 0x8a, 0x7e, 0xa0, 0x64,
|
||||
0x2f, 0x8a, 0xe4, 0x4d, 0x0e, 0x62, 0x4a, 0x3c, 0x04, 0x7e, 0xc9, 0xaa, 0x8b, 0xc9, 0xaa, 0x48,
|
||||
0x89, 0xe9, 0xdf, 0x0f, 0xf7, 0x4c, 0xff, 0xa4, 0x92, 0x95, 0xf1, 0xa9, 0x8a, 0x72, 0x56, 0xe2,
|
||||
0x8c, 0xaf, 0xad, 0x01, 0x67, 0x25, 0x95, 0xf1, 0xb9, 0x48, 0xc7, 0xea, 0x41, 0x13, 0x36, 0xfd,
|
||||
0x56, 0x0f, 0xec, 0x38, 0x79, 0x2b, 0x84, 0x98, 0xb0, 0xd5, 0x76, 0x60, 0x56, 0x9c, 0x65, 0xb3,
|
||||
0xd3, 0x72, 0xda, 0x74, 0xe3, 0x87, 0xfe, 0x1e, 0x6a, 0x21, 0x44, 0xd8, 0x22, 0x50, 0xe5, 0xed,
|
||||
0x1f, 0x4d, 0x62, 0xa4, 0x86, 0xd2, 0x4e, 0xc5, 0xe6, 0xfb, 0x30, 0x4b, 0xd2, 0x95, 0x1a, 0xff,
|
||||
0x9f, 0x84, 0x06, 0x1e, 0xa6, 0x75, 0x21, 0x3e, 0xbd, 0xa2, 0x96, 0x2a, 0xcf, 0x7f, 0x8e, 0xa2,
|
||||
0x3b, 0x6d, 0xf5, 0xcf, 0x93, 0x62, 0x06, 0xaa, 0x3d, 0x65, 0xe9, 0x37, 0x8b, 0xe9, 0x31, 0xd4,
|
||||
0x3c, 0xa9, 0x78, 0xfc, 0x85, 0xbf, 0x92, 0x21, 0x1d, 0x5d, 0xb6, 0x1f, 0x7d, 0x2b, 0x5d, 0xd3,
|
||||
0xea, 0x93, 0x26, 0xb0, 0xa9, 0x10, 0xe0, 0xb6, 0xba, 0x90, 0xe0, 0x00, 0x70, 0x2b, 0x84, 0x98,
|
||||
0x56, 0x17, 0x82, 0xbd, 0x62, 0x99, 0x71, 0xd8, 0x85, 0x02, 0xaa, 0x6e, 0xab, 0x4b, 0x55, 0x17,
|
||||
0x21, 0x5a, 0x9d, 0x40, 0x4d, 0xb0, 0x71, 0xbc, 0xe9, 0xc9, 0x71, 0x2d, 0x60, 0xa4, 0x33, 0x3d,
|
||||
0x3e, 0x1e, 0x06, 0x9b, 0xd5, 0x9d, 0xe5, 0xf3, 0x18, 0x96, 0xec, 0x02, 0xaf, 0xee, 0x6c, 0x13,
|
||||
0x12, 0x20, 0x56, 0x77, 0x5e, 0xd0, 0xcc, 0x60, 0x96, 0x9f, 0x57, 0x19, 0x5c, 0xa2, 0x19, 0xcc,
|
||||
0x56, 0x6e, 0xc4, 0xc4, 0x0c, 0xe6, 0xc1, 0x94, 0x87, 0xc3, 0xe8, 0x57, 0x84, 0xf0, 0x0f, 0x58,
|
||||
0x56, 0xc4, 0xd7, 0x3d, 0x4a, 0x8d, 0x40, 0x5b, 0xbd, 0x41, 0x03, 0xa8, 0xc4, 0xcd, 0xaf, 0x5b,
|
||||
0x49, 0x91, 0x42, 0xee, 0x2d, 0xb1, 0x11, 0x07, 0x4b, 0xec, 0x60, 0x26, 0x75, 0x10, 0xc2, 0x26,
|
||||
0x7e, 0x4d, 0xce, 0x93, 0x2a, 0x2b, 0x66, 0xb1, 0x4f, 0xd7, 0x92, 0x13, 0xa9, 0x83, 0x8f, 0x43,
|
||||
0x5d, 0x58, 0x29, 0x6e, 0x96, 0x65, 0xd5, 0x84, 0x45, 0x5f, 0x17, 0x76, 0x91, 0x60, 0x17, 0xee,
|
||||
0xa0, 0x7e, 0x6f, 0xdb, 0x90, 0xe6, 0x59, 0x11, 0xf4, 0xa6, 0x90, 0x21, 0xde, 0x0c, 0x8a, 0x3a,
|
||||
0xef, 0x3e, 0x24, 0x4b, 0x68, 0x6b, 0xe6, 0x7b, 0x32, 0x36, 0x10, 0xec, 0xbc, 0x08, 0x34, 0xeb,
|
||||
0x34, 0x21, 0x3e, 0x48, 0x2e, 0xa0, 0x79, 0xc0, 0xd0, 0xcc, 0x6b, 0xb1, 0x4f, 0xdf, 0x21, 0x88,
|
||||
0x75, 0x9a, 0x9f, 0x54, 0xae, 0x16, 0xd1, 0x07, 0x42, 0x7e, 0x94, 0x54, 0x3c, 0x4b, 0xb3, 0x32,
|
||||
0x29, 0xda, 0xfc, 0xdf, 0x37, 0xae, 0x3b, 0x94, 0x76, 0xb9, 0x3e, 0x90, 0x56, 0x6e, 0xff, 0x7d,
|
||||
0x14, 0xdd, 0xc4, 0x7e, 0x8f, 0xa0, 0x9a, 0x67, 0x62, 0x19, 0x59, 0xcb, 0x20, 0x1c, 0x7f, 0x1e,
|
||||
0x36, 0xda, 0x51, 0xd0, 0xa5, 0xf9, 0xe1, 0xd5, 0x15, 0x55, 0xc1, 0xfe, 0x30, 0x8a, 0xe4, 0x72,
|
||||
0x45, 0x2c, 0x29, 0xdd, 0x51, 0xab, 0xd6, 0x31, 0xce, 0x7a, 0xf2, 0x66, 0x80, 0x30, 0x53, 0x85,
|
||||
0xfc, 0x5d, 0xac, 0x94, 0x63, 0xaf, 0x86, 0x10, 0x11, 0x53, 0x05, 0x42, 0x70, 0x41, 0x27, 0xe7,
|
||||
0xec, 0xd2, 0x5f, 0xd0, 0x46, 0x12, 0x2e, 0xa8, 0x22, 0xcc, 0xde, 0x95, 0x2a, 0xa8, 0x6f, 0xef,
|
||||
0xaa, 0x2d, 0x46, 0x68, 0xef, 0x0a, 0x33, 0xca, 0x30, 0x8b, 0x7e, 0xd3, 0x36, 0xfc, 0x9c, 0xb1,
|
||||
0x8b, 0x79, 0x52, 0x5d, 0xc4, 0x8f, 0x68, 0xe5, 0x96, 0xd1, 0x8e, 0xd6, 0x06, 0xb1, 0x26, 0x2c,
|
||||
0xd8, 0x0e, 0x9b, 0x44, 0xe3, 0xb4, 0xca, 0x51, 0x58, 0x70, 0x6c, 0x28, 0x84, 0x08, 0x0b, 0x04,
|
||||
0x6a, 0x22, 0xb7, 0xed, 0x6d, 0x02, 0x78, 0xb5, 0xe4, 0xa8, 0x4f, 0x80, 0x5a, 0x2d, 0x79, 0x30,
|
||||
0xdc, 0x85, 0x76, 0xab, 0xa4, 0x3c, 0xf7, 0x77, 0x21, 0x21, 0x0a, 0x77, 0xa1, 0x16, 0xc1, 0xed,
|
||||
0x3d, 0x81, 0xa4, 0x4a, 0xcf, 0xfd, 0xed, 0x2d, 0x65, 0xe1, 0xf6, 0xd6, 0x0c, 0x6e, 0x6f, 0x29,
|
||||
0x78, 0x9d, 0xf1, 0xf3, 0x03, 0xe0, 0x89, 0xbf, 0xbd, 0x5d, 0x26, 0xdc, 0xde, 0x1d, 0xd6, 0x64,
|
||||
0x32, 0xb6, 0xc3, 0xc9, 0xe2, 0x4d, 0x9d, 0x56, 0xd9, 0x1b, 0x88, 0x03, 0x56, 0x34, 0x44, 0x64,
|
||||
0x32, 0x24, 0x6c, 0x82, 0xb4, 0xf2, 0xd9, 0xca, 0xf6, 0xa6, 0x35, 0x0a, 0xd2, 0xad, 0x0d, 0x8b,
|
||||
0x20, 0x82, 0xb4, 0x9f, 0xc4, 0xd5, 0xdb, 0xad, 0xd8, 0xa2, 0xac, 0x7b, 0xaa, 0x87, 0xa0, 0x70,
|
||||
0xf5, 0xba, 0xb0, 0xf2, 0xf9, 0x36, 0xfa, 0x6d, 0xfb, 0x91, 0x9e, 0x16, 0xb5, 0xf6, 0xba, 0x4e,
|
||||
0x3f, 0x27, 0x0b, 0x23, 0xb6, 0xa5, 0x02, 0xb8, 0x49, 0x53, 0x5a, 0xcf, 0x7c, 0x1b, 0x78, 0x92,
|
||||
0xe5, 0x75, 0x7c, 0xcf, 0x6f, 0xa3, 0x95, 0x13, 0x69, 0x8a, 0x8f, 0xc3, 0x63, 0x76, 0x7b, 0x51,
|
||||
0xe6, 0x59, 0xda, 0xdd, 0x9f, 0x54, 0xba, 0x5a, 0x1c, 0x1e, 0xb3, 0x36, 0x86, 0x63, 0xd0, 0x04,
|
||||
0xb8, 0xfc, 0xcf, 0xc9, 0xaa, 0x04, 0x7f, 0x0c, 0x72, 0x90, 0x70, 0x0c, 0xc2, 0x28, 0xae, 0xcf,
|
||||
0x04, 0xf8, 0x7e, 0xb2, 0x62, 0x0b, 0x22, 0x06, 0x69, 0x71, 0xb8, 0x3e, 0x36, 0x66, 0x32, 0x05,
|
||||
0xed, 0x61, 0xaf, 0xe0, 0x50, 0x15, 0x49, 0xbe, 0x93, 0x27, 0xb3, 0x3a, 0x26, 0xc6, 0x8d, 0x4b,
|
||||
0x11, 0x99, 0x02, 0x4d, 0x7b, 0x1e, 0xe3, 0x5e, 0xbd, 0x93, 0x2c, 0x59, 0x95, 0x71, 0xfa, 0x31,
|
||||
0x1a, 0xa4, 0xf7, 0x31, 0x3a, 0xa8, 0xd7, 0xdb, 0x66, 0x95, 0x9e, 0x67, 0x4b, 0x98, 0x06, 0xbc,
|
||||
0xb5, 0xc8, 0x00, 0x6f, 0x16, 0xea, 0x69, 0xb4, 0x09, 0x5b, 0x54, 0x29, 0x90, 0x8d, 0x26, 0xc5,
|
||||
0xbd, 0x8d, 0xa6, 0x31, 0xe5, 0xe1, 0xaf, 0x47, 0xd1, 0xef, 0x48, 0xa9, 0xbd, 0x69, 0xb8, 0x9d,
|
||||
0xd4, 0xe7, 0x6f, 0x58, 0x52, 0x4d, 0xe3, 0x8f, 0x7d, 0x76, 0xbc, 0xa8, 0x76, 0xfd, 0xf4, 0x2a,
|
||||
0x2a, 0xf8, 0xb1, 0xee, 0x67, 0xb5, 0x35, 0xe2, 0xbc, 0x8f, 0xd5, 0x41, 0xc2, 0x8f, 0x15, 0xa3,
|
||||
0x38, 0x80, 0x08, 0xb9, 0x5c, 0xa0, 0xdf, 0x23, 0xf5, 0xdd, 0x55, 0xfa, 0xfd, 0x5e, 0x0e, 0xc7,
|
||||
0xc7, 0x46, 0xe8, 0xf6, 0x96, 0x75, 0xca, 0x86, 0xbf, 0xc7, 0x8c, 0x87, 0xe2, 0xa4, 0x67, 0x3d,
|
||||
0x2a, 0xc2, 0x9e, 0x3b, 0x23, 0x63, 0x3c, 0x14, 0x27, 0x3c, 0x5b, 0x61, 0x2d, 0xe4, 0xd9, 0x13,
|
||||
0xda, 0xc6, 0x43, 0x71, 0x9c, 0x51, 0x28, 0xa6, 0x9d, 0x17, 0x1e, 0x05, 0xec, 0xe0, 0xb9, 0x61,
|
||||
0x6d, 0x10, 0xab, 0x1c, 0xfe, 0xed, 0x28, 0xfa, 0xbe, 0xf1, 0x78, 0xc0, 0xa6, 0xd9, 0xd9, 0x4a,
|
||||
0x42, 0xaf, 0x92, 0x7c, 0x01, 0x75, 0xfc, 0x94, 0xb2, 0xd6, 0x65, 0x75, 0x09, 0x9e, 0x5d, 0x49,
|
||||
0x07, 0x8f, 0x9d, 0xcd, 0xb2, 0xcc, 0x57, 0x27, 0x30, 0x2f, 0x73, 0x72, 0xec, 0x38, 0x48, 0x78,
|
||||
0xec, 0x60, 0x14, 0x67, 0x9a, 0x27, 0xac, 0xc9, 0x63, 0xbd, 0x99, 0xa6, 0x10, 0x85, 0x33, 0xcd,
|
||||
0x16, 0xc1, 0xb9, 0xd2, 0x09, 0xdb, 0x62, 0x79, 0x0e, 0x29, 0xef, 0x1e, 0x3c, 0x6a, 0x4d, 0x43,
|
||||
0x84, 0x73, 0x25, 0x44, 0x9a, 0x35, 0x7a, 0xbb, 0x2e, 0x4a, 0x2a, 0x78, 0xbe, 0xda, 0xcf, 0x8a,
|
||||
0x8b, 0xd8, 0x9f, 0x16, 0x18, 0x80, 0x58, 0xa3, 0x7b, 0x41, 0xbc, 0xfe, 0x3a, 0x2d, 0xa6, 0xcc,
|
||||
0xbf, 0xfe, 0x6a, 0x24, 0xe1, 0xf5, 0x97, 0x22, 0xb0, 0xc9, 0x63, 0xa0, 0x4c, 0x36, 0x92, 0xb0,
|
||||
0x49, 0x45, 0xf8, 0x42, 0xa1, 0xda, 0xc9, 0x25, 0x43, 0x21, 0xda, 0xbb, 0xbd, 0xdf, 0xcb, 0xe1,
|
||||
0x1e, 0xda, 0x2e, 0xc4, 0x76, 0x80, 0xa7, 0xe7, 0xfe, 0x1e, 0xea, 0x20, 0xe1, 0x1e, 0x8a, 0x51,
|
||||
0x5c, 0xa5, 0x13, 0xa6, 0x17, 0x92, 0xf7, 0xfc, 0xfd, 0xa3, 0xb3, 0x88, 0xbc, 0xdf, 0xcb, 0xe1,
|
||||
0xa5, 0xd1, 0xde, 0x5c, 0x3c, 0x33, 0x6f, 0x27, 0x97, 0xb2, 0xf0, 0xd2, 0x48, 0x33, 0xb8, 0xf4,
|
||||
0x52, 0xd0, 0x3c, 0x4e, 0x7f, 0xe9, 0x8d, 0x3c, 0x5c, 0x7a, 0x87, 0x53, 0x4e, 0xfe, 0x75, 0x14,
|
||||
0x5d, 0xb7, 0xbd, 0x1c, 0xb2, 0x66, 0x8c, 0xbc, 0x4a, 0xf2, 0x6c, 0x9a, 0x70, 0x38, 0x61, 0x17,
|
||||
0x50, 0xa0, 0xbd, 0x15, 0xb7, 0xb4, 0x92, 0x1f, 0x3b, 0x0a, 0xc4, 0xde, 0xca, 0x20, 0x45, 0xdc,
|
||||
0x4f, 0x24, 0x7d, 0x5a, 0xc3, 0x56, 0x52, 0x13, 0x91, 0xcc, 0x41, 0xc2, 0xfd, 0x04, 0xa3, 0x38,
|
||||
0x5f, 0x95, 0xf2, 0x17, 0x6f, 0x4b, 0xa8, 0x32, 0x28, 0x52, 0xf0, 0xe7, 0xab, 0x98, 0x0a, 0xe7,
|
||||
0xab, 0x1e, 0xba, 0xb3, 0xf5, 0xa0, 0x83, 0x53, 0xf7, 0xee, 0x00, 0x26, 0x02, 0x77, 0x07, 0x08,
|
||||
0x14, 0x57, 0xd2, 0x00, 0xde, 0xed, 0xbb, 0x8e, 0x95, 0xe0, 0xf6, 0x1d, 0x4d, 0x77, 0x36, 0x74,
|
||||
0x34, 0x33, 0x69, 0x86, 0x49, 0x4f, 0xd1, 0x27, 0xf6, 0x70, 0x59, 0x1b, 0xc4, 0xfa, 0x77, 0x90,
|
||||
0x8e, 0x21, 0x4f, 0xc4, 0x14, 0x12, 0xd8, 0xa6, 0x69, 0x99, 0x21, 0x3b, 0x48, 0x16, 0xab, 0x1c,
|
||||
0xfe, 0xe5, 0x28, 0xfa, 0xc8, 0xe7, 0xf1, 0x65, 0x29, 0xfc, 0x3e, 0xe9, 0xb7, 0x25, 0x49, 0xe2,
|
||||
0x72, 0x44, 0x58, 0x43, 0x95, 0xe1, 0x4f, 0xa3, 0x0f, 0x5b, 0x91, 0xb9, 0x3b, 0xa1, 0x0a, 0xe0,
|
||||
0x26, 0x50, 0xba, 0xfc, 0x98, 0xd3, 0xee, 0x37, 0x06, 0xf3, 0x66, 0x6d, 0xe2, 0x96, 0xab, 0x46,
|
||||
0x6b, 0x13, 0x6d, 0x43, 0x89, 0x89, 0xb5, 0x89, 0x07, 0xc3, 0x33, 0x75, 0x8b, 0x34, 0xe3, 0xc4,
|
||||
0x17, 0xe3, 0xb4, 0x09, 0x7b, 0x94, 0x3c, 0xe8, 0x07, 0x71, 0xdf, 0x69, 0xc5, 0x6a, 0x49, 0xf0,
|
||||
0x28, 0x64, 0x01, 0x2d, 0x0b, 0xd6, 0x06, 0xb1, 0xca, 0xe1, 0x9f, 0x47, 0xdf, 0xeb, 0x54, 0x6c,
|
||||
0x07, 0x12, 0xbe, 0xa8, 0x60, 0x1a, 0x6f, 0xf4, 0x94, 0xbb, 0x05, 0xb5, 0xeb, 0x27, 0xc3, 0x15,
|
||||
0x3a, 0xb9, 0x6b, 0xcb, 0xc9, 0x26, 0xd6, 0x65, 0x78, 0x1a, 0x32, 0xe9, 0xb2, 0xc1, 0xdc, 0x95,
|
||||
0xd6, 0xe9, 0x2c, 0x3f, 0xed, 0x8e, 0xbc, 0xb9, 0x4c, 0xb2, 0x5c, 0x1c, 0x69, 0x7c, 0x1c, 0x32,
|
||||
0xea, 0xa0, 0xc1, 0xe5, 0x27, 0xa9, 0xd2, 0x89, 0x92, 0x62, 0xbc, 0x59, 0xcb, 0x96, 0xc7, 0xf4,
|
||||
0xa8, 0xf4, 0xac, 0x5a, 0xd6, 0x07, 0xd2, 0xca, 0x2d, 0x6f, 0xb7, 0xed, 0x9a, 0x9f, 0xed, 0x4e,
|
||||
0xee, 0xf3, 0xaa, 0x54, 0x3d, 0x3d, 0x7d, 0x7d, 0x20, 0xad, 0xbc, 0xfe, 0x59, 0xf4, 0x61, 0xd7,
|
||||
0xab, 0x9a, 0x14, 0x36, 0x7a, 0x4d, 0xa1, 0x79, 0xe1, 0xc9, 0x70, 0x05, 0x93, 0xea, 0x7f, 0x99,
|
||||
0xd5, 0x9c, 0x55, 0xab, 0xc9, 0x39, 0xbb, 0x6c, 0xef, 0x07, 0xbb, 0xa3, 0x55, 0x01, 0x63, 0x8b,
|
||||
0x20, 0x52, 0x7d, 0x3f, 0xd9, 0x71, 0x65, 0xee, 0x11, 0xd7, 0x84, 0x2b, 0x8b, 0xe8, 0x71, 0xe5,
|
||||
0x92, 0x26, 0x56, 0xb5, 0xb5, 0x32, 0x97, 0x9e, 0xef, 0xfb, 0x8b, 0xda, 0xbd, 0xf8, 0xfc, 0xa0,
|
||||
0x1f, 0x34, 0xd9, 0x83, 0x12, 0x6f, 0x67, 0x67, 0x67, 0xba, 0x4e, 0xfe, 0x92, 0xda, 0x08, 0x91,
|
||||
0x3d, 0x10, 0xa8, 0x49, 0x46, 0x77, 0xb2, 0x1c, 0xc4, 0xf9, 0xd8, 0xcb, 0xb3, 0xb3, 0x9c, 0x25,
|
||||
0x53, 0x94, 0x8c, 0x36, 0xe2, 0xb1, 0x2d, 0x27, 0x92, 0x51, 0x1f, 0x67, 0xae, 0x17, 0x35, 0xd2,
|
||||
0x63, 0x48, 0x59, 0x91, 0x66, 0x39, 0xbe, 0x2e, 0x25, 0x34, 0xb5, 0x90, 0xb8, 0x5e, 0xd4, 0x81,
|
||||
0xcc, 0x24, 0xd5, 0x88, 0x9a, 0x61, 0xdf, 0x96, 0xff, 0x6e, 0x57, 0xd1, 0x12, 0x13, 0x93, 0x94,
|
||||
0x07, 0x33, 0x6b, 0xb2, 0x46, 0x78, 0x5a, 0x0a, 0xe3, 0x37, 0xba, 0x5a, 0x52, 0x42, 0xac, 0xc9,
|
||||
0x5c, 0xc2, 0xac, 0x2d, 0x9a, 0xdf, 0xb7, 0xd9, 0x65, 0x21, 0x8c, 0xde, 0xea, 0xaa, 0xb4, 0x32,
|
||||
0x62, 0x6d, 0x81, 0x19, 0x65, 0xf8, 0xc7, 0xd1, 0x2f, 0x0b, 0xc3, 0x15, 0x2b, 0xe3, 0x6b, 0x1e,
|
||||
0x85, 0xca, 0xba, 0xd9, 0x74, 0x9d, 0x94, 0x9b, 0x0b, 0x7a, 0xba, 0x6f, 0x9c, 0xd6, 0xc9, 0x0c,
|
||||
0xe2, 0x3b, 0x44, 0x8b, 0x0b, 0x29, 0x71, 0x41, 0xaf, 0x4b, 0xb9, 0xbd, 0xe2, 0x90, 0x4d, 0x95,
|
||||
0x75, 0x4f, 0x0d, 0xb5, 0x30, 0xd4, 0x2b, 0x6c, 0xc8, 0x1c, 0x97, 0x1c, 0x26, 0xcb, 0x6c, 0xa6,
|
||||
0x27, 0x1c, 0x19, 0xb7, 0x6a, 0x74, 0x5c, 0x62, 0x98, 0xb1, 0x05, 0x11, 0xc7, 0x25, 0x24, 0xac,
|
||||
0x7c, 0xfe, 0xcb, 0x28, 0xba, 0x61, 0x98, 0xdd, 0x76, 0x17, 0x6b, 0xaf, 0x38, 0x63, 0xaf, 0x33,
|
||||
0x7e, 0xbe, 0x9f, 0x15, 0x17, 0x75, 0xfc, 0x19, 0x65, 0xd2, 0xcf, 0xeb, 0xa2, 0x7c, 0x7e, 0x65,
|
||||
0x3d, 0x93, 0x41, 0xb6, 0x5b, 0x3c, 0xe6, 0xec, 0x52, 0x6a, 0xa0, 0x0c, 0x52, 0xef, 0x04, 0x61,
|
||||
0x8e, 0xc8, 0x20, 0x43, 0xbc, 0x69, 0x62, 0xed, 0x3c, 0x67, 0x05, 0x6e, 0x62, 0x63, 0xa1, 0x11,
|
||||
0x12, 0x4d, 0xdc, 0x81, 0x4c, 0x3c, 0x6e, 0x45, 0x72, 0x37, 0x62, 0x33, 0xcf, 0x51, 0x3c, 0xd6,
|
||||
0xaa, 0x1a, 0x20, 0xe2, 0xb1, 0x17, 0x54, 0x7e, 0x8e, 0xa3, 0xef, 0x34, 0x8f, 0xf4, 0xa8, 0x82,
|
||||
0x65, 0x06, 0xf8, 0x98, 0xdd, 0x92, 0x10, 0xe3, 0xdf, 0x25, 0xcc, 0xc8, 0x3a, 0x2d, 0xea, 0x32,
|
||||
0x4f, 0xea, 0x73, 0x75, 0xf0, 0xea, 0xd6, 0xb9, 0x15, 0xe2, 0xa3, 0xd7, 0xbb, 0x3d, 0x94, 0x09,
|
||||
0xea, 0xad, 0x4c, 0x87, 0x98, 0x7b, 0x7e, 0xd5, 0x4e, 0x98, 0xb9, 0xdf, 0xcb, 0x99, 0x9d, 0xe0,
|
||||
0xdd, 0x24, 0xcf, 0xa1, 0x5a, 0xb5, 0xb2, 0x83, 0xa4, 0xc8, 0xce, 0xa0, 0xe6, 0x68, 0x27, 0x58,
|
||||
0x51, 0x63, 0x8c, 0x11, 0x3b, 0xc1, 0x01, 0xdc, 0x64, 0xf3, 0xc8, 0xf3, 0x5e, 0x31, 0x85, 0xb7,
|
||||
0x28, 0x9b, 0xc7, 0x76, 0x04, 0x43, 0x64, 0xf3, 0x14, 0x6b, 0x76, 0x44, 0x9f, 0xe7, 0x2c, 0xbd,
|
||||
0x50, 0x53, 0x80, 0xdb, 0xc0, 0x42, 0x82, 0xe7, 0x80, 0x5b, 0x21, 0xc4, 0x4c, 0x02, 0x42, 0x70,
|
||||
0x0c, 0x65, 0x9e, 0xa4, 0xf8, 0xae, 0x85, 0xd4, 0x51, 0x32, 0x62, 0x12, 0xc0, 0x0c, 0x2a, 0xae,
|
||||
0xba, 0xc3, 0xe1, 0x2b, 0x2e, 0xba, 0xc2, 0x71, 0x2b, 0x84, 0x98, 0x69, 0x50, 0x08, 0x26, 0x65,
|
||||
0x9e, 0x71, 0x34, 0x0c, 0xa4, 0x86, 0x90, 0x10, 0xc3, 0xc0, 0x25, 0x90, 0xc9, 0x03, 0xa8, 0x66,
|
||||
0xe0, 0x35, 0x29, 0x24, 0x41, 0x93, 0x2d, 0x61, 0xae, 0xe4, 0xc9, 0xba, 0xb3, 0x72, 0x85, 0xae,
|
||||
0xe4, 0xa9, 0x6a, 0xb1, 0x72, 0x45, 0x5c, 0xc9, 0x73, 0x00, 0x54, 0xc4, 0xa3, 0xa4, 0xe6, 0xfe,
|
||||
0x22, 0x0a, 0x49, 0xb0, 0x88, 0x2d, 0x61, 0xe6, 0x68, 0x59, 0xc4, 0x05, 0x47, 0x73, 0xb4, 0x2a,
|
||||
0x80, 0x75, 0x32, 0x7b, 0x9d, 0x94, 0x9b, 0x48, 0x22, 0x5b, 0x05, 0xf8, 0x4e, 0x06, 0xf9, 0xb4,
|
||||
0x46, 0x91, 0x44, 0x3d, 0xf7, 0x56, 0x4a, 0x44, 0x92, 0x2e, 0x85, 0xba, 0x92, 0xda, 0x37, 0xf6,
|
||||
0xd5, 0x0e, 0x6d, 0x19, 0xdf, 0x0a, 0x21, 0x26, 0x3e, 0xb5, 0x85, 0xde, 0x4a, 0xaa, 0x2a, 0x6b,
|
||||
0x26, 0xff, 0x7b, 0xfe, 0x02, 0xb5, 0x72, 0x22, 0x3e, 0xf9, 0x38, 0x34, 0xbc, 0xda, 0xc0, 0xed,
|
||||
0x2b, 0x18, 0x0e, 0xdd, 0xb7, 0x83, 0x8c, 0xc9, 0x38, 0x85, 0xc4, 0x3a, 0x5a, 0xf4, 0x3d, 0x4d,
|
||||
0xcf, 0xc9, 0xe2, 0xbd, 0x3e, 0xcc, 0xba, 0x32, 0xaf, 0x5d, 0x1c, 0xb0, 0x25, 0x9c, 0xb0, 0x17,
|
||||
0x6f, 0xb3, 0x9a, 0x67, 0xc5, 0x4c, 0xcd, 0xdc, 0xcf, 0x08, 0x4b, 0x3e, 0x98, 0xb8, 0x32, 0xdf,
|
||||
0xab, 0x64, 0x12, 0x08, 0x54, 0x96, 0x43, 0xb8, 0xf4, 0x26, 0x10, 0xd8, 0xa2, 0xe6, 0x88, 0x04,
|
||||
0x22, 0xc4, 0x9b, 0x7d, 0x14, 0xed, 0x5c, 0xbd, 0x57, 0x78, 0xc2, 0xda, 0x5c, 0x8e, 0xb2, 0x86,
|
||||
0x41, 0x62, 0x29, 0x1b, 0x54, 0x30, 0xeb, 0x4b, 0xed, 0xdf, 0x0c, 0xb1, 0x07, 0x84, 0x9d, 0xee,
|
||||
0x30, 0x7b, 0x38, 0x80, 0xf4, 0xb8, 0x32, 0xe7, 0xe3, 0x94, 0xab, 0xee, 0xf1, 0xf8, 0xc3, 0x01,
|
||||
0xa4, 0xb5, 0x27, 0x63, 0x57, 0xeb, 0x79, 0x92, 0x5e, 0xcc, 0x2a, 0xb6, 0x28, 0xa6, 0x5b, 0x2c,
|
||||
0x67, 0x15, 0xda, 0x93, 0x71, 0x4a, 0x8d, 0x50, 0x62, 0x4f, 0xa6, 0x47, 0xc5, 0x64, 0x70, 0x76,
|
||||
0x29, 0x36, 0xf3, 0x6c, 0x86, 0x57, 0xd4, 0x8e, 0x21, 0x01, 0x10, 0x19, 0x9c, 0x17, 0xf4, 0x74,
|
||||
0x22, 0xb9, 0xe2, 0xe6, 0x59, 0x9a, 0xe4, 0xd2, 0xdf, 0x06, 0x6d, 0xc6, 0x01, 0x7b, 0x3b, 0x91,
|
||||
0x47, 0xc1, 0x53, 0xcf, 0x93, 0x45, 0x55, 0xec, 0x15, 0x9c, 0x91, 0xf5, 0x6c, 0x81, 0xde, 0x7a,
|
||||
0x5a, 0x20, 0x0a, 0xab, 0x27, 0xf0, 0xb6, 0x29, 0x4d, 0xf3, 0x8f, 0x2f, 0xac, 0x36, 0xbf, 0x8f,
|
||||
0x95, 0x3c, 0x14, 0x56, 0x11, 0x87, 0x2a, 0xa3, 0x9c, 0xc8, 0x0e, 0x13, 0xd0, 0x76, 0xbb, 0xc9,
|
||||
0x83, 0x7e, 0xd0, 0xef, 0x67, 0xc2, 0x57, 0x39, 0x84, 0xfc, 0x08, 0x60, 0x88, 0x9f, 0x16, 0x34,
|
||||
0xdb, 0x2d, 0x4e, 0x7d, 0xce, 0x21, 0xbd, 0xe8, 0x5c, 0xf7, 0x71, 0x0b, 0x2a, 0x11, 0x62, 0xbb,
|
||||
0x85, 0x40, 0xfd, 0x4d, 0xb4, 0x97, 0xb2, 0x22, 0xd4, 0x44, 0x8d, 0x7c, 0x48, 0x13, 0x29, 0xce,
|
||||
0x2c, 0x7e, 0xb5, 0x54, 0xf5, 0x4c, 0xd9, 0x4c, 0x6b, 0x84, 0x05, 0x1b, 0x22, 0x16, 0xbf, 0x24,
|
||||
0x6c, 0x72, 0x72, 0xec, 0xf3, 0xa0, 0x7b, 0xbf, 0xb7, 0x63, 0xe5, 0x80, 0xbe, 0xdf, 0x4b, 0xb1,
|
||||
0x74, 0x25, 0x65, 0x1f, 0xe9, 0xb1, 0xe2, 0xf6, 0x93, 0xc7, 0xc3, 0x60, 0xb3, 0xe4, 0x71, 0x7c,
|
||||
0x6e, 0xe5, 0x90, 0x54, 0xd2, 0xeb, 0x7a, 0xc0, 0x90, 0xc1, 0x88, 0x25, 0x4f, 0x00, 0x47, 0x21,
|
||||
0xcc, 0xf1, 0xbc, 0xc5, 0x0a, 0x0e, 0x05, 0xf7, 0x85, 0x30, 0xd7, 0x98, 0x02, 0x43, 0x21, 0x8c,
|
||||
0x52, 0x40, 0xfd, 0x56, 0xec, 0x07, 0x01, 0x3f, 0x4c, 0xe6, 0xde, 0x8c, 0x4d, 0xee, 0xf5, 0x48,
|
||||
0x79, 0xa8, 0xdf, 0x22, 0xce, 0x3a, 0x70, 0xb3, 0xbd, 0x9c, 0x24, 0xd5, 0x4c, 0xef, 0x6e, 0x4c,
|
||||
0xe3, 0x27, 0xb4, 0x1d, 0x97, 0x24, 0x0e, 0xdc, 0xc2, 0x1a, 0x28, 0xec, 0xec, 0xcd, 0x93, 0x99,
|
||||
0xae, 0xa9, 0xa7, 0x06, 0x42, 0xde, 0xa9, 0xea, 0x83, 0x7e, 0x10, 0xf9, 0x79, 0x95, 0x4d, 0x81,
|
||||
0x05, 0xfc, 0x08, 0xf9, 0x10, 0x3f, 0x18, 0x44, 0xd9, 0x5b, 0x53, 0x6f, 0xb9, 0xa2, 0xdb, 0x2c,
|
||||
0xa6, 0x6a, 0x1d, 0x3b, 0x26, 0x1e, 0x0f, 0xe2, 0x42, 0xd9, 0x1b, 0xc1, 0xa3, 0x31, 0xda, 0x6e,
|
||||
0xd0, 0x86, 0xc6, 0xa8, 0xde, 0x7f, 0x1d, 0x32, 0x46, 0x7d, 0xb0, 0xf2, 0xf9, 0x53, 0x35, 0x46,
|
||||
0xb7, 0x13, 0x9e, 0x34, 0x79, 0xfb, 0xab, 0x0c, 0x2e, 0xd5, 0x42, 0xd8, 0x53, 0xdf, 0x96, 0x1a,
|
||||
0x8b, 0x17, 0xbb, 0xd0, 0xaa, 0x78, 0x63, 0x30, 0x1f, 0xf0, 0xad, 0x56, 0x08, 0xbd, 0xbe, 0xd1,
|
||||
0x52, 0x61, 0x63, 0x30, 0x1f, 0xf0, 0xad, 0xde, 0x18, 0xed, 0xf5, 0x8d, 0x5e, 0x1b, 0xdd, 0x18,
|
||||
0xcc, 0x2b, 0xdf, 0x7f, 0xd5, 0x0e, 0x5c, 0xdb, 0x79, 0x93, 0x87, 0xa5, 0x3c, 0x5b, 0x82, 0x2f,
|
||||
0x9d, 0x74, 0xed, 0x69, 0x34, 0x94, 0x4e, 0xd2, 0x2a, 0xd6, 0x67, 0x46, 0x7c, 0xa5, 0x38, 0x62,
|
||||
0x75, 0x26, 0x0e, 0xcc, 0x9f, 0x0d, 0x30, 0xda, 0xc2, 0xa1, 0x45, 0x53, 0x48, 0xc9, 0x1c, 0x37,
|
||||
0x3a, 0xa8, 0xb9, 0xdd, 0xfb, 0x38, 0x60, 0xaf, 0x7b, 0xc9, 0x77, 0x7d, 0x20, 0x6d, 0x0e, 0xfe,
|
||||
0x1c, 0xc6, 0x3e, 0x71, 0x0c, 0xb5, 0xaa, 0xf7, 0xd0, 0xf1, 0xc9, 0x70, 0x05, 0xe5, 0xfe, 0x6f,
|
||||
0xda, 0x75, 0x05, 0xf6, 0xaf, 0x06, 0xc1, 0xd3, 0x21, 0x16, 0xd1, 0x40, 0x78, 0x76, 0x25, 0x1d,
|
||||
0x55, 0x90, 0xff, 0x18, 0x45, 0xb7, 0xbc, 0x05, 0x71, 0xcf, 0x9e, 0x7f, 0x77, 0x88, 0x6d, 0xff,
|
||||
0x19, 0xf4, 0x17, 0xdf, 0x46, 0x55, 0x95, 0xee, 0x1f, 0xda, 0xe5, 0x7d, 0xab, 0x21, 0xde, 0xc0,
|
||||
0x78, 0x59, 0x4d, 0xa1, 0x52, 0x23, 0x36, 0xd4, 0xe9, 0x0c, 0x8c, 0xc7, 0xed, 0xa7, 0x57, 0xd4,
|
||||
0xb2, 0x3e, 0x89, 0xe3, 0xc0, 0xea, 0xed, 0x37, 0xab, 0x3c, 0x21, 0xcb, 0x16, 0x8d, 0x0b, 0xf4,
|
||||
0xd9, 0x55, 0xd5, 0xa8, 0x91, 0x6c, 0xc1, 0xe2, 0x0d, 0xfb, 0x67, 0x03, 0x0d, 0x3b, 0xef, 0xdc,
|
||||
0x7f, 0x72, 0x35, 0x25, 0x55, 0x96, 0xff, 0x1a, 0x45, 0x77, 0x1d, 0xd6, 0x9c, 0x76, 0xa0, 0x3d,
|
||||
0x99, 0x1f, 0x05, 0xec, 0x53, 0x4a, 0xba, 0x70, 0xbf, 0xf7, 0xed, 0x94, 0xcd, 0xf7, 0x63, 0x1c,
|
||||
0x95, 0x9d, 0x2c, 0xe7, 0x50, 0x75, 0xbf, 0x1f, 0xe3, 0xda, 0x95, 0xd4, 0x98, 0xfe, 0x7e, 0x4c,
|
||||
0x00, 0xb7, 0xbe, 0x1f, 0xe3, 0xf1, 0xec, 0xfd, 0x7e, 0x8c, 0xd7, 0x5a, 0xf0, 0xfb, 0x31, 0x61,
|
||||
0x0d, 0x6a, 0xf2, 0x69, 0x8b, 0x20, 0x77, 0xd5, 0x07, 0x59, 0x74, 0x37, 0xd9, 0x9f, 0x5e, 0x45,
|
||||
0x85, 0x98, 0x7e, 0x25, 0x27, 0x6e, 0xc4, 0x0d, 0x78, 0xa6, 0xce, 0xad, 0xb8, 0x8d, 0xc1, 0xbc,
|
||||
0xf2, 0xfd, 0x13, 0xb5, 0xf6, 0xd2, 0x93, 0x0d, 0xab, 0xc4, 0xb7, 0x83, 0xd6, 0x42, 0x93, 0x47,
|
||||
0x63, 0xc1, 0x6e, 0xf9, 0xc7, 0xc3, 0x60, 0xa2, 0xba, 0x0d, 0xa1, 0x1a, 0x7d, 0xdc, 0x67, 0x08,
|
||||
0x35, 0xf9, 0xc6, 0x60, 0x9e, 0x98, 0xe4, 0xa4, 0x6f, 0xd9, 0xda, 0x03, 0x8c, 0xb9, 0x6d, 0xfd,
|
||||
0x64, 0xb8, 0x82, 0x72, 0xbf, 0x54, 0x49, 0xad, 0xed, 0x5e, 0xb4, 0xf3, 0x7a, 0x9f, 0xa9, 0x89,
|
||||
0xd3, 0xcc, 0xe3, 0xa1, 0x78, 0x28, 0xbd, 0xb1, 0x27, 0xf8, 0xbe, 0xf4, 0xc6, 0x3b, 0xc9, 0x7f,
|
||||
0x72, 0x35, 0x25, 0x55, 0x96, 0x7f, 0x1e, 0x45, 0xd7, 0xc9, 0xb2, 0xa8, 0x7e, 0xf0, 0xd9, 0x50,
|
||||
0xcb, 0xa8, 0x3f, 0x7c, 0x7e, 0x65, 0x3d, 0x55, 0xa8, 0x7f, 0x1b, 0x45, 0x37, 0x02, 0x85, 0x92,
|
||||
0x1d, 0xe4, 0x0a, 0xd6, 0xdd, 0x8e, 0xf2, 0xc3, 0xab, 0x2b, 0x52, 0xd3, 0xbd, 0x8d, 0x4f, 0xba,
|
||||
0x1f, 0x56, 0x09, 0xd8, 0x9e, 0xd0, 0x1f, 0x56, 0xe9, 0xd7, 0xc2, 0x5b, 0x50, 0x4d, 0x52, 0xa2,
|
||||
0x56, 0x46, 0xbe, 0x2d, 0x28, 0x91, 0xb3, 0xa0, 0x15, 0xd1, 0xfd, 0x5e, 0xce, 0xe7, 0xe4, 0xc5,
|
||||
0xdb, 0x32, 0x29, 0xa6, 0xb4, 0x13, 0x29, 0xef, 0x77, 0xa2, 0x39, 0xbc, 0x75, 0xd7, 0x48, 0x8f,
|
||||
0x59, 0xbb, 0xcc, 0x7b, 0x48, 0xe9, 0x6b, 0x24, 0xb8, 0x75, 0xd7, 0x41, 0x09, 0x6f, 0x2a, 0xa7,
|
||||
0x0d, 0x79, 0x43, 0xa9, 0xec, 0xa3, 0x21, 0x28, 0x5a, 0x40, 0x68, 0x6f, 0xfa, 0x44, 0xe0, 0x71,
|
||||
0xc8, 0x4a, 0xe7, 0x54, 0x60, 0x7d, 0x20, 0x4d, 0xb8, 0x9d, 0x00, 0xff, 0x12, 0x92, 0x29, 0x54,
|
||||
0x41, 0xb7, 0x9a, 0x1a, 0xe4, 0xd6, 0xa6, 0x7d, 0x6e, 0xb7, 0x58, 0xbe, 0x98, 0x17, 0xaa, 0x31,
|
||||
0x49, 0xb7, 0x36, 0xd5, 0xef, 0x16, 0xd1, 0x78, 0xd3, 0xd2, 0xb8, 0x15, 0xe9, 0xe5, 0xa3, 0xb0,
|
||||
0x19, 0x27, 0xab, 0x5c, 0x1b, 0xc4, 0xd2, 0xf5, 0x54, 0xdd, 0xa8, 0xa7, 0x9e, 0xa8, 0x27, 0xad,
|
||||
0x0f, 0xa4, 0xf1, 0xee, 0xa1, 0xe5, 0x56, 0xf7, 0xa7, 0x8d, 0x1e, 0x5b, 0x9d, 0x2e, 0xf5, 0x64,
|
||||
0xb8, 0x02, 0xde, 0xab, 0x55, 0xbd, 0xaa, 0x59, 0x17, 0xed, 0x64, 0x79, 0x1e, 0xaf, 0x05, 0xba,
|
||||
0x49, 0x0b, 0x05, 0xf7, 0x6a, 0x3d, 0x30, 0xd1, 0x93, 0xdb, 0xbd, 0xcd, 0x22, 0xee, 0xb3, 0x23,
|
||||
0xa8, 0x41, 0x3d, 0xd9, 0xa6, 0xd1, 0x7e, 0x9b, 0xf5, 0xa8, 0x75, 0x6d, 0xc7, 0xe1, 0x07, 0xd7,
|
||||
0xa9, 0xf0, 0xc6, 0x60, 0x1e, 0x5d, 0x06, 0x10, 0x94, 0x98, 0x59, 0xee, 0x50, 0x26, 0x9c, 0x99,
|
||||
0xe4, 0x6e, 0x0f, 0x85, 0xf6, 0x2c, 0xe5, 0x30, 0x7a, 0x9d, 0x4d, 0x67, 0xc0, 0xbd, 0xe7, 0x58,
|
||||
0x36, 0x10, 0x3c, 0xc7, 0x42, 0x20, 0x6a, 0x3a, 0xf9, 0xbb, 0xde, 0xac, 0xdd, 0x9b, 0xfa, 0x9a,
|
||||
0x4e, 0x29, 0x5b, 0x54, 0xa8, 0xe9, 0xbc, 0x34, 0x8a, 0x06, 0xda, 0xad, 0x7a, 0x89, 0xfe, 0x51,
|
||||
0xc8, 0x0c, 0x7a, 0x93, 0x7e, 0x6d, 0x10, 0x8b, 0x66, 0x14, 0xe3, 0x30, 0x9b, 0x67, 0xdc, 0x37,
|
||||
0xa3, 0x58, 0x36, 0x1a, 0x24, 0x34, 0xa3, 0x74, 0x51, 0xaa, 0x7a, 0x4d, 0x8e, 0xb0, 0x37, 0x0d,
|
||||
0x57, 0x4f, 0x32, 0xc3, 0xaa, 0xa7, 0xd9, 0xce, 0xb1, 0x6b, 0xa1, 0xbb, 0x0c, 0x3f, 0x57, 0x8b,
|
||||
0x65, 0x4f, 0xdf, 0x16, 0x2f, 0x57, 0x62, 0x30, 0x14, 0x75, 0x28, 0x05, 0x7c, 0x9c, 0xd0, 0x70,
|
||||
0xed, 0xc9, 0x70, 0x59, 0x42, 0x52, 0x25, 0x45, 0xea, 0x5d, 0x9c, 0x0a, 0x83, 0x1d, 0x32, 0xb4,
|
||||
0x38, 0x25, 0x35, 0xd0, 0xa1, 0xbe, 0xfb, 0x5a, 0xa4, 0x67, 0x28, 0xe8, 0xf7, 0x0f, 0xdd, 0xb7,
|
||||
0x22, 0x1f, 0x0e, 0x20, 0xf1, 0xa1, 0x7e, 0x0b, 0xe8, 0x6d, 0x79, 0xe9, 0xf4, 0xe3, 0x80, 0x29,
|
||||
0x17, 0x0d, 0x2d, 0x84, 0x69, 0x15, 0xd4, 0xa9, 0x75, 0x82, 0x0b, 0xfc, 0xc7, 0xb0, 0xf2, 0x75,
|
||||
0x6a, 0x93, 0x9f, 0x0a, 0x24, 0xd4, 0xa9, 0xbb, 0x28, 0xca, 0x33, 0xed, 0x75, 0xd0, 0xbd, 0x80,
|
||||
0xbe, 0xbd, 0xf4, 0xb9, 0xdf, 0xcb, 0xa1, 0x91, 0xb3, 0x9d, 0x2d, 0x9d, 0x53, 0x0c, 0x4f, 0x41,
|
||||
0xb7, 0xb3, 0xa5, 0xff, 0x10, 0x63, 0x6d, 0x10, 0x8b, 0x2f, 0x0c, 0x24, 0x1c, 0xde, 0xb6, 0x27,
|
||||
0xf9, 0x9e, 0xe2, 0x0a, 0x79, 0xe7, 0x28, 0xff, 0x41, 0x3f, 0x68, 0xae, 0xe7, 0x1e, 0x55, 0x2c,
|
||||
0x85, 0xba, 0x56, 0x5f, 0x9b, 0x73, 0xef, 0x3f, 0x29, 0xd9, 0x18, 0x7d, 0x6b, 0xee, 0x4e, 0x18,
|
||||
0x52, 0xb6, 0xbf, 0x8c, 0xde, 0xdd, 0x67, 0xb3, 0x09, 0x14, 0xd3, 0xf8, 0x07, 0xee, 0x85, 0x58,
|
||||
0x36, 0x1b, 0x37, 0x3f, 0x6b, 0x7b, 0xd7, 0x28, 0xb1, 0xb9, 0xd2, 0xb7, 0x0d, 0x6f, 0x16, 0xb3,
|
||||
0x09, 0x4f, 0x38, 0xba, 0xd2, 0x27, 0x7e, 0x1f, 0x37, 0x02, 0xe2, 0x4a, 0x9f, 0x03, 0x20, 0x7b,
|
||||
0x27, 0x15, 0x80, 0xd7, 0x5e, 0x23, 0x08, 0xda, 0x53, 0x80, 0x99, 0x75, 0xb5, 0xbd, 0x26, 0xb1,
|
||||
0xc5, 0x57, 0xf0, 0x8c, 0x8e, 0x90, 0x12, 0xb3, 0x6e, 0x97, 0x32, 0x9d, 0x41, 0x56, 0x5f, 0x7c,
|
||||
0x5b, 0x63, 0x31, 0x9f, 0x27, 0xd5, 0x0a, 0x75, 0x06, 0x55, 0x4b, 0x0b, 0x20, 0x3a, 0x83, 0x17,
|
||||
0x34, 0xbd, 0xbc, 0x7d, 0xcc, 0xe9, 0xc5, 0x2e, 0xab, 0xd8, 0x82, 0x67, 0x05, 0xe0, 0xef, 0x2b,
|
||||
0xe8, 0x07, 0x6a, 0x33, 0x44, 0x2f, 0xa7, 0x58, 0x93, 0x15, 0x0a, 0x42, 0xde, 0x0e, 0x14, 0xdf,
|
||||
0x6c, 0xad, 0x39, 0xab, 0xf0, 0xe9, 0xa0, 0xb4, 0x82, 0x21, 0x22, 0x2b, 0x24, 0x61, 0xd4, 0xf6,
|
||||
0x47, 0x59, 0x31, 0xf3, 0xb6, 0xfd, 0x91, 0xfd, 0xc5, 0xc3, 0x1b, 0x34, 0x60, 0xe2, 0xbb, 0x7c,
|
||||
0x68, 0xf2, 0x1b, 0x46, 0xea, 0x2d, 0x49, 0xef, 0x43, 0xb7, 0x09, 0x22, 0xbe, 0xfb, 0x49, 0xe4,
|
||||
0xea, 0x65, 0x09, 0x05, 0x4c, 0xdb, 0x3b, 0x70, 0x3e, 0x57, 0x0e, 0x11, 0x74, 0x85, 0x49, 0x13,
|
||||
0x55, 0x85, 0xfc, 0x78, 0x51, 0x1c, 0x55, 0xec, 0x2c, 0xcb, 0xa1, 0x42, 0x51, 0x55, 0xaa, 0x5b,
|
||||
0x72, 0x22, 0xaa, 0xfa, 0x38, 0x73, 0x99, 0x42, 0x48, 0x9d, 0x0f, 0x0f, 0x9f, 0x54, 0x49, 0x8a,
|
||||
0x2f, 0x53, 0x48, 0x1b, 0x5d, 0x8c, 0xd8, 0x49, 0x0b, 0xe0, 0xa6, 0xa7, 0x1f, 0x00, 0xaf, 0xb2,
|
||||
0xb4, 0x9e, 0x00, 0x3f, 0x4a, 0xaa, 0x64, 0x0e, 0x1c, 0x2a, 0xdc, 0xd3, 0x15, 0x32, 0x76, 0x18,
|
||||
0xa2, 0xa7, 0x53, 0xac, 0x72, 0xf8, 0xfb, 0xd1, 0xfb, 0x4d, 0xa0, 0x87, 0x42, 0x7d, 0x23, 0xff,
|
||||
0x85, 0xf8, 0xe3, 0x1a, 0xf1, 0x07, 0xda, 0xc6, 0x84, 0x57, 0x90, 0xcc, 0x5b, 0xdb, 0xef, 0xe9,
|
||||
0xdf, 0x05, 0xf8, 0x64, 0xd4, 0x34, 0xc8, 0x21, 0xe3, 0xd9, 0x59, 0xb3, 0xae, 0x52, 0xa7, 0x58,
|
||||
0xa8, 0x41, 0x6c, 0xf1, 0x38, 0xf0, 0xc9, 0x00, 0x1f, 0x67, 0x02, 0x8d, 0x2d, 0x3d, 0x86, 0x32,
|
||||
0xc7, 0x81, 0xc6, 0xd1, 0x16, 0x00, 0x11, 0x68, 0xbc, 0xa0, 0xe9, 0x5d, 0xb6, 0xf8, 0x04, 0xc2,
|
||||
0x95, 0x39, 0x81, 0x61, 0x95, 0x39, 0x71, 0xde, 0x11, 0xc8, 0xa3, 0xf7, 0x0f, 0x60, 0xfe, 0x06,
|
||||
0xaa, 0xfa, 0x3c, 0x2b, 0x77, 0x9b, 0x19, 0x36, 0xe1, 0x0b, 0xfc, 0x16, 0x9d, 0x21, 0xc6, 0x1a,
|
||||
0x21, 0xd2, 0x10, 0x02, 0x35, 0xa1, 0xcc, 0x00, 0x7b, 0xf5, 0x61, 0x32, 0x07, 0xf1, 0x01, 0x84,
|
||||
0x78, 0x8d, 0x32, 0x62, 0x41, 0x44, 0x28, 0x23, 0x61, 0xeb, 0x75, 0x23, 0xc3, 0x1c, 0xc3, 0xac,
|
||||
0xe9, 0x61, 0xd5, 0x51, 0xb2, 0x9a, 0x43, 0xc1, 0x95, 0x49, 0xb4, 0x09, 0x6b, 0x99, 0xf4, 0xf3,
|
||||
0xc4, 0x26, 0xec, 0x10, 0x3d, 0x2b, 0xe9, 0x76, 0x1e, 0xfc, 0x11, 0xab, 0xb8, 0xfc, 0x0b, 0x18,
|
||||
0xa7, 0x55, 0x8e, 0x92, 0x6e, 0xf7, 0xa1, 0x3a, 0x24, 0x91, 0x74, 0x87, 0x35, 0xac, 0x4f, 0x47,
|
||||
0x3b, 0x65, 0x78, 0x05, 0x95, 0xee, 0x27, 0x2f, 0xe6, 0x49, 0x96, 0xab, 0xde, 0xf0, 0x45, 0xc0,
|
||||
0x36, 0xa1, 0x43, 0x7c, 0x3a, 0x7a, 0xa8, 0xae, 0xf5, 0xb1, 0xed, 0x70, 0x09, 0xd1, 0x9e, 0x70,
|
||||
0x8f, 0x7d, 0x62, 0x4f, 0xb8, 0x5f, 0xcb, 0x2c, 0xd5, 0x0c, 0x2b, 0xb8, 0x95, 0x20, 0xb6, 0xd8,
|
||||
0x14, 0x6f, 0x10, 0x59, 0x36, 0x11, 0x48, 0x2c, 0xd5, 0x82, 0x0a, 0x66, 0x6e, 0x33, 0xd8, 0x4e,
|
||||
0x56, 0x24, 0x79, 0xf6, 0x53, 0x7c, 0xf7, 0xd9, 0xb2, 0xd3, 0x12, 0xc4, 0xdc, 0xe6, 0x27, 0x7d,
|
||||
0xae, 0x76, 0x81, 0x9f, 0x64, 0x4d, 0xe8, 0x7f, 0x10, 0x78, 0x6e, 0x82, 0xe8, 0x77, 0x65, 0x91,
|
||||
0xca, 0xd5, 0xcf, 0x46, 0xd1, 0x75, 0xfc, 0x58, 0x37, 0xcb, 0x72, 0xd2, 0xa4, 0x24, 0xc7, 0x90,
|
||||
0x42, 0x56, 0xf2, 0xf8, 0xd3, 0xf0, 0xb3, 0x42, 0x38, 0x71, 0xb2, 0x3e, 0x40, 0xcd, 0x3a, 0xaf,
|
||||
0x6d, 0x62, 0xc9, 0x44, 0xfe, 0x69, 0xa8, 0xd3, 0x1a, 0x2a, 0x35, 0x53, 0xee, 0x02, 0x47, 0xa3,
|
||||
0xd3, 0xe2, 0xc6, 0x16, 0xd8, 0x54, 0x94, 0x18, 0x9d, 0x61, 0x0d, 0xb3, 0xbb, 0x63, 0x71, 0xc7,
|
||||
0x50, 0xb3, 0x7c, 0x09, 0xe2, 0xfa, 0xdb, 0x63, 0xd2, 0x98, 0x45, 0x11, 0xbb, 0x3b, 0x34, 0x6d,
|
||||
0xd2, 0x8d, 0xae, 0xdb, 0xcd, 0x62, 0xb5, 0x87, 0xcf, 0xc8, 0x3d, 0x96, 0x04, 0x46, 0xa4, 0x1b,
|
||||
0x01, 0xdc, 0xda, 0xfd, 0xac, 0x58, 0x32, 0x4d, 0x93, 0x9a, 0x1f, 0x25, 0xab, 0x9c, 0x25, 0x53,
|
||||
0x31, 0xaf, 0xe3, 0xdd, 0xcf, 0x96, 0x19, 0xdb, 0x10, 0xb5, 0xfb, 0x49, 0xc1, 0x66, 0x65, 0xa7,
|
||||
0xfe, 0xe2, 0x95, 0xba, 0x5a, 0x78, 0x1b, 0xe5, 0x48, 0xa2, 0xbc, 0xf8, 0x5a, 0xe1, 0x9d, 0x30,
|
||||
0x64, 0x5e, 0x89, 0x92, 0x22, 0x91, 0x86, 0xdc, 0xf0, 0xe9, 0x38, 0x09, 0xc8, 0xcd, 0x00, 0x61,
|
||||
0x3e, 0x93, 0x20, 0x7f, 0x6f, 0xff, 0x68, 0x03, 0x57, 0x1f, 0xd1, 0x7d, 0xec, 0xd3, 0xb5, 0xa1,
|
||||
0xb1, 0xfd, 0x1d, 0xb2, 0xf5, 0x81, 0xb4, 0xf4, 0xfa, 0xfc, 0xe6, 0x7f, 0x7f, 0x7d, 0x6d, 0xf4,
|
||||
0xf3, 0xaf, 0xaf, 0x8d, 0xfe, 0xff, 0xeb, 0x6b, 0xa3, 0x9f, 0x7d, 0x73, 0xed, 0x9d, 0x9f, 0x7f,
|
||||
0x73, 0xed, 0x9d, 0xff, 0xfd, 0xe6, 0xda, 0x3b, 0x5f, 0xbd, 0xab, 0xfe, 0x74, 0xda, 0x9b, 0x5f,
|
||||
0x12, 0x7f, 0x00, 0xed, 0xd9, 0x2f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, 0xe4, 0x86, 0x5e,
|
||||
0x6d, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
|
@ -429,6 +431,7 @@ type ClientCommandsHandler interface {
|
|||
ObjectListSetIsFavorite(context.Context, *pb.RpcObjectListSetIsFavoriteRequest) *pb.RpcObjectListSetIsFavoriteResponse
|
||||
ObjectListSetObjectType(context.Context, *pb.RpcObjectListSetObjectTypeRequest) *pb.RpcObjectListSetObjectTypeResponse
|
||||
ObjectListSetDetails(context.Context, *pb.RpcObjectListSetDetailsRequest) *pb.RpcObjectListSetDetailsResponse
|
||||
ObjectListModifyDetailValues(context.Context, *pb.RpcObjectListModifyDetailValuesRequest) *pb.RpcObjectListModifyDetailValuesResponse
|
||||
ObjectApplyTemplate(context.Context, *pb.RpcObjectApplyTemplateRequest) *pb.RpcObjectApplyTemplateResponse
|
||||
// ObjectToSet creates new set from given object and removes object
|
||||
ObjectToSet(context.Context, *pb.RpcObjectToSetRequest) *pb.RpcObjectToSetResponse
|
||||
|
@ -2138,6 +2141,26 @@ func ObjectListSetDetails(b []byte) (resp []byte) {
|
|||
return resp
|
||||
}
|
||||
|
||||
func ObjectListModifyDetailValues(b []byte) (resp []byte) {
|
||||
defer func() {
|
||||
if PanicHandler != nil {
|
||||
if r := recover(); r != nil {
|
||||
resp, _ = (&pb.RpcObjectListModifyDetailValuesResponse{Error: &pb.RpcObjectListModifyDetailValuesResponseError{Code: pb.RpcObjectListModifyDetailValuesResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal()
|
||||
PanicHandler(r)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
in := new(pb.RpcObjectListModifyDetailValuesRequest)
|
||||
if err := in.Unmarshal(b); err != nil {
|
||||
resp, _ = (&pb.RpcObjectListModifyDetailValuesResponse{Error: &pb.RpcObjectListModifyDetailValuesResponseError{Code: pb.RpcObjectListModifyDetailValuesResponseError_BAD_INPUT, Description: err.Error()}}).Marshal()
|
||||
return resp
|
||||
}
|
||||
|
||||
resp, _ = clientCommandsHandler.ObjectListModifyDetailValues(context.Background(), in).Marshal()
|
||||
return resp
|
||||
}
|
||||
|
||||
func ObjectApplyTemplate(b []byte) (resp []byte) {
|
||||
defer func() {
|
||||
if PanicHandler != nil {
|
||||
|
@ -5792,6 +5815,8 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) {
|
|||
cd = ObjectListSetObjectType(data)
|
||||
case "ObjectListSetDetails":
|
||||
cd = ObjectListSetDetails(data)
|
||||
case "ObjectListModifyDetailValues":
|
||||
cd = ObjectListModifyDetailValues(data)
|
||||
case "ObjectApplyTemplate":
|
||||
cd = ObjectApplyTemplate(data)
|
||||
case "ObjectToSet":
|
||||
|
@ -7200,6 +7225,20 @@ func (h *ClientCommandsHandlerProxy) ObjectListSetDetails(ctx context.Context, r
|
|||
call, _ := actualCall(ctx, req)
|
||||
return call.(*pb.RpcObjectListSetDetailsResponse)
|
||||
}
|
||||
func (h *ClientCommandsHandlerProxy) ObjectListModifyDetailValues(ctx context.Context, req *pb.RpcObjectListModifyDetailValuesRequest) *pb.RpcObjectListModifyDetailValuesResponse {
|
||||
actualCall := func(ctx context.Context, req any) (any, error) {
|
||||
return h.client.ObjectListModifyDetailValues(ctx, req.(*pb.RpcObjectListModifyDetailValuesRequest)), nil
|
||||
}
|
||||
for _, interceptor := range h.interceptors {
|
||||
toCall := actualCall
|
||||
currentInterceptor := interceptor
|
||||
actualCall = func(ctx context.Context, req any) (any, error) {
|
||||
return currentInterceptor(ctx, req, "ObjectListModifyDetailValues", toCall)
|
||||
}
|
||||
}
|
||||
call, _ := actualCall(ctx, req)
|
||||
return call.(*pb.RpcObjectListModifyDetailValuesResponse)
|
||||
}
|
||||
func (h *ClientCommandsHandlerProxy) ObjectApplyTemplate(ctx context.Context, req *pb.RpcObjectApplyTemplateRequest) *pb.RpcObjectApplyTemplateResponse {
|
||||
actualCall := func(ctx context.Context, req any) (any, error) {
|
||||
return h.client.ObjectApplyTemplate(ctx, req.(*pb.RpcObjectApplyTemplateRequest)), nil
|
||||
|
|
214
cmd/iosrepack/main.go
Normal file
214
cmd/iosrepack/main.go
Normal file
|
@ -0,0 +1,214 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
const (
|
||||
repack = "repack"
|
||||
iosArm64 = "ios_arm64.a"
|
||||
iosArm64Sim = "ios_arm64_sim.a"
|
||||
iosX86Sim = "ios_x86_sim.a"
|
||||
iosArm64Repack = "iosArm64"
|
||||
iosArm64SimRepack = "iosArm64Sim"
|
||||
iosX86SimRepack = "iosX86Sim"
|
||||
combined = "libcombined.a"
|
||||
)
|
||||
|
||||
type iosContext struct {
|
||||
tantivyArm64 string
|
||||
tantivyArm64Sim string
|
||||
tantivyX86Sim string
|
||||
iosLib string
|
||||
}
|
||||
|
||||
func main() {
|
||||
err := delegateMain()
|
||||
if err != nil {
|
||||
fmt.Println("Error:", err)
|
||||
os.Exit(-1)
|
||||
}
|
||||
}
|
||||
|
||||
func delegateMain() error {
|
||||
ctx := new(iosContext)
|
||||
ctx.tantivyArm64 = "deps/libs/ios-arm64/libtantivy_go.a"
|
||||
ctx.tantivyArm64Sim = "deps/libs/ios-arm64-sim/libtantivy_go.a"
|
||||
ctx.tantivyX86Sim = "deps/libs/ios-amd64/libtantivy_go.a"
|
||||
ctx.iosLib = "dist/ios/Lib.xcframework"
|
||||
|
||||
iosArm64Lib, iosSimLib, err := thinIosLibs(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = repackIosLibsWithTantivy(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = removeOldIosLibs(iosArm64Lib, iosSimLib)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = createNewIosLibs(iosArm64Lib, iosSimLib)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func createNewIosLibs(iosArm64Lib string, iosSimLib string) error {
|
||||
defer func() {
|
||||
_ = execute("Cleanup:", "rm", "-rf", repack)
|
||||
_ = execute("Cleanup:", "rm", iosArm64)
|
||||
_ = execute("Cleanup:", "rm", iosArm64Sim)
|
||||
_ = execute("Cleanup:", "rm", iosX86Sim)
|
||||
}()
|
||||
|
||||
err := execute("Error creating lib:", "lipo", "-create",
|
||||
filepath.Join(repack, iosArm64Repack, combined), "-output", "Lib")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = execute("Move created lib:", "mv", "Lib", iosArm64Lib)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = execute("Error creating lib:", "lipo", "-create",
|
||||
filepath.Join(repack, iosArm64SimRepack, combined),
|
||||
filepath.Join(repack, iosX86SimRepack, combined), "-output", "Lib")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = execute("Move created lib:", "mv", "Lib", iosSimLib)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func removeOldIosLibs(iosArm64Lib string, iosSimLib string) error {
|
||||
err := execute("Error removing lib:", "rm", iosArm64Lib)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = execute("Error removing lib:", "rm", iosSimLib)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func thinIosLibs(ctx *iosContext) (string, string, error) {
|
||||
iosArm64Lib := filepath.Join(ctx.iosLib, "ios-arm64", "Lib.framework", "Lib")
|
||||
err := execute("Error extracting lib:", "lipo", iosArm64Lib, "-thin", "arm64", "-output", iosArm64)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
iosSimLib := filepath.Join(ctx.iosLib, "ios-arm64_x86_64-simulator", "Lib.framework", "Lib")
|
||||
err = execute("Error extracting lib:", "lipo", iosSimLib, "-thin", "arm64", "-output", iosArm64Sim)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
err = execute("Error extracting lib:", "lipo", iosSimLib, "-thin", "x86_64", "-output", iosX86Sim)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
return iosArm64Lib, iosSimLib, nil
|
||||
}
|
||||
|
||||
func repackIosLibsWithTantivy(ctx *iosContext) error {
|
||||
err := os.MkdirAll(repack, os.ModePerm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = os.Chdir(repack)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = repackLib(iosArm64Repack, ctx.tantivyArm64, iosArm64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = repackLib(iosArm64SimRepack, ctx.tantivyArm64Sim, iosArm64Sim)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = repackLib(iosX86SimRepack, ctx.tantivyX86Sim, iosX86Sim)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = os.Chdir("..")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func repackLib(dir string, tantivyLib string, iosLib string) error {
|
||||
err := os.MkdirAll(dir, os.ModePerm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = os.Chdir(dir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = execute("Error extracting lib:", "ar", "-x", filepath.Join("..", "..", tantivyLib))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = execute("Error extracting lib:", "ar", "-x", filepath.Join("..", "..", iosLib))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
oFiles, err := filepath.Glob("*.o")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = execute("Error combine lib:", "ar", append([]string{"-qc", combined}, oFiles...)...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = os.Chdir("..")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func execute(errText string, name string, arg ...string) error {
|
||||
cmd := exec.Command(name, arg...)
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
fmt.Println(errText, err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
|
@ -436,6 +436,9 @@ func validate(snapshot *pb.SnapshotWithType, info *useCaseInfo) (err error) {
|
|||
}
|
||||
|
||||
func insertAnalyticsData(s *pb.ChangeSnapshot, info *useCaseInfo) {
|
||||
if s == nil || s.Data == nil || len(s.Data.Blocks) == 0 {
|
||||
return
|
||||
}
|
||||
root := s.Data.Blocks[0]
|
||||
id := pbtypes.GetString(s.Data.Details, bundle.RelationKeyId.String())
|
||||
f := root.GetFields().GetFields()
|
||||
|
|
|
@ -17,6 +17,7 @@ import (
|
|||
"github.com/anyproto/any-sync/commonspace/spacesyncproto"
|
||||
"github.com/anyproto/any-sync/coordinator/coordinatorclient/mock_coordinatorclient"
|
||||
"github.com/anyproto/any-sync/coordinator/coordinatorproto"
|
||||
"github.com/anyproto/any-sync/net/peer"
|
||||
"github.com/anyproto/any-sync/nodeconf"
|
||||
"github.com/anyproto/any-sync/util/cidutil"
|
||||
"github.com/anyproto/any-sync/util/crypto"
|
||||
|
@ -114,6 +115,14 @@ type mockSyncAcl struct {
|
|||
list.AclList
|
||||
}
|
||||
|
||||
func (m mockSyncAcl) HandleMessage(ctx context.Context, senderId string, protoVersion uint32, message *spacesyncproto.ObjectSyncMessage) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (m mockSyncAcl) SyncWithPeer(ctx context.Context, p peer.Peer) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (m mockSyncAcl) Init(a *app.App) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
@ -126,10 +135,6 @@ func (m mockSyncAcl) Run(ctx context.Context) (err error) {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (m mockSyncAcl) HandleMessage(ctx context.Context, senderId string, message *spacesyncproto.ObjectSyncMessage) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m mockSyncAcl) HandleRequest(ctx context.Context, senderId string, request *spacesyncproto.ObjectSyncMessage) (response *spacesyncproto.ObjectSyncMessage, err error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
@ -137,10 +142,6 @@ func (m mockSyncAcl) HandleRequest(ctx context.Context, senderId string, request
|
|||
func (m mockSyncAcl) SetHeadUpdater(updater headupdater.HeadUpdater) {
|
||||
}
|
||||
|
||||
func (m mockSyncAcl) SyncWithPeer(ctx context.Context, peerId string) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m mockSyncAcl) SetAclUpdater(updater headupdater.AclUpdater) {
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,6 @@ import (
|
|||
"github.com/anyproto/anytype-heart/core/domain/objectorigin"
|
||||
"github.com/anyproto/anytype-heart/core/files/fileuploader"
|
||||
"github.com/anyproto/anytype-heart/core/session"
|
||||
"github.com/anyproto/anytype-heart/pb"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/core"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/database"
|
||||
|
@ -42,8 +41,8 @@ const CName = "bookmark"
|
|||
type ContentFuture func() *bookmark.ObjectContent
|
||||
|
||||
type Service interface {
|
||||
CreateObjectAndFetch(ctx context.Context, spaceId string, req *pb.RpcObjectCreateBookmarkRequest) (objectID string, newDetails *types.Struct, err error)
|
||||
CreateBookmarkObject(ctx context.Context, spaceID string, details *types.Struct, getContent ContentFuture) (objectId string, newDetails *types.Struct, err error)
|
||||
CreateObjectAndFetch(ctx context.Context, spaceId string, details *types.Struct) (objectID string, newDetails *types.Struct, err error)
|
||||
CreateBookmarkObject(ctx context.Context, spaceId string, details *types.Struct, getContent ContentFuture) (objectId string, newDetails *types.Struct, err error)
|
||||
UpdateObject(objectId string, getContent *bookmark.ObjectContent) error
|
||||
// TODO Maybe Fetch and FetchBookmarkContent do the same thing differently?
|
||||
FetchAsync(spaceID string, blockID string, params bookmark.FetchParams)
|
||||
|
@ -92,24 +91,28 @@ func (s *service) Name() (name string) {
|
|||
|
||||
var log = logging.Logger("anytype-mw-bookmark")
|
||||
|
||||
func (s *service) CreateObjectAndFetch(ctx context.Context, spaceId string, req *pb.RpcObjectCreateBookmarkRequest) (objectID string, newDetails *types.Struct, err error) {
|
||||
source := pbtypes.GetString(req.Details, bundle.RelationKeySource.String())
|
||||
func (s *service) CreateObjectAndFetch(
|
||||
ctx context.Context, spaceId string, details *types.Struct,
|
||||
) (objectID string, newDetails *types.Struct, err error) {
|
||||
source := pbtypes.GetString(details, bundle.RelationKeySource.String())
|
||||
var res ContentFuture
|
||||
if source != "" {
|
||||
u, err := uri.NormalizeURI(source)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("process uri: %w", err)
|
||||
}
|
||||
res = s.FetchBookmarkContent(req.SpaceId, u, false)
|
||||
res = s.FetchBookmarkContent(spaceId, u, false)
|
||||
} else {
|
||||
res = func() *bookmark.ObjectContent {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return s.CreateBookmarkObject(ctx, spaceId, req.Details, res)
|
||||
return s.CreateBookmarkObject(ctx, spaceId, details, res)
|
||||
}
|
||||
|
||||
func (s *service) CreateBookmarkObject(ctx context.Context, spaceID string, details *types.Struct, getContent ContentFuture) (objectId string, objectDetails *types.Struct, err error) {
|
||||
func (s *service) CreateBookmarkObject(
|
||||
ctx context.Context, spaceID string, details *types.Struct, getContent ContentFuture,
|
||||
) (objectId string, objectDetails *types.Struct, err error) {
|
||||
if details == nil || details.Fields == nil {
|
||||
return "", nil, fmt.Errorf("empty details")
|
||||
}
|
||||
|
|
|
@ -1,15 +1,118 @@
|
|||
package bookmark
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/gogo/protobuf/types"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/mock"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/state"
|
||||
"github.com/anyproto/anytype-heart/core/block/object/objectcreator/mock_objectcreator"
|
||||
"github.com/anyproto/anytype-heart/core/block/simple/bookmark"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/core/session"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
"github.com/anyproto/anytype-heart/space/clientspace/mock_clientspace"
|
||||
"github.com/anyproto/anytype-heart/space/mock_space"
|
||||
"github.com/anyproto/anytype-heart/util/linkpreview/mock_linkpreview"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
)
|
||||
|
||||
const (
|
||||
spaceId = "space1"
|
||||
bookmarkId = "ot-bookmark"
|
||||
)
|
||||
|
||||
type detailsSetter struct{}
|
||||
|
||||
func (ds *detailsSetter) SetDetails(session.Context, string, []*model.Detail) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
type fixture struct {
|
||||
s *service
|
||||
|
||||
creator *mock_objectcreator.MockService
|
||||
space *mock_clientspace.MockSpace
|
||||
spaceService *mock_space.MockService
|
||||
store *objectstore.StoreFixture
|
||||
}
|
||||
|
||||
func newFixture(t *testing.T) *fixture {
|
||||
spc := mock_clientspace.NewMockSpace(t)
|
||||
spc.EXPECT().GetTypeIdByKey(mock.Anything, bundle.TypeKeyBookmark).Return(bookmarkId, nil).Once()
|
||||
spaceSvc := mock_space.NewMockService(t)
|
||||
spaceSvc.EXPECT().Get(mock.Anything, spaceId).Return(spc, nil).Once()
|
||||
|
||||
store := objectstore.NewStoreFixture(t)
|
||||
creator := mock_objectcreator.NewMockService(t)
|
||||
|
||||
s := &service{
|
||||
detailsSetter: &detailsSetter{},
|
||||
creator: creator,
|
||||
store: store,
|
||||
spaceService: spaceSvc,
|
||||
}
|
||||
|
||||
return &fixture{
|
||||
s: s,
|
||||
creator: creator,
|
||||
space: spc,
|
||||
spaceService: spaceSvc,
|
||||
store: store,
|
||||
}
|
||||
}
|
||||
|
||||
func TestService_CreateBookmarkObject(t *testing.T) {
|
||||
t.Run("new bookmark object creation", func(t *testing.T) {
|
||||
// given
|
||||
fx := newFixture(t)
|
||||
details := &types.Struct{Fields: map[string]*types.Value{}}
|
||||
fx.creator.EXPECT().CreateSmartBlockFromState(mock.Anything, mock.Anything, mock.Anything, mock.Anything).RunAndReturn(
|
||||
func(_ context.Context, spcId string, keys []domain.TypeKey, state *state.State) (string, *types.Struct, error) {
|
||||
assert.Equal(t, spaceId, spcId)
|
||||
assert.Equal(t, []domain.TypeKey{bundle.TypeKeyBookmark}, keys)
|
||||
assert.Equal(t, details, state.Details())
|
||||
|
||||
return "some_id", nil, nil
|
||||
},
|
||||
).Once()
|
||||
|
||||
// when
|
||||
_, _, err := fx.s.CreateBookmarkObject(nil, spaceId, details, func() *bookmark.ObjectContent { return nil })
|
||||
|
||||
// then
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("bookmark with existing url is created", func(t *testing.T) {
|
||||
// given
|
||||
fx := newFixture(t)
|
||||
url := "https://url.com"
|
||||
details := &types.Struct{Fields: map[string]*types.Value{
|
||||
bundle.RelationKeySource.String(): pbtypes.String(url),
|
||||
}}
|
||||
fx.store.AddObjects(t, []objectstore.TestObject{{
|
||||
bundle.RelationKeyId: pbtypes.String("bk"),
|
||||
bundle.RelationKeySource: pbtypes.String(url),
|
||||
bundle.RelationKeyType: pbtypes.String(bookmarkId),
|
||||
}})
|
||||
|
||||
// when
|
||||
id, _, err := fx.s.CreateBookmarkObject(nil, spaceId, details, func() *bookmark.ObjectContent {
|
||||
return &bookmark.ObjectContent{BookmarkContent: &model.BlockContentBookmark{}}
|
||||
})
|
||||
|
||||
// then
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "bk", id)
|
||||
})
|
||||
}
|
||||
|
||||
func TestService_FetchBookmarkContent(t *testing.T) {
|
||||
t.Run("link to html page - create blocks", func(t *testing.T) {
|
||||
// given
|
||||
|
|
|
@ -101,7 +101,7 @@ func (s *Service) updateCollection(ctx session.Context, contextID string, modifi
|
|||
s.UpdateStoreSlice(template.CollectionStoreKey, lst)
|
||||
internalflag.Set{}.AddToState(s)
|
||||
return nil
|
||||
})
|
||||
}, smartblock.KeepInternalFlags)
|
||||
}
|
||||
|
||||
func (s *Service) collectionAddHookOnce(sb smartblock.SmartBlock) {
|
||||
|
|
125
core/block/details.go
Normal file
125
core/block/details.go
Normal file
|
@ -0,0 +1,125 @@
|
|||
package block
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"slices"
|
||||
|
||||
"github.com/gogo/protobuf/types"
|
||||
"github.com/samber/lo"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block/cache"
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/basic"
|
||||
"github.com/anyproto/anytype-heart/core/session"
|
||||
"github.com/anyproto/anytype-heart/pb"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
"github.com/anyproto/anytype-heart/util/slice"
|
||||
)
|
||||
|
||||
func (s *Service) SetDetails(ctx session.Context, objectId string, details []*model.Detail) (err error) {
|
||||
return cache.Do(s, objectId, func(b basic.DetailsSettable) error {
|
||||
return b.SetDetails(ctx, details, true)
|
||||
})
|
||||
}
|
||||
|
||||
func (s *Service) SetDetailsList(ctx session.Context, objectIds []string, details []*model.Detail) (err error) {
|
||||
var (
|
||||
resultError error
|
||||
anySucceed bool
|
||||
)
|
||||
for _, objectId := range objectIds {
|
||||
err := s.SetDetails(ctx, objectId, details)
|
||||
if err != nil {
|
||||
resultError = errors.Join(resultError, err)
|
||||
} else {
|
||||
anySucceed = true
|
||||
}
|
||||
}
|
||||
if resultError != nil {
|
||||
log.Warnf("SetDetailsList: %v", resultError)
|
||||
}
|
||||
if anySucceed {
|
||||
return nil
|
||||
}
|
||||
return resultError
|
||||
}
|
||||
|
||||
// ModifyDetails performs details get and update under the sb lock to make sure no modifications are done in the middle
|
||||
func (s *Service) ModifyDetails(objectId string, modifier func(current *types.Struct) (*types.Struct, error)) (err error) {
|
||||
return cache.Do(s, objectId, func(du basic.DetailsUpdatable) error {
|
||||
return du.UpdateDetails(modifier)
|
||||
})
|
||||
}
|
||||
|
||||
func (s *Service) ModifyDetailsList(req *pb.RpcObjectListModifyDetailValuesRequest) (resultError error) {
|
||||
var anySucceed bool
|
||||
for _, objectId := range req.ObjectIds {
|
||||
err := s.ModifyDetails(objectId, func(current *types.Struct) (*types.Struct, error) {
|
||||
for _, op := range req.Operations {
|
||||
if !pbtypes.IsEmptyValue(op.Set) {
|
||||
// Set operation has higher priority than Add and Remove, because it modifies full value
|
||||
current.Fields[op.RelationKey] = op.Set
|
||||
continue
|
||||
}
|
||||
addValueToListDetail(current, op.RelationKey, op.Add)
|
||||
removeValueFromListDetail(current, op.RelationKey, op.Remove)
|
||||
}
|
||||
return current, nil
|
||||
})
|
||||
if err != nil {
|
||||
resultError = errors.Join(resultError, err)
|
||||
} else {
|
||||
anySucceed = true
|
||||
}
|
||||
}
|
||||
if resultError != nil {
|
||||
log.Warnf("ModifyDetailsList: %v", resultError)
|
||||
}
|
||||
if anySucceed {
|
||||
return nil
|
||||
}
|
||||
return resultError
|
||||
}
|
||||
|
||||
// addValueToListDetail adds values to int lists and string lists
|
||||
func addValueToListDetail(s *types.Struct, key string, v *types.Value) {
|
||||
if pbtypes.IsStructEmpty(s) || v == nil {
|
||||
return
|
||||
}
|
||||
toAdd := pbtypes.GetList(v)
|
||||
oldValues := pbtypes.GetValueList(s, key)
|
||||
newValues := slice.MergeUniqBy(oldValues, toAdd, func(this *types.Value, that *types.Value) bool {
|
||||
return this.Equal(that)
|
||||
})
|
||||
s.Fields[key] = &types.Value{
|
||||
Kind: &types.Value_ListValue{ListValue: &types.ListValue{Values: newValues}},
|
||||
}
|
||||
}
|
||||
|
||||
// removeValueFromListDetail removes values from int lists and string lists
|
||||
func removeValueFromListDetail(s *types.Struct, key string, v *types.Value) {
|
||||
if pbtypes.IsStructEmpty(s) || v == nil {
|
||||
return
|
||||
}
|
||||
value := pbtypes.Get(s, key)
|
||||
if value == nil {
|
||||
return
|
||||
}
|
||||
if value.Equal(v) {
|
||||
delete(s.Fields, key)
|
||||
return
|
||||
}
|
||||
oldValues := pbtypes.GetList(value)
|
||||
if len(oldValues) == 0 {
|
||||
return
|
||||
}
|
||||
toDelete := pbtypes.GetList(v)
|
||||
newValues := lo.Filter(oldValues, func(oldValue *types.Value, _ int) bool {
|
||||
return !slices.ContainsFunc(toDelete, func(valueToDelete *types.Value) bool {
|
||||
return oldValue.Equal(valueToDelete)
|
||||
})
|
||||
})
|
||||
s.Fields[key] = &types.Value{
|
||||
Kind: &types.Value_ListValue{ListValue: &types.ListValue{Values: newValues}},
|
||||
}
|
||||
}
|
71
core/block/details_test.go
Normal file
71
core/block/details_test.go
Normal file
|
@ -0,0 +1,71 @@
|
|||
package block
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/gogo/protobuf/types"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
)
|
||||
|
||||
func newStruct() *types.Struct {
|
||||
return &types.Struct{Fields: map[string]*types.Value{
|
||||
"tag": pbtypes.StringList([]string{"red", "black"}),
|
||||
"author": pbtypes.String("William Shakespeare"),
|
||||
"haters": pbtypes.StringList([]string{}),
|
||||
"year": pbtypes.Int64(1564),
|
||||
"numbers": pbtypes.IntList(8, 13, 21, 34),
|
||||
}}
|
||||
}
|
||||
|
||||
func TestAddValueToListDetail(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
key string
|
||||
s *types.Struct
|
||||
toAdd *types.Value
|
||||
expected *types.Value
|
||||
}{
|
||||
{"string list + string list", "tag", newStruct(), pbtypes.StringList([]string{"blue", "green"}), pbtypes.StringList([]string{"red", "black", "blue", "green"})},
|
||||
{"string list + string list (intersect)", "tag", newStruct(), pbtypes.StringList([]string{"blue", "black"}), pbtypes.StringList([]string{"red", "black", "blue"})},
|
||||
{"string + string list", "author", newStruct(), pbtypes.StringList([]string{"Victor Hugo"}), pbtypes.StringList([]string{"William Shakespeare", "Victor Hugo"})},
|
||||
{"string list + string", "tag", newStruct(), pbtypes.String("orange"), pbtypes.StringList([]string{"red", "black", "orange"})},
|
||||
{"int list + int list", "numbers", newStruct(), pbtypes.IntList(55, 89), pbtypes.IntList(8, 13, 21, 34, 55, 89)},
|
||||
{"int list + int list (intersect)", "numbers", newStruct(), pbtypes.IntList(13, 8, 55), pbtypes.IntList(8, 13, 21, 34, 55)},
|
||||
{"int + int list", "year", newStruct(), pbtypes.IntList(1666, 2025), pbtypes.IntList(1564, 1666, 2025)},
|
||||
{"int list + int", "numbers", newStruct(), pbtypes.Int64(55), pbtypes.IntList(8, 13, 21, 34, 55)},
|
||||
{"string list + empty", "haters", newStruct(), pbtypes.StringList([]string{"Tomas River", "Leo Tolstoy"}), pbtypes.StringList([]string{"Tomas River", "Leo Tolstoy"})},
|
||||
{"string list + no such key", "plays", newStruct(), pbtypes.StringList([]string{"Falstaff", "Romeo and Juliet", "Macbeth"}), pbtypes.StringList([]string{"Falstaff", "Romeo and Juliet", "Macbeth"})},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
addValueToListDetail(tc.s, tc.key, tc.toAdd)
|
||||
assert.True(t, pbtypes.Get(tc.s, tc.key).Equal(tc.expected))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestRemoveValueFromListDetail(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
key string
|
||||
s *types.Struct
|
||||
toRemove *types.Value
|
||||
expected *types.Value
|
||||
}{
|
||||
{"string list - string list", "tag", newStruct(), pbtypes.StringList([]string{"red", "black"}), nil},
|
||||
{"string list - string list (some are not presented)", "tag", newStruct(), pbtypes.StringList([]string{"blue", "black"}), pbtypes.StringList([]string{"red"})},
|
||||
{"string list - string", "tag", newStruct(), pbtypes.String("red"), pbtypes.StringList([]string{"black"})},
|
||||
{"string - string list", "author", newStruct(), pbtypes.StringList([]string{"William Shakespeare"}), pbtypes.StringList([]string{})},
|
||||
{"int list - int list", "numbers", newStruct(), pbtypes.IntList(13, 34), pbtypes.IntList(8, 21)},
|
||||
{"int list - int list (some are not presented)", "numbers", newStruct(), pbtypes.IntList(2020, 5), pbtypes.IntList(8, 13, 21, 34)},
|
||||
{"int - int list", "year", newStruct(), pbtypes.IntList(1380, 1564), pbtypes.IntList()},
|
||||
{"int list - int", "numbers", newStruct(), pbtypes.Int64(21), pbtypes.IntList(8, 13, 34)},
|
||||
{"empty - string list", "haters", newStruct(), pbtypes.StringList([]string{"Tomas River", "Leo Tolstoy"}), pbtypes.StringList([]string{})},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
removeValueFromListDetail(tc.s, tc.key, tc.toRemove)
|
||||
assert.True(t, pbtypes.Get(tc.s, tc.key).Equal(tc.expected))
|
||||
})
|
||||
}
|
||||
}
|
|
@ -2,7 +2,6 @@ package block
|
|||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/gogo/protobuf/types"
|
||||
|
@ -144,34 +143,6 @@ func (s *Service) SetFields(ctx session.Context, req pb.RpcBlockSetFieldsRequest
|
|||
})
|
||||
}
|
||||
|
||||
func (s *Service) SetDetails(ctx session.Context, objectId string, details []*model.Detail) (err error) {
|
||||
return cache.Do(s, objectId, func(b basic.DetailsSettable) error {
|
||||
return b.SetDetails(ctx, details, true)
|
||||
})
|
||||
}
|
||||
|
||||
func (s *Service) SetDetailsList(ctx session.Context, objectIds []string, details []*model.Detail) (err error) {
|
||||
var (
|
||||
resultError error
|
||||
anySucceed bool
|
||||
)
|
||||
for _, objectId := range objectIds {
|
||||
err := s.SetDetails(ctx, objectId, details)
|
||||
if err != nil {
|
||||
resultError = errors.Join(resultError, err)
|
||||
} else {
|
||||
anySucceed = true
|
||||
}
|
||||
}
|
||||
if resultError != nil {
|
||||
log.Warnf("SetDetailsList: %v", resultError)
|
||||
}
|
||||
if anySucceed {
|
||||
return nil
|
||||
}
|
||||
return resultError
|
||||
}
|
||||
|
||||
func (s *Service) SetFieldsList(ctx session.Context, req pb.RpcBlockListSetFieldsRequest) (err error) {
|
||||
return cache.Do(s, req.ContextId, func(b basic.CommonOperations) error {
|
||||
return b.SetFields(ctx, req.BlockFields...)
|
||||
|
@ -632,13 +603,6 @@ func (s *Service) GetRelations(ctx session.Context, objectId string) (relations
|
|||
return
|
||||
}
|
||||
|
||||
// ModifyDetails performs details get and update under the sb lock to make sure no modifications are done in the middle
|
||||
func (s *Service) ModifyDetails(objectId string, modifier func(current *types.Struct) (*types.Struct, error)) (err error) {
|
||||
return cache.Do(s, objectId, func(du basic.DetailsUpdatable) error {
|
||||
return du.UpdateDetails(modifier)
|
||||
})
|
||||
}
|
||||
|
||||
func (s *Service) AddExtraRelations(ctx session.Context, objectId string, relationIds []string) (err error) {
|
||||
if len(relationIds) == 0 {
|
||||
return nil
|
||||
|
|
|
@ -23,6 +23,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/logging"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
"github.com/anyproto/anytype-heart/util/internalflag"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
"github.com/anyproto/anytype-heart/util/slice"
|
||||
)
|
||||
|
@ -84,10 +85,15 @@ func (d *sdataview) SetSource(ctx session.Context, blockId string, source []stri
|
|||
return
|
||||
}
|
||||
|
||||
flags := internalflag.NewFromState(s)
|
||||
// set with source is no longer empty
|
||||
flags.Remove(model.InternalFlag_editorDeleteEmpty)
|
||||
flags.AddToState(s)
|
||||
|
||||
if len(source) == 0 {
|
||||
s.Unlink(blockId)
|
||||
s.SetLocalDetail(bundle.RelationKeySetOf.String(), pbtypes.StringList(source))
|
||||
return d.Apply(s, smartblock.NoRestrictions)
|
||||
return d.Apply(s, smartblock.NoRestrictions, smartblock.KeepInternalFlags)
|
||||
}
|
||||
|
||||
dvContent, err := BlockBySource(d.objectStore, source)
|
||||
|
@ -105,7 +111,7 @@ func (d *sdataview) SetSource(ctx session.Context, blockId string, source []stri
|
|||
}
|
||||
|
||||
s.SetLocalDetail(bundle.RelationKeySetOf.String(), pbtypes.StringList(source))
|
||||
return d.Apply(s, smartblock.NoRestrictions)
|
||||
return d.Apply(s, smartblock.NoRestrictions, smartblock.KeepInternalFlags)
|
||||
}
|
||||
|
||||
func (d *sdataview) AddRelations(ctx session.Context, blockId string, relationKeys []string, showEvent bool) error {
|
||||
|
|
|
@ -86,12 +86,13 @@ func (f *File) Init(ctx *smartblock.InitContext) error {
|
|||
f.SmartBlock.AddHook(f.reconciler.FileObjectHook(domain.FullID{SpaceID: f.SpaceID(), ObjectID: f.Id()}), smartblock.HookBeforeApply)
|
||||
|
||||
if !ctx.IsNewObject {
|
||||
err = f.fileObjectService.EnsureFileAddedToSyncQueue(domain.FullID{ObjectID: f.Id(), SpaceID: f.SpaceID()}, ctx.State.Details())
|
||||
fullId := domain.FullID{ObjectID: f.Id(), SpaceID: f.SpaceID()}
|
||||
err = f.fileObjectService.EnsureFileAddedToSyncQueue(fullId, ctx.State.Details())
|
||||
if err != nil {
|
||||
log.Errorf("failed to ensure file added to sync queue: %v", err)
|
||||
}
|
||||
f.AddHook(func(applyInfo smartblock.ApplyInfo) error {
|
||||
return f.fileObjectService.EnsureFileAddedToSyncQueue(domain.FullID{ObjectID: f.Id(), SpaceID: f.SpaceID()}, applyInfo.State.Details())
|
||||
return f.fileObjectService.EnsureFileAddedToSyncQueue(fullId, applyInfo.State.Details())
|
||||
}, smartblock.HookOnStateRebuild)
|
||||
}
|
||||
return nil
|
||||
|
|
|
@ -1,14 +1,9 @@
|
|||
package smartblock
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/samber/lo"
|
||||
|
||||
"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/object/objectlink"
|
||||
"github.com/anyproto/anytype-heart/core/block/simple"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/pb"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
|
@ -27,86 +22,21 @@ func (sb *smartBlock) updateBackLinks(s *state.State) {
|
|||
}
|
||||
|
||||
func (sb *smartBlock) injectLinksDetails(s *state.State) {
|
||||
links := sb.navigationalLinks(s)
|
||||
links := objectlink.DependentObjectIDs(s, sb.Space(), objectlink.Flags{
|
||||
Blocks: true,
|
||||
Details: true,
|
||||
Relations: sb.includeRelationObjectsAsDependents,
|
||||
Types: false,
|
||||
Collection: !internalflag.NewFromState(s).Has(model.InternalFlag_collectionDontIndexLinks),
|
||||
DataviewBlockOnlyTarget: true,
|
||||
NoSystemRelations: true,
|
||||
NoHiddenBundledRelations: true,
|
||||
NoImages: true,
|
||||
})
|
||||
links = slice.RemoveMut(links, sb.Id())
|
||||
s.SetLocalDetail(bundle.RelationKeyLinks.String(), pbtypes.StringList(links))
|
||||
}
|
||||
|
||||
func (sb *smartBlock) navigationalLinks(s *state.State) (ids []string) {
|
||||
if !internalflag.NewFromState(s).Has(model.InternalFlag_collectionDontIndexLinks) {
|
||||
// flag used when importing a large set of objects
|
||||
ids = append(ids, s.GetStoreSlice(template.CollectionStoreKey)...)
|
||||
}
|
||||
|
||||
ids = append(ids, collectBlockLinks(s)...)
|
||||
ids = append(ids, sb.collectRelationLinks(s)...)
|
||||
|
||||
return lo.Uniq(ids)
|
||||
}
|
||||
|
||||
func collectBlockLinks(s *state.State) (ids []string) {
|
||||
err := s.Iterate(func(b simple.Block) (isContinue bool) {
|
||||
if f := b.Model().GetFile(); f != nil {
|
||||
if f.TargetObjectId != "" && f.Type != model.BlockContentFile_Image {
|
||||
ids = append(ids, f.TargetObjectId)
|
||||
}
|
||||
return true
|
||||
}
|
||||
// Include only link to target object
|
||||
if dv := b.Model().GetDataview(); dv != nil {
|
||||
if dv.TargetObjectId != "" {
|
||||
ids = append(ids, dv.TargetObjectId)
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
if ls, ok := b.(linkSource); ok {
|
||||
ids = ls.FillSmartIds(ids)
|
||||
}
|
||||
return true
|
||||
})
|
||||
if err != nil {
|
||||
log.With("objectID", s.RootId()).Errorf("failed to iterate over simple blocks: %s", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (sb *smartBlock) collectRelationLinks(s *state.State) (ids []string) {
|
||||
det := s.CombinedDetails()
|
||||
includeRelations := sb.includeRelationObjectsAsDependents
|
||||
|
||||
for _, rel := range s.GetRelationLinks() {
|
||||
if includeRelations {
|
||||
relId, err := sb.space.GetRelationIdByKey(context.TODO(), domain.RelationKey(rel.Key))
|
||||
if err != nil {
|
||||
log.With("objectID", s.RootId()).Errorf("failed to derive object id for relation: %s", err)
|
||||
continue
|
||||
}
|
||||
ids = append(ids, relId)
|
||||
}
|
||||
|
||||
// handle corner cases: first for specific formats and system relations
|
||||
if rel.Format != model.RelationFormat_object || bundle.IsSystemRelation(domain.RelationKey(rel.Key)) {
|
||||
continue
|
||||
}
|
||||
|
||||
// Do not include hidden relations. Only bundled relations can be hidden, so we don't need
|
||||
// to request relations from object store.
|
||||
if r, err := bundle.GetRelation(domain.RelationKey(rel.Key)); err == nil && r.Hidden {
|
||||
continue
|
||||
}
|
||||
|
||||
// Add all object relation values as dependents
|
||||
for _, targetID := range pbtypes.GetStringList(det, rel.Key) {
|
||||
if targetID != "" {
|
||||
ids = append(ids, targetID)
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func isBacklinksChanged(msgs []simple.EventMessage) bool {
|
||||
for _, msg := range msgs {
|
||||
if amend, ok := msg.Msg.Value.(*pb.EventMessageValueOfObjectDetailsAmend); ok {
|
||||
|
|
|
@ -543,7 +543,13 @@ func (sb *smartBlock) onMetaChange(details *types.Struct) {
|
|||
|
||||
// dependentSmartIds returns list of dependent objects in this order: Simple blocks(Link, mentions in Text), Relations. Both of them are returned in the order of original blocks/relations
|
||||
func (sb *smartBlock) dependentSmartIds(includeRelations, includeObjTypes, includeCreatorModifier bool) (ids []string) {
|
||||
return objectlink.DependentObjectIDs(sb.Doc.(*state.State), sb.Space(), true, true, includeRelations, includeObjTypes, includeCreatorModifier)
|
||||
return objectlink.DependentObjectIDs(sb.Doc.(*state.State), sb.Space(), objectlink.Flags{
|
||||
Blocks: true,
|
||||
Details: true,
|
||||
Relations: includeRelations,
|
||||
Types: includeObjTypes,
|
||||
CreatorModifierWorkspace: includeCreatorModifier,
|
||||
})
|
||||
}
|
||||
|
||||
func (sb *smartBlock) RegisterSession(ctx session.Context) {
|
||||
|
|
|
@ -87,11 +87,15 @@ func handleDataviewBlock(block simple.Block, oldIDtoNew map[string]string, st *s
|
|||
for _, view := range dataView.GetViews() {
|
||||
for _, filter := range view.GetFilters() {
|
||||
updateObjectIDsInFilter(filter, oldIDtoNew)
|
||||
updateRelationKeyInFilter(oldIDtoNew, filter)
|
||||
}
|
||||
|
||||
if view.DefaultTemplateId != "" {
|
||||
view.DefaultTemplateId = oldIDtoNew[view.DefaultTemplateId]
|
||||
}
|
||||
|
||||
updateRelationsInView(view, oldIDtoNew)
|
||||
updateSortsInView(view, oldIDtoNew)
|
||||
}
|
||||
for _, group := range dataView.GetGroupOrders() {
|
||||
for _, vg := range group.ViewGroups {
|
||||
|
@ -107,6 +111,37 @@ func handleDataviewBlock(block simple.Block, oldIDtoNew map[string]string, st *s
|
|||
}
|
||||
}
|
||||
}
|
||||
updateRelationsLinksInView(dataView, oldIDtoNew)
|
||||
}
|
||||
|
||||
func updateSortsInView(view *model.BlockContentDataviewView, oldIDtoNew map[string]string) {
|
||||
for _, sort := range view.GetSorts() {
|
||||
if newKey, ok := oldIDtoNew[sort.RelationKey]; ok && sort.RelationKey != newKey {
|
||||
sort.RelationKey = newKey
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func updateRelationsLinksInView(dataView *model.BlockContentDataview, oldIDtoNew map[string]string) {
|
||||
for _, relationLink := range dataView.GetRelationLinks() {
|
||||
if newKey, ok := oldIDtoNew[relationLink.Key]; ok && relationLink.Key != newKey {
|
||||
relationLink.Key = newKey
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func updateRelationsInView(view *model.BlockContentDataviewView, oldIDtoNew map[string]string) {
|
||||
for _, relation := range view.Relations {
|
||||
if newKey, ok := oldIDtoNew[relation.Key]; ok && relation.Key != newKey {
|
||||
relation.Key = newKey
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func updateRelationKeyInFilter(oldIDtoNew map[string]string, filter *model.BlockContentDataviewFilter) {
|
||||
if newKey, ok := oldIDtoNew[filter.RelationKey]; ok && filter.RelationKey != newKey {
|
||||
filter.RelationKey = newKey
|
||||
}
|
||||
}
|
||||
|
||||
func updateObjectIDsInFilter(filter *model.BlockContentDataviewFilter, oldIDtoNew map[string]string) {
|
||||
|
|
|
@ -10,6 +10,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/core/block/simple"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/localstore/addr"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
)
|
||||
|
||||
func TestReplaceChunks(t *testing.T) {
|
||||
|
@ -165,4 +166,192 @@ func TestUpdateLinksToObjects(t *testing.T) {
|
|||
assert.Nil(t, err)
|
||||
assert.Equal(t, "url", st.Get("test").Model().GetText().GetIconImage())
|
||||
})
|
||||
t.Run("update data view filters relations", func(t *testing.T) {
|
||||
// given
|
||||
block := &model.Block{
|
||||
Id: "test",
|
||||
Content: &model.BlockContentOfDataview{Dataview: &model.BlockContentDataview{
|
||||
Views: []*model.BlockContentDataviewView{
|
||||
{
|
||||
Id: "id",
|
||||
Filters: []*model.BlockContentDataviewFilter{
|
||||
{
|
||||
Id: "id1",
|
||||
RelationKey: "key",
|
||||
Value: pbtypes.String("test"),
|
||||
},
|
||||
{
|
||||
Id: "id1",
|
||||
RelationKey: "key1",
|
||||
Value: pbtypes.String("test"),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}},
|
||||
}
|
||||
rootBlock := &model.Block{
|
||||
Id: "root",
|
||||
ChildrenIds: []string{"test"},
|
||||
Content: &model.BlockContentOfSmartblock{Smartblock: &model.BlockContentSmartblock{}},
|
||||
}
|
||||
simpleBlock := simple.New(block)
|
||||
rootSimpleBlock := simple.New(rootBlock)
|
||||
st := state.NewDoc("root", map[string]simple.Block{"test": simpleBlock, "root": rootSimpleBlock}).(*state.State)
|
||||
|
||||
// when
|
||||
err := UpdateLinksToObjects(st, map[string]string{"key": "newKey"})
|
||||
|
||||
// then
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "newKey", st.Get("test").Model().GetDataview().GetViews()[0].GetFilters()[0].RelationKey)
|
||||
assert.Equal(t, "key1", st.Get("test").Model().GetDataview().GetViews()[0].GetFilters()[1].RelationKey)
|
||||
})
|
||||
t.Run("update data view filters relations", func(t *testing.T) {
|
||||
// given
|
||||
block := &model.Block{
|
||||
Id: "test",
|
||||
Content: &model.BlockContentOfDataview{Dataview: &model.BlockContentDataview{
|
||||
Views: []*model.BlockContentDataviewView{
|
||||
{
|
||||
Id: "id",
|
||||
Filters: []*model.BlockContentDataviewFilter{
|
||||
{
|
||||
Id: "id1",
|
||||
RelationKey: "key",
|
||||
Value: pbtypes.String("test"),
|
||||
},
|
||||
{
|
||||
Id: "id1",
|
||||
RelationKey: "key1",
|
||||
Value: pbtypes.String("test"),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}},
|
||||
}
|
||||
rootBlock := &model.Block{
|
||||
Id: "root",
|
||||
ChildrenIds: []string{"test"},
|
||||
Content: &model.BlockContentOfSmartblock{Smartblock: &model.BlockContentSmartblock{}},
|
||||
}
|
||||
simpleBlock := simple.New(block)
|
||||
rootSimpleBlock := simple.New(rootBlock)
|
||||
st := state.NewDoc("root", map[string]simple.Block{"test": simpleBlock, "root": rootSimpleBlock}).(*state.State)
|
||||
|
||||
// when
|
||||
err := UpdateLinksToObjects(st, map[string]string{"key": "newKey"})
|
||||
|
||||
// then
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "newKey", st.Get("test").Model().GetDataview().GetViews()[0].GetFilters()[0].RelationKey)
|
||||
assert.Equal(t, "key1", st.Get("test").Model().GetDataview().GetViews()[0].GetFilters()[1].RelationKey)
|
||||
})
|
||||
t.Run("update data view relations", func(t *testing.T) {
|
||||
// given
|
||||
block := &model.Block{
|
||||
Id: "test",
|
||||
Content: &model.BlockContentOfDataview{Dataview: &model.BlockContentDataview{
|
||||
Views: []*model.BlockContentDataviewView{
|
||||
{
|
||||
Id: "id",
|
||||
Relations: []*model.BlockContentDataviewRelation{
|
||||
{
|
||||
Key: "key",
|
||||
},
|
||||
{
|
||||
Key: "key1",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}},
|
||||
}
|
||||
rootBlock := &model.Block{
|
||||
Id: "root",
|
||||
ChildrenIds: []string{"test"},
|
||||
Content: &model.BlockContentOfSmartblock{Smartblock: &model.BlockContentSmartblock{}},
|
||||
}
|
||||
simpleBlock := simple.New(block)
|
||||
rootSimpleBlock := simple.New(rootBlock)
|
||||
st := state.NewDoc("root", map[string]simple.Block{"test": simpleBlock, "root": rootSimpleBlock}).(*state.State)
|
||||
|
||||
// when
|
||||
err := UpdateLinksToObjects(st, map[string]string{"key": "newKey"})
|
||||
|
||||
// then
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "newKey", st.Get("test").Model().GetDataview().GetViews()[0].GetRelations()[0].Key)
|
||||
assert.Equal(t, "key1", st.Get("test").Model().GetDataview().GetViews()[0].GetRelations()[1].Key)
|
||||
})
|
||||
t.Run("update data view relations links", func(t *testing.T) {
|
||||
// given
|
||||
block := &model.Block{
|
||||
Id: "test",
|
||||
Content: &model.BlockContentOfDataview{Dataview: &model.BlockContentDataview{
|
||||
RelationLinks: []*model.RelationLink{
|
||||
{
|
||||
Key: "key",
|
||||
},
|
||||
{
|
||||
Key: "key1",
|
||||
},
|
||||
},
|
||||
}},
|
||||
}
|
||||
rootBlock := &model.Block{
|
||||
Id: "root",
|
||||
ChildrenIds: []string{"test"},
|
||||
Content: &model.BlockContentOfSmartblock{Smartblock: &model.BlockContentSmartblock{}},
|
||||
}
|
||||
simpleBlock := simple.New(block)
|
||||
rootSimpleBlock := simple.New(rootBlock)
|
||||
st := state.NewDoc("root", map[string]simple.Block{"test": simpleBlock, "root": rootSimpleBlock}).(*state.State)
|
||||
|
||||
// when
|
||||
err := UpdateLinksToObjects(st, map[string]string{"key": "newKey"})
|
||||
|
||||
// then
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "newKey", st.Get("test").Model().GetDataview().GetRelationLinks()[0].Key)
|
||||
assert.Equal(t, "key1", st.Get("test").Model().GetDataview().GetRelationLinks()[1].Key)
|
||||
})
|
||||
t.Run("update data view sort", func(t *testing.T) {
|
||||
// given
|
||||
block := &model.Block{
|
||||
Id: "test",
|
||||
Content: &model.BlockContentOfDataview{Dataview: &model.BlockContentDataview{
|
||||
Views: []*model.BlockContentDataviewView{
|
||||
{
|
||||
Id: "id",
|
||||
Sorts: []*model.BlockContentDataviewSort{
|
||||
{
|
||||
RelationKey: "key",
|
||||
},
|
||||
{
|
||||
RelationKey: "key1",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}},
|
||||
}
|
||||
rootBlock := &model.Block{
|
||||
Id: "root",
|
||||
ChildrenIds: []string{"test"},
|
||||
Content: &model.BlockContentOfSmartblock{Smartblock: &model.BlockContentSmartblock{}},
|
||||
}
|
||||
simpleBlock := simple.New(block)
|
||||
rootSimpleBlock := simple.New(rootBlock)
|
||||
st := state.NewDoc("root", map[string]simple.Block{"test": simpleBlock, "root": rootSimpleBlock}).(*state.State)
|
||||
|
||||
// when
|
||||
err := UpdateLinksToObjects(st, map[string]string{"key": "newKey"})
|
||||
|
||||
// then
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "newKey", st.Get("test").Model().GetDataview().GetViews()[0].GetSorts()[0].RelationKey)
|
||||
assert.Equal(t, "key1", st.Get("test").Model().GetDataview().GetViews()[0].GetSorts()[1].RelationKey)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ import (
|
|||
|
||||
var log = logging.Logger("import")
|
||||
|
||||
// Service incapsulate logic with creation of given smartblocks
|
||||
// Service encapsulate logic with creation of given smartblocks
|
||||
type Service interface {
|
||||
//nolint:lll
|
||||
Create(dataObject *DataObject, sn *common.Snapshot) (*types.Struct, string, error)
|
||||
|
@ -85,7 +85,6 @@ func (oc *ObjectCreator) Create(dataObject *DataObject, sn *common.Snapshot) (*t
|
|||
origin := dataObject.origin
|
||||
spaceID := dataObject.spaceID
|
||||
|
||||
var err error
|
||||
newID := oldIDtoNew[sn.Id]
|
||||
|
||||
if sn.SbType == coresb.SmartBlockTypeFile {
|
||||
|
@ -98,7 +97,10 @@ func (oc *ObjectCreator) Create(dataObject *DataObject, sn *common.Snapshot) (*t
|
|||
st := state.NewDocFromSnapshot(newID, sn.Snapshot, state.WithUniqueKeyMigration(sn.SbType)).(*state.State)
|
||||
st.SetLocalDetail(bundle.RelationKeyLastModifiedDate.String(), pbtypes.Int64(pbtypes.GetInt64(snapshot.Details, bundle.RelationKeyLastModifiedDate.String())))
|
||||
|
||||
var filesToDelete []string
|
||||
var (
|
||||
filesToDelete []string
|
||||
err error
|
||||
)
|
||||
defer func() {
|
||||
// delete file in ipfs if there is error after creation
|
||||
oc.onFinish(err, st, filesToDelete)
|
||||
|
@ -540,9 +542,8 @@ func (oc *ObjectCreator) getExistingWidgetsTargetIDs(oldState *state.State) (map
|
|||
|
||||
func (oc *ObjectCreator) updateKeys(st *state.State, oldIDtoNew map[string]string) {
|
||||
for key, value := range st.Details().GetFields() {
|
||||
if newKey, ok := oldIDtoNew[key]; ok {
|
||||
st.SetDetail(newKey, value)
|
||||
st.RemoveRelation(key)
|
||||
if newKey, ok := oldIDtoNew[key]; ok && newKey != key {
|
||||
oc.updateDetails(st, newKey, value, key)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -550,3 +551,24 @@ func (oc *ObjectCreator) updateKeys(st *state.State, oldIDtoNew map[string]strin
|
|||
st.SetObjectTypeKey(domain.TypeKey(newKey))
|
||||
}
|
||||
}
|
||||
|
||||
func (oc *ObjectCreator) updateDetails(st *state.State, newKey string, value *types.Value, key string) {
|
||||
st.SetDetail(newKey, value)
|
||||
link := oc.findRelationLinkByKey(st, key)
|
||||
if link != nil {
|
||||
link.Key = newKey
|
||||
st.AddRelationLinks(link)
|
||||
}
|
||||
st.RemoveRelation(key)
|
||||
}
|
||||
|
||||
func (oc *ObjectCreator) findRelationLinkByKey(st *state.State, key string) *model.RelationLink {
|
||||
relationLinks := st.GetRelationLinks()
|
||||
var link *model.RelationLink
|
||||
for _, link = range relationLinks {
|
||||
if link.Key == key {
|
||||
break
|
||||
}
|
||||
}
|
||||
return link
|
||||
}
|
||||
|
|
|
@ -95,12 +95,16 @@ func TestObjectCreator_updateKeys(t *testing.T) {
|
|||
doc.SetDetails(&types.Struct{Fields: map[string]*types.Value{
|
||||
"oldKey": pbtypes.String("test"),
|
||||
}})
|
||||
doc.AddRelationLinks(&model.RelationLink{
|
||||
Key: "oldKey",
|
||||
})
|
||||
// when
|
||||
oc.updateKeys(doc, oldToNew)
|
||||
|
||||
// then
|
||||
assert.Nil(t, doc.Details().GetFields()["oldKey"])
|
||||
assert.Equal(t, pbtypes.String("test"), doc.Details().GetFields()["newKey"])
|
||||
assert.True(t, doc.HasRelation("newKey"))
|
||||
})
|
||||
t.Run("updateKeys - update object type key", func(t *testing.T) {
|
||||
// given
|
||||
|
@ -128,4 +132,22 @@ func TestObjectCreator_updateKeys(t *testing.T) {
|
|||
assert.Nil(t, doc.Details().GetFields()["newKey"])
|
||||
assert.Equal(t, domain.TypeKey(""), doc.ObjectTypeKey())
|
||||
})
|
||||
t.Run("keys are the same", func(t *testing.T) {
|
||||
// given
|
||||
oc := ObjectCreator{}
|
||||
oldToNew := map[string]string{"oldId": "newId", "key": "key"}
|
||||
doc := state.NewDoc("oldId", nil).(*state.State)
|
||||
doc.SetDetails(&types.Struct{Fields: map[string]*types.Value{
|
||||
"key": pbtypes.String("test"),
|
||||
}})
|
||||
doc.AddRelationLinks(&model.RelationLink{
|
||||
Key: "key",
|
||||
})
|
||||
// when
|
||||
oc.updateKeys(doc, oldToNew)
|
||||
|
||||
// then
|
||||
assert.Equal(t, pbtypes.String("test"), doc.Details().GetFields()["key"])
|
||||
assert.True(t, doc.HasRelation("key"))
|
||||
})
|
||||
}
|
||||
|
|
|
@ -33,11 +33,15 @@ func newDerivedObject(existingObject *existingObject, spaceService space.Service
|
|||
}
|
||||
|
||||
func (d *derivedObject) GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, _ time.Time, getExisting bool, _ objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, error) {
|
||||
id, payload, err := d.existingObject.GetIDAndPayload(ctx, spaceID, sn, getExisting)
|
||||
id, payload, err := d.existingObject.GetIDAndPayload(ctx, spaceID, sn, true)
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, err
|
||||
}
|
||||
if id != "" {
|
||||
d.internalKey, err = d.getInternalKey(spaceID, id)
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, err
|
||||
}
|
||||
return id, payload, nil
|
||||
}
|
||||
rawUniqueKey := pbtypes.GetString(sn.Snapshot.Data.Details, bundle.RelationKeyUniqueKey.String())
|
||||
|
@ -96,3 +100,29 @@ func (d *derivedObject) isDeletedObject(spaceId string, uniqueKey string) bool {
|
|||
})
|
||||
return err == nil && len(ids) > 0
|
||||
}
|
||||
|
||||
func (d *derivedObject) getInternalKey(spaceID, objectId string) (string, error) {
|
||||
ids, err := d.objectStore.Query(database.Query{
|
||||
Filters: []*model.BlockContentDataviewFilter{
|
||||
{
|
||||
Condition: model.BlockContentDataviewFilter_Equal,
|
||||
RelationKey: bundle.RelationKeyId.String(),
|
||||
Value: pbtypes.String(objectId),
|
||||
},
|
||||
{
|
||||
Condition: model.BlockContentDataviewFilter_Equal,
|
||||
RelationKey: bundle.RelationKeySpaceId.String(),
|
||||
Value: pbtypes.String(spaceID),
|
||||
},
|
||||
},
|
||||
})
|
||||
if err == nil && len(ids) > 0 {
|
||||
uniqueKey := pbtypes.GetString(ids[0].Details, bundle.RelationKeyUniqueKey.String())
|
||||
key, err := domain.UnmarshalUniqueKey(uniqueKey)
|
||||
if err != nil {
|
||||
return "", nil
|
||||
}
|
||||
return key.InternalKey(), err
|
||||
}
|
||||
return "", nil
|
||||
}
|
||||
|
|
|
@ -66,4 +66,42 @@ func TestDerivedObject_GetIDAndPayload(t *testing.T) {
|
|||
assert.NotEqual(t, deriveObject.GetInternalKey(sn.SbType), "key")
|
||||
assert.Equal(t, "newId", id)
|
||||
})
|
||||
t.Run("existing object", func(t *testing.T) {
|
||||
// given
|
||||
sf := objectstore.NewStoreFixture(t)
|
||||
service := mock_space.NewMockService(t)
|
||||
deriveObject := newDerivedObject(newExistingObject(sf), service, sf)
|
||||
sn := &common.Snapshot{
|
||||
Id: "oldId",
|
||||
Snapshot: &pb.ChangeSnapshot{
|
||||
Data: &model.SmartBlockSnapshotBase{
|
||||
Details: &types.Struct{Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyName.String(): pbtypes.String("name"),
|
||||
bundle.RelationKeyRelationFormat.String(): pbtypes.Int64(int64(model.RelationFormat_number)),
|
||||
}},
|
||||
},
|
||||
},
|
||||
SbType: coresb.SmartBlockTypeRelation,
|
||||
}
|
||||
|
||||
uniqueKey, err := domain.NewUniqueKey(coresb.SmartBlockTypeRelation, "oldKey")
|
||||
assert.Nil(t, err)
|
||||
sf.AddObjects(t, []objectstore.TestObject{
|
||||
{
|
||||
bundle.RelationKeyUniqueKey: pbtypes.String(uniqueKey.Marshal()),
|
||||
bundle.RelationKeyId: pbtypes.String("oldId"),
|
||||
bundle.RelationKeyName: pbtypes.String("name"),
|
||||
bundle.RelationKeyRelationFormat: pbtypes.Int64(int64(model.RelationFormat_number)),
|
||||
bundle.RelationKeyLayout: pbtypes.Int64(int64(model.ObjectType_relation)),
|
||||
bundle.RelationKeySpaceId: pbtypes.String("spaceId"),
|
||||
},
|
||||
})
|
||||
|
||||
// when
|
||||
id, _, err := deriveObject.GetIDAndPayload(context.Background(), "spaceId", sn, time.Now(), false, objectorigin.Import(model.Import_Pb))
|
||||
|
||||
// then
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "oldId", id)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import (
|
|||
|
||||
"github.com/anyproto/anytype-heart/core/block/import/common"
|
||||
"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/database"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
|
@ -36,8 +37,13 @@ func (e *existingObject) GetIDAndPayload(_ context.Context, spaceID string, sn *
|
|||
return id, treestorage.TreeStorageCreatePayload{}, nil
|
||||
}
|
||||
}
|
||||
relationOption := e.getExistingRelationOption(sn)
|
||||
return relationOption, treestorage.TreeStorageCreatePayload{}, nil
|
||||
if sn.SbType == sb.SmartBlockTypeRelationOption {
|
||||
return e.getExistingRelationOption(sn, spaceID), treestorage.TreeStorageCreatePayload{}, nil
|
||||
}
|
||||
if sn.SbType == sb.SmartBlockTypeRelation {
|
||||
return e.getExistingRelation(sn, spaceID), treestorage.TreeStorageCreatePayload{}, nil
|
||||
}
|
||||
return "", treestorage.TreeStorageCreatePayload{}, nil
|
||||
}
|
||||
|
||||
func (e *existingObject) getObjectByOldAnytypeID(spaceID string, sn *common.Snapshot) (string, error) {
|
||||
|
@ -106,7 +112,7 @@ func (e *existingObject) getExistingObject(spaceID string, sn *common.Snapshot)
|
|||
return ""
|
||||
}
|
||||
|
||||
func (e *existingObject) getExistingRelationOption(snapshot *common.Snapshot) string {
|
||||
func (e *existingObject) getExistingRelationOption(snapshot *common.Snapshot, spaceID string) string {
|
||||
name := pbtypes.GetString(snapshot.Snapshot.Data.Details, bundle.RelationKeyName.String())
|
||||
key := pbtypes.GetString(snapshot.Snapshot.Data.Details, bundle.RelationKeyRelationKey.String())
|
||||
ids, _, err := e.objectStore.QueryObjectIDs(database.Query{
|
||||
|
@ -123,8 +129,46 @@ func (e *existingObject) getExistingRelationOption(snapshot *common.Snapshot) st
|
|||
},
|
||||
{
|
||||
Condition: model.BlockContentDataviewFilter_Equal,
|
||||
RelationKey: bundle.RelationKeyType.String(),
|
||||
Value: pbtypes.String(bundle.TypeKeyRelationOption.URL()),
|
||||
RelationKey: bundle.RelationKeyLayout.String(),
|
||||
Value: pbtypes.Int64(int64(model.ObjectType_relationOption)),
|
||||
},
|
||||
{
|
||||
Condition: model.BlockContentDataviewFilter_Equal,
|
||||
RelationKey: bundle.RelationKeySpaceId.String(),
|
||||
Value: pbtypes.String(spaceID),
|
||||
},
|
||||
},
|
||||
})
|
||||
if err == nil && len(ids) > 0 {
|
||||
return ids[0]
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (e *existingObject) getExistingRelation(snapshot *common.Snapshot, spaceID string) string {
|
||||
name := pbtypes.GetString(snapshot.Snapshot.Data.Details, bundle.RelationKeyName.String())
|
||||
format := pbtypes.GetFloat64(snapshot.Snapshot.Data.Details, bundle.RelationKeyRelationFormat.String())
|
||||
ids, _, err := e.objectStore.QueryObjectIDs(database.Query{
|
||||
Filters: []*model.BlockContentDataviewFilter{
|
||||
{
|
||||
Condition: model.BlockContentDataviewFilter_Equal,
|
||||
RelationKey: bundle.RelationKeyName.String(),
|
||||
Value: pbtypes.String(name),
|
||||
},
|
||||
{
|
||||
Condition: model.BlockContentDataviewFilter_Equal,
|
||||
RelationKey: bundle.RelationKeyRelationFormat.String(),
|
||||
Value: pbtypes.Float64(format),
|
||||
},
|
||||
{
|
||||
Condition: model.BlockContentDataviewFilter_Equal,
|
||||
RelationKey: bundle.RelationKeyLayout.String(),
|
||||
Value: pbtypes.Int64(int64(model.ObjectType_relation)),
|
||||
},
|
||||
{
|
||||
Condition: model.BlockContentDataviewFilter_Equal,
|
||||
RelationKey: bundle.RelationKeySpaceId.String(),
|
||||
Value: pbtypes.String(spaceID),
|
||||
},
|
||||
},
|
||||
})
|
||||
|
|
|
@ -111,19 +111,21 @@ func getDetailsFromCSVTable(csvTable [][]string, useFirstRowForRelations bool) (
|
|||
if !useFirstRowForRelations {
|
||||
relationName = getDefaultRelationName(i)
|
||||
}
|
||||
id := bson.NewObjectId().Hex()
|
||||
key := bson.NewObjectId().Hex()
|
||||
relations = append(relations, &model.Relation{
|
||||
Format: model.RelationFormat_longtext,
|
||||
Name: relationName,
|
||||
Key: id,
|
||||
Key: key,
|
||||
})
|
||||
details := getRelationDetails(relationName, key, float64(model.RelationFormat_longtext))
|
||||
id := pbtypes.GetString(details, bundle.RelationKeyId.String())
|
||||
relationsSnapshots = append(relationsSnapshots, &common.Snapshot{
|
||||
Id: id,
|
||||
SbType: smartblock.SmartBlockTypeRelation,
|
||||
Snapshot: &pb.ChangeSnapshot{Data: &model.SmartBlockSnapshotBase{
|
||||
Details: getRelationDetails(relationName, id, float64(model.RelationFormat_longtext)),
|
||||
Details: details,
|
||||
ObjectTypes: []string{bundle.TypeKeyRelation.String()},
|
||||
Key: id,
|
||||
Key: key,
|
||||
}},
|
||||
})
|
||||
}
|
||||
|
@ -177,7 +179,7 @@ func getRelationDetails(name, key string, format float64) *types.Struct {
|
|||
details.Fields[bundle.RelationKeyName.String()] = pbtypes.String(name)
|
||||
details.Fields[bundle.RelationKeyRelationKey.String()] = pbtypes.String(key)
|
||||
details.Fields[bundle.RelationKeyLayout.String()] = pbtypes.Float64(float64(model.ObjectType_relation))
|
||||
uniqueKey, err := domain.NewUniqueKey(smartblock.SmartBlockTypeRelationOption, key)
|
||||
uniqueKey, err := domain.NewUniqueKey(smartblock.SmartBlockTypeRelation, key)
|
||||
if err != nil {
|
||||
log.Warnf("failed to create unique key for Notion relation: %v", err)
|
||||
return details
|
||||
|
|
|
@ -24,14 +24,18 @@ import (
|
|||
)
|
||||
|
||||
type (
|
||||
CollectionService interface {
|
||||
collectionService interface {
|
||||
CreateCollection(details *types.Struct, flags []*model.InternalFlag) (coresb.SmartBlockType, *types.Struct, *state.State, error)
|
||||
}
|
||||
|
||||
TemplateService interface {
|
||||
templateService interface {
|
||||
CreateTemplateStateWithDetails(templateId string, details *types.Struct) (st *state.State, err error)
|
||||
TemplateCloneInSpace(space clientspace.Space, id string) (templateId string, err error)
|
||||
}
|
||||
|
||||
bookmarkService interface {
|
||||
CreateObjectAndFetch(ctx context.Context, spaceId string, details *types.Struct) (objectID string, newDetails *types.Struct, err error)
|
||||
}
|
||||
)
|
||||
|
||||
const CName = "objectCreator"
|
||||
|
@ -49,16 +53,12 @@ type Service interface {
|
|||
app.Component
|
||||
}
|
||||
|
||||
type bookmarkService interface {
|
||||
CreateObjectAndFetch(ctx context.Context, spaceId string, req *pb.RpcObjectCreateBookmarkRequest) (objectID string, newDetails *types.Struct, err error)
|
||||
}
|
||||
|
||||
type service struct {
|
||||
objectStore objectstore.ObjectStore
|
||||
collectionService CollectionService
|
||||
collectionService collectionService
|
||||
bookmarkService bookmarkService
|
||||
spaceService space.Service
|
||||
templateService TemplateService
|
||||
templateService templateService
|
||||
}
|
||||
|
||||
func NewCreator() Service {
|
||||
|
@ -68,9 +68,9 @@ func NewCreator() Service {
|
|||
func (s *service) Init(a *app.App) (err error) {
|
||||
s.objectStore = a.MustComponent(objectstore.CName).(objectstore.ObjectStore)
|
||||
s.bookmarkService = app.MustComponent[bookmarkService](a)
|
||||
s.collectionService = app.MustComponent[CollectionService](a)
|
||||
s.collectionService = app.MustComponent[collectionService](a)
|
||||
s.spaceService = app.MustComponent[space.Service](a)
|
||||
s.templateService = app.MustComponent[TemplateService](a)
|
||||
s.templateService = app.MustComponent[templateService](a)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -124,9 +124,7 @@ func (s *service) createObjectInSpace(
|
|||
}
|
||||
switch req.ObjectTypeKey {
|
||||
case bundle.TypeKeyBookmark:
|
||||
return s.bookmarkService.CreateObjectAndFetch(ctx, space.Id(), &pb.RpcObjectCreateBookmarkRequest{
|
||||
Details: details,
|
||||
})
|
||||
return s.bookmarkService.CreateObjectAndFetch(ctx, space.Id(), details)
|
||||
case bundle.TypeKeySet:
|
||||
details.Fields[bundle.RelationKeyLayout.String()] = pbtypes.Float64(float64(model.ObjectType_set))
|
||||
return s.createSet(ctx, space, &pb.RpcObjectCreateSetRequest{
|
||||
|
|
|
@ -0,0 +1,479 @@
|
|||
// Code generated by mockery. DO NOT EDIT.
|
||||
|
||||
package mock_objectcreator
|
||||
|
||||
import (
|
||||
context "context"
|
||||
|
||||
app "github.com/anyproto/any-sync/app"
|
||||
clientspace "github.com/anyproto/anytype-heart/space/clientspace"
|
||||
|
||||
domain "github.com/anyproto/anytype-heart/core/domain"
|
||||
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
|
||||
objectcreator "github.com/anyproto/anytype-heart/core/block/object/objectcreator"
|
||||
|
||||
state "github.com/anyproto/anytype-heart/core/block/editor/state"
|
||||
|
||||
types "github.com/gogo/protobuf/types"
|
||||
)
|
||||
|
||||
// MockService is an autogenerated mock type for the Service type
|
||||
type MockService struct {
|
||||
mock.Mock
|
||||
}
|
||||
|
||||
type MockService_Expecter struct {
|
||||
mock *mock.Mock
|
||||
}
|
||||
|
||||
func (_m *MockService) EXPECT() *MockService_Expecter {
|
||||
return &MockService_Expecter{mock: &_m.Mock}
|
||||
}
|
||||
|
||||
// CreateObject provides a mock function with given fields: ctx, spaceID, req
|
||||
func (_m *MockService) CreateObject(ctx context.Context, spaceID string, req objectcreator.CreateObjectRequest) (string, *types.Struct, error) {
|
||||
ret := _m.Called(ctx, spaceID, req)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for CreateObject")
|
||||
}
|
||||
|
||||
var r0 string
|
||||
var r1 *types.Struct
|
||||
var r2 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, objectcreator.CreateObjectRequest) (string, *types.Struct, error)); ok {
|
||||
return rf(ctx, spaceID, req)
|
||||
}
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, objectcreator.CreateObjectRequest) string); ok {
|
||||
r0 = rf(ctx, spaceID, req)
|
||||
} else {
|
||||
r0 = ret.Get(0).(string)
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(1).(func(context.Context, string, objectcreator.CreateObjectRequest) *types.Struct); ok {
|
||||
r1 = rf(ctx, spaceID, req)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*types.Struct)
|
||||
}
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(2).(func(context.Context, string, objectcreator.CreateObjectRequest) error); ok {
|
||||
r2 = rf(ctx, spaceID, req)
|
||||
} else {
|
||||
r2 = ret.Error(2)
|
||||
}
|
||||
|
||||
return r0, r1, r2
|
||||
}
|
||||
|
||||
// MockService_CreateObject_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CreateObject'
|
||||
type MockService_CreateObject_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// CreateObject is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - spaceID string
|
||||
// - req objectcreator.CreateObjectRequest
|
||||
func (_e *MockService_Expecter) CreateObject(ctx interface{}, spaceID interface{}, req interface{}) *MockService_CreateObject_Call {
|
||||
return &MockService_CreateObject_Call{Call: _e.mock.On("CreateObject", ctx, spaceID, req)}
|
||||
}
|
||||
|
||||
func (_c *MockService_CreateObject_Call) Run(run func(ctx context.Context, spaceID string, req objectcreator.CreateObjectRequest)) *MockService_CreateObject_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run(args[0].(context.Context), args[1].(string), args[2].(objectcreator.CreateObjectRequest))
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_CreateObject_Call) Return(id string, details *types.Struct, err error) *MockService_CreateObject_Call {
|
||||
_c.Call.Return(id, details, err)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_CreateObject_Call) RunAndReturn(run func(context.Context, string, objectcreator.CreateObjectRequest) (string, *types.Struct, error)) *MockService_CreateObject_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// CreateObjectUsingObjectUniqueTypeKey provides a mock function with given fields: ctx, spaceID, objectUniqueTypeKey, req
|
||||
func (_m *MockService) CreateObjectUsingObjectUniqueTypeKey(ctx context.Context, spaceID string, objectUniqueTypeKey string, req objectcreator.CreateObjectRequest) (string, *types.Struct, error) {
|
||||
ret := _m.Called(ctx, spaceID, objectUniqueTypeKey, req)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for CreateObjectUsingObjectUniqueTypeKey")
|
||||
}
|
||||
|
||||
var r0 string
|
||||
var r1 *types.Struct
|
||||
var r2 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, string, objectcreator.CreateObjectRequest) (string, *types.Struct, error)); ok {
|
||||
return rf(ctx, spaceID, objectUniqueTypeKey, req)
|
||||
}
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, string, objectcreator.CreateObjectRequest) string); ok {
|
||||
r0 = rf(ctx, spaceID, objectUniqueTypeKey, req)
|
||||
} else {
|
||||
r0 = ret.Get(0).(string)
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(1).(func(context.Context, string, string, objectcreator.CreateObjectRequest) *types.Struct); ok {
|
||||
r1 = rf(ctx, spaceID, objectUniqueTypeKey, req)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*types.Struct)
|
||||
}
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(2).(func(context.Context, string, string, objectcreator.CreateObjectRequest) error); ok {
|
||||
r2 = rf(ctx, spaceID, objectUniqueTypeKey, req)
|
||||
} else {
|
||||
r2 = ret.Error(2)
|
||||
}
|
||||
|
||||
return r0, r1, r2
|
||||
}
|
||||
|
||||
// MockService_CreateObjectUsingObjectUniqueTypeKey_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CreateObjectUsingObjectUniqueTypeKey'
|
||||
type MockService_CreateObjectUsingObjectUniqueTypeKey_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// CreateObjectUsingObjectUniqueTypeKey is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - spaceID string
|
||||
// - objectUniqueTypeKey string
|
||||
// - req objectcreator.CreateObjectRequest
|
||||
func (_e *MockService_Expecter) CreateObjectUsingObjectUniqueTypeKey(ctx interface{}, spaceID interface{}, objectUniqueTypeKey interface{}, req interface{}) *MockService_CreateObjectUsingObjectUniqueTypeKey_Call {
|
||||
return &MockService_CreateObjectUsingObjectUniqueTypeKey_Call{Call: _e.mock.On("CreateObjectUsingObjectUniqueTypeKey", ctx, spaceID, objectUniqueTypeKey, req)}
|
||||
}
|
||||
|
||||
func (_c *MockService_CreateObjectUsingObjectUniqueTypeKey_Call) Run(run func(ctx context.Context, spaceID string, objectUniqueTypeKey string, req objectcreator.CreateObjectRequest)) *MockService_CreateObjectUsingObjectUniqueTypeKey_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run(args[0].(context.Context), args[1].(string), args[2].(string), args[3].(objectcreator.CreateObjectRequest))
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_CreateObjectUsingObjectUniqueTypeKey_Call) Return(id string, details *types.Struct, err error) *MockService_CreateObjectUsingObjectUniqueTypeKey_Call {
|
||||
_c.Call.Return(id, details, err)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_CreateObjectUsingObjectUniqueTypeKey_Call) RunAndReturn(run func(context.Context, string, string, objectcreator.CreateObjectRequest) (string, *types.Struct, error)) *MockService_CreateObjectUsingObjectUniqueTypeKey_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// CreateSmartBlockFromState provides a mock function with given fields: ctx, spaceID, objectTypeKeys, createState
|
||||
func (_m *MockService) CreateSmartBlockFromState(ctx context.Context, spaceID string, objectTypeKeys []domain.TypeKey, createState *state.State) (string, *types.Struct, error) {
|
||||
ret := _m.Called(ctx, spaceID, objectTypeKeys, createState)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for CreateSmartBlockFromState")
|
||||
}
|
||||
|
||||
var r0 string
|
||||
var r1 *types.Struct
|
||||
var r2 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, []domain.TypeKey, *state.State) (string, *types.Struct, error)); ok {
|
||||
return rf(ctx, spaceID, objectTypeKeys, createState)
|
||||
}
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, []domain.TypeKey, *state.State) string); ok {
|
||||
r0 = rf(ctx, spaceID, objectTypeKeys, createState)
|
||||
} else {
|
||||
r0 = ret.Get(0).(string)
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(1).(func(context.Context, string, []domain.TypeKey, *state.State) *types.Struct); ok {
|
||||
r1 = rf(ctx, spaceID, objectTypeKeys, createState)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*types.Struct)
|
||||
}
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(2).(func(context.Context, string, []domain.TypeKey, *state.State) error); ok {
|
||||
r2 = rf(ctx, spaceID, objectTypeKeys, createState)
|
||||
} else {
|
||||
r2 = ret.Error(2)
|
||||
}
|
||||
|
||||
return r0, r1, r2
|
||||
}
|
||||
|
||||
// MockService_CreateSmartBlockFromState_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CreateSmartBlockFromState'
|
||||
type MockService_CreateSmartBlockFromState_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// CreateSmartBlockFromState is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - spaceID string
|
||||
// - objectTypeKeys []domain.TypeKey
|
||||
// - createState *state.State
|
||||
func (_e *MockService_Expecter) CreateSmartBlockFromState(ctx interface{}, spaceID interface{}, objectTypeKeys interface{}, createState interface{}) *MockService_CreateSmartBlockFromState_Call {
|
||||
return &MockService_CreateSmartBlockFromState_Call{Call: _e.mock.On("CreateSmartBlockFromState", ctx, spaceID, objectTypeKeys, createState)}
|
||||
}
|
||||
|
||||
func (_c *MockService_CreateSmartBlockFromState_Call) Run(run func(ctx context.Context, spaceID string, objectTypeKeys []domain.TypeKey, createState *state.State)) *MockService_CreateSmartBlockFromState_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run(args[0].(context.Context), args[1].(string), args[2].([]domain.TypeKey), args[3].(*state.State))
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_CreateSmartBlockFromState_Call) Return(id string, newDetails *types.Struct, err error) *MockService_CreateSmartBlockFromState_Call {
|
||||
_c.Call.Return(id, newDetails, err)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_CreateSmartBlockFromState_Call) RunAndReturn(run func(context.Context, string, []domain.TypeKey, *state.State) (string, *types.Struct, error)) *MockService_CreateSmartBlockFromState_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// CreateSmartBlockFromStateInSpace provides a mock function with given fields: ctx, space, objectTypeKeys, createState
|
||||
func (_m *MockService) CreateSmartBlockFromStateInSpace(ctx context.Context, space clientspace.Space, objectTypeKeys []domain.TypeKey, createState *state.State) (string, *types.Struct, error) {
|
||||
ret := _m.Called(ctx, space, objectTypeKeys, createState)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for CreateSmartBlockFromStateInSpace")
|
||||
}
|
||||
|
||||
var r0 string
|
||||
var r1 *types.Struct
|
||||
var r2 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, clientspace.Space, []domain.TypeKey, *state.State) (string, *types.Struct, error)); ok {
|
||||
return rf(ctx, space, objectTypeKeys, createState)
|
||||
}
|
||||
if rf, ok := ret.Get(0).(func(context.Context, clientspace.Space, []domain.TypeKey, *state.State) string); ok {
|
||||
r0 = rf(ctx, space, objectTypeKeys, createState)
|
||||
} else {
|
||||
r0 = ret.Get(0).(string)
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(1).(func(context.Context, clientspace.Space, []domain.TypeKey, *state.State) *types.Struct); ok {
|
||||
r1 = rf(ctx, space, objectTypeKeys, createState)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*types.Struct)
|
||||
}
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(2).(func(context.Context, clientspace.Space, []domain.TypeKey, *state.State) error); ok {
|
||||
r2 = rf(ctx, space, objectTypeKeys, createState)
|
||||
} else {
|
||||
r2 = ret.Error(2)
|
||||
}
|
||||
|
||||
return r0, r1, r2
|
||||
}
|
||||
|
||||
// MockService_CreateSmartBlockFromStateInSpace_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CreateSmartBlockFromStateInSpace'
|
||||
type MockService_CreateSmartBlockFromStateInSpace_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// CreateSmartBlockFromStateInSpace is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - space clientspace.Space
|
||||
// - objectTypeKeys []domain.TypeKey
|
||||
// - createState *state.State
|
||||
func (_e *MockService_Expecter) CreateSmartBlockFromStateInSpace(ctx interface{}, space interface{}, objectTypeKeys interface{}, createState interface{}) *MockService_CreateSmartBlockFromStateInSpace_Call {
|
||||
return &MockService_CreateSmartBlockFromStateInSpace_Call{Call: _e.mock.On("CreateSmartBlockFromStateInSpace", ctx, space, objectTypeKeys, createState)}
|
||||
}
|
||||
|
||||
func (_c *MockService_CreateSmartBlockFromStateInSpace_Call) Run(run func(ctx context.Context, space clientspace.Space, objectTypeKeys []domain.TypeKey, createState *state.State)) *MockService_CreateSmartBlockFromStateInSpace_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run(args[0].(context.Context), args[1].(clientspace.Space), args[2].([]domain.TypeKey), args[3].(*state.State))
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_CreateSmartBlockFromStateInSpace_Call) Return(id string, newDetails *types.Struct, err error) *MockService_CreateSmartBlockFromStateInSpace_Call {
|
||||
_c.Call.Return(id, newDetails, err)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_CreateSmartBlockFromStateInSpace_Call) RunAndReturn(run func(context.Context, clientspace.Space, []domain.TypeKey, *state.State) (string, *types.Struct, error)) *MockService_CreateSmartBlockFromStateInSpace_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// Init provides a mock function with given fields: a
|
||||
func (_m *MockService) 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
|
||||
}
|
||||
|
||||
// MockService_Init_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Init'
|
||||
type MockService_Init_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// Init is a helper method to define mock.On call
|
||||
// - a *app.App
|
||||
func (_e *MockService_Expecter) Init(a interface{}) *MockService_Init_Call {
|
||||
return &MockService_Init_Call{Call: _e.mock.On("Init", a)}
|
||||
}
|
||||
|
||||
func (_c *MockService_Init_Call) Run(run func(a *app.App)) *MockService_Init_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run(args[0].(*app.App))
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_Init_Call) Return(err error) *MockService_Init_Call {
|
||||
_c.Call.Return(err)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_Init_Call) RunAndReturn(run func(*app.App) error) *MockService_Init_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// InstallBundledObjects provides a mock function with given fields: ctx, space, sourceObjectIds, isNewSpace
|
||||
func (_m *MockService) InstallBundledObjects(ctx context.Context, space clientspace.Space, sourceObjectIds []string, isNewSpace bool) ([]string, []*types.Struct, error) {
|
||||
ret := _m.Called(ctx, space, sourceObjectIds, isNewSpace)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for InstallBundledObjects")
|
||||
}
|
||||
|
||||
var r0 []string
|
||||
var r1 []*types.Struct
|
||||
var r2 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, clientspace.Space, []string, bool) ([]string, []*types.Struct, error)); ok {
|
||||
return rf(ctx, space, sourceObjectIds, isNewSpace)
|
||||
}
|
||||
if rf, ok := ret.Get(0).(func(context.Context, clientspace.Space, []string, bool) []string); ok {
|
||||
r0 = rf(ctx, space, sourceObjectIds, isNewSpace)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).([]string)
|
||||
}
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(1).(func(context.Context, clientspace.Space, []string, bool) []*types.Struct); ok {
|
||||
r1 = rf(ctx, space, sourceObjectIds, isNewSpace)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).([]*types.Struct)
|
||||
}
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(2).(func(context.Context, clientspace.Space, []string, bool) error); ok {
|
||||
r2 = rf(ctx, space, sourceObjectIds, isNewSpace)
|
||||
} else {
|
||||
r2 = ret.Error(2)
|
||||
}
|
||||
|
||||
return r0, r1, r2
|
||||
}
|
||||
|
||||
// MockService_InstallBundledObjects_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'InstallBundledObjects'
|
||||
type MockService_InstallBundledObjects_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// InstallBundledObjects is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - space clientspace.Space
|
||||
// - sourceObjectIds []string
|
||||
// - isNewSpace bool
|
||||
func (_e *MockService_Expecter) InstallBundledObjects(ctx interface{}, space interface{}, sourceObjectIds interface{}, isNewSpace interface{}) *MockService_InstallBundledObjects_Call {
|
||||
return &MockService_InstallBundledObjects_Call{Call: _e.mock.On("InstallBundledObjects", ctx, space, sourceObjectIds, isNewSpace)}
|
||||
}
|
||||
|
||||
func (_c *MockService_InstallBundledObjects_Call) Run(run func(ctx context.Context, space clientspace.Space, sourceObjectIds []string, isNewSpace bool)) *MockService_InstallBundledObjects_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run(args[0].(context.Context), args[1].(clientspace.Space), args[2].([]string), args[3].(bool))
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_InstallBundledObjects_Call) Return(ids []string, objects []*types.Struct, err error) *MockService_InstallBundledObjects_Call {
|
||||
_c.Call.Return(ids, objects, err)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_InstallBundledObjects_Call) RunAndReturn(run func(context.Context, clientspace.Space, []string, bool) ([]string, []*types.Struct, error)) *MockService_InstallBundledObjects_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// Name provides a mock function with given fields:
|
||||
func (_m *MockService) 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
|
||||
}
|
||||
|
||||
// MockService_Name_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Name'
|
||||
type MockService_Name_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// Name is a helper method to define mock.On call
|
||||
func (_e *MockService_Expecter) Name() *MockService_Name_Call {
|
||||
return &MockService_Name_Call{Call: _e.mock.On("Name")}
|
||||
}
|
||||
|
||||
func (_c *MockService_Name_Call) Run(run func()) *MockService_Name_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run()
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_Name_Call) Return(name string) *MockService_Name_Call {
|
||||
_c.Call.Return(name)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_Name_Call) RunAndReturn(run func() string) *MockService_Name_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// NewMockService creates a new instance of MockService. 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 NewMockService(t interface {
|
||||
mock.TestingT
|
||||
Cleanup(func())
|
||||
}) *MockService {
|
||||
mock := &MockService{}
|
||||
mock.Mock.Test(t)
|
||||
|
||||
t.Cleanup(func() { mock.AssertExpectations(t) })
|
||||
|
||||
return mock
|
||||
}
|
|
@ -9,6 +9,7 @@ import (
|
|||
"github.com/samber/lo"
|
||||
|
||||
"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/simple"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
|
@ -30,42 +31,35 @@ type linkSource interface {
|
|||
HasSmartIds() bool
|
||||
}
|
||||
|
||||
func DependentObjectIDs(s *state.State, converter KeyToIDConverter, blocks, details, relations, objTypes, creatorModifierWorkspace bool) (ids []string) {
|
||||
if blocks {
|
||||
err := s.Iterate(func(b simple.Block) (isContinue bool) {
|
||||
if ls, ok := b.(linkSource); ok {
|
||||
ids = ls.FillSmartIds(ids)
|
||||
}
|
||||
return true
|
||||
})
|
||||
if err != nil {
|
||||
log.With("objectID", s.RootId()).Errorf("failed to iterate over simple blocks: %s", err)
|
||||
}
|
||||
type Flags struct {
|
||||
Blocks,
|
||||
Details,
|
||||
Relations,
|
||||
Types,
|
||||
Collection,
|
||||
CreatorModifierWorkspace,
|
||||
DataviewBlockOnlyTarget,
|
||||
NoSystemRelations,
|
||||
NoHiddenBundledRelations,
|
||||
NoImages bool
|
||||
}
|
||||
|
||||
func DependentObjectIDs(s *state.State, converter KeyToIDConverter, flags Flags) (ids []string) {
|
||||
if flags.Blocks {
|
||||
ids = collectIdsFromBlocks(s, flags)
|
||||
}
|
||||
|
||||
if objTypes {
|
||||
for _, objectTypeKey := range s.ObjectTypeKeys() {
|
||||
if objectTypeKey == "" { // TODO is it possible?
|
||||
log.Errorf("sb %s has empty ot", s.RootId())
|
||||
continue
|
||||
}
|
||||
id, err := converter.GetTypeIdByKey(context.Background(), objectTypeKey)
|
||||
if err != nil {
|
||||
log.With("objectID", s.RootId()).Errorf("failed to get object type id by key %s: %s", objectTypeKey, err)
|
||||
continue
|
||||
}
|
||||
ids = append(ids, id)
|
||||
}
|
||||
if flags.Types {
|
||||
ids = append(ids, collectIdsFromTypes(s, converter)...)
|
||||
}
|
||||
|
||||
var det *types.Struct
|
||||
if details {
|
||||
if flags.Details {
|
||||
det = s.CombinedDetails()
|
||||
}
|
||||
|
||||
for _, rel := range s.GetRelationLinks() {
|
||||
// do not index local dates such as lastOpened/lastModified
|
||||
if relations {
|
||||
if flags.Relations {
|
||||
id, err := converter.GetRelationIdByKey(context.Background(), domain.RelationKey(rel.Key))
|
||||
if err != nil {
|
||||
log.With("objectID", s.RootId()).Errorf("failed to get relation id by key %s: %s", rel.Key, err)
|
||||
|
@ -74,65 +68,134 @@ func DependentObjectIDs(s *state.State, converter KeyToIDConverter, blocks, deta
|
|||
ids = append(ids, id)
|
||||
}
|
||||
|
||||
if !details {
|
||||
if !flags.Details {
|
||||
continue
|
||||
}
|
||||
|
||||
// handle corner cases first for specific formats
|
||||
if rel.Format == model.RelationFormat_date &&
|
||||
!lo.Contains(bundle.LocalAndDerivedRelationKeys, rel.Key) {
|
||||
relInt := pbtypes.GetInt64(det, rel.Key)
|
||||
if relInt > 0 {
|
||||
t := time.Unix(relInt, 0)
|
||||
t = t.In(time.Local)
|
||||
ids = append(ids, addr.TimeToID(t))
|
||||
}
|
||||
continue
|
||||
}
|
||||
ids = append(ids, collectIdsFromDetail(rel, det, flags)...)
|
||||
}
|
||||
|
||||
if rel.Key == bundle.RelationKeyCreator.String() ||
|
||||
rel.Key == bundle.RelationKeyLastModifiedBy.String() {
|
||||
if creatorModifierWorkspace {
|
||||
v := pbtypes.GetString(det, rel.Key)
|
||||
ids = append(ids, v)
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
if rel.Key == bundle.RelationKeyId.String() ||
|
||||
rel.Key == bundle.RelationKeyLinks.String() ||
|
||||
rel.Key == bundle.RelationKeyType.String() || // always skip type because it was proceed above
|
||||
rel.Key == bundle.RelationKeyFeaturedRelations.String() {
|
||||
continue
|
||||
}
|
||||
|
||||
if rel.Key == bundle.RelationKeyCoverId.String() {
|
||||
v := pbtypes.GetString(det, rel.Key)
|
||||
_, err := cid.Decode(v)
|
||||
if err != nil {
|
||||
// this is an exception cause coverId can contains not a file hash but color
|
||||
continue
|
||||
}
|
||||
ids = append(ids, v)
|
||||
}
|
||||
|
||||
if rel.Format != model.RelationFormat_object &&
|
||||
rel.Format != model.RelationFormat_file &&
|
||||
rel.Format != model.RelationFormat_status &&
|
||||
rel.Format != model.RelationFormat_tag {
|
||||
continue
|
||||
}
|
||||
|
||||
// add all object relation values as dependents
|
||||
for _, targetID := range pbtypes.GetStringList(det, rel.Key) {
|
||||
if targetID == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
ids = append(ids, targetID)
|
||||
}
|
||||
if flags.Collection {
|
||||
ids = append(ids, s.GetStoreSlice(template.CollectionStoreKey)...)
|
||||
}
|
||||
|
||||
ids = lo.Uniq(ids)
|
||||
return
|
||||
}
|
||||
|
||||
func collectIdsFromBlocks(s *state.State, flags Flags) (ids []string) {
|
||||
err := s.Iterate(func(b simple.Block) (isContinue bool) {
|
||||
if flags.DataviewBlockOnlyTarget {
|
||||
if dv := b.Model().GetDataview(); dv != nil {
|
||||
if dv.TargetObjectId != "" {
|
||||
ids = append(ids, dv.TargetObjectId)
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
// if NoImages == false, then file block will be processed with FillSmartIds
|
||||
if flags.NoImages {
|
||||
if f := b.Model().GetFile(); f != nil {
|
||||
if f.TargetObjectId != "" && f.Type != model.BlockContentFile_Image {
|
||||
ids = append(ids, f.TargetObjectId)
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
if ls, ok := b.(linkSource); ok {
|
||||
ids = ls.FillSmartIds(ids)
|
||||
}
|
||||
return true
|
||||
})
|
||||
if err != nil {
|
||||
log.With("objectID", s.RootId()).Errorf("failed to iterate over simple blocks: %s", err)
|
||||
}
|
||||
return ids
|
||||
}
|
||||
|
||||
func collectIdsFromTypes(s *state.State, converter KeyToIDConverter) (ids []string) {
|
||||
for _, objectTypeKey := range s.ObjectTypeKeys() {
|
||||
if objectTypeKey == "" { // TODO is it possible?
|
||||
log.Errorf("sb %s has empty ot", s.RootId())
|
||||
continue
|
||||
}
|
||||
id, err := converter.GetTypeIdByKey(context.Background(), objectTypeKey)
|
||||
if err != nil {
|
||||
log.With("objectID", s.RootId()).Errorf("failed to get object type id by key %s: %s", objectTypeKey, err)
|
||||
continue
|
||||
}
|
||||
ids = append(ids, id)
|
||||
}
|
||||
return ids
|
||||
}
|
||||
|
||||
func collectIdsFromDetail(rel *model.RelationLink, det *types.Struct, flags Flags) (ids []string) {
|
||||
if flags.NoSystemRelations {
|
||||
if rel.Format != model.RelationFormat_object || bundle.IsSystemRelation(domain.RelationKey(rel.Key)) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if flags.NoHiddenBundledRelations {
|
||||
// Only bundled relations can be hidden, so we don't need to request relations from object store.
|
||||
if r, err := bundle.GetRelation(domain.RelationKey(rel.Key)); err == nil && r.Hidden {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// handle corner cases first for specific formats
|
||||
if rel.Format == model.RelationFormat_date &&
|
||||
!lo.Contains(bundle.LocalAndDerivedRelationKeys, rel.Key) {
|
||||
relInt := pbtypes.GetInt64(det, rel.Key)
|
||||
if relInt > 0 {
|
||||
t := time.Unix(relInt, 0)
|
||||
t = t.In(time.Local)
|
||||
ids = append(ids, addr.TimeToID(t))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
if rel.Key == bundle.RelationKeyCreator.String() ||
|
||||
rel.Key == bundle.RelationKeyLastModifiedBy.String() {
|
||||
if flags.CreatorModifierWorkspace {
|
||||
v := pbtypes.GetString(det, rel.Key)
|
||||
ids = append(ids, v)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
if rel.Key == bundle.RelationKeyId.String() ||
|
||||
rel.Key == bundle.RelationKeyLinks.String() ||
|
||||
rel.Key == bundle.RelationKeyType.String() || // always skip type because it was processed before
|
||||
rel.Key == bundle.RelationKeyFeaturedRelations.String() {
|
||||
return
|
||||
}
|
||||
|
||||
if rel.Key == bundle.RelationKeyCoverId.String() {
|
||||
v := pbtypes.GetString(det, rel.Key)
|
||||
_, err := cid.Decode(v)
|
||||
if err != nil {
|
||||
// this is an exception cause coverId can contain not a file hash but color
|
||||
return
|
||||
}
|
||||
ids = append(ids, v)
|
||||
}
|
||||
|
||||
if rel.Format != model.RelationFormat_object &&
|
||||
rel.Format != model.RelationFormat_file &&
|
||||
rel.Format != model.RelationFormat_status &&
|
||||
rel.Format != model.RelationFormat_tag {
|
||||
return
|
||||
}
|
||||
|
||||
// add all object relation values as dependents
|
||||
for _, targetID := range pbtypes.GetStringList(det, rel.Key) {
|
||||
if targetID != "" {
|
||||
ids = append(ids, targetID)
|
||||
}
|
||||
}
|
||||
|
||||
return ids
|
||||
}
|
||||
|
|
|
@ -76,13 +76,13 @@ func TestState_DepSmartIdsLinks(t *testing.T) {
|
|||
}).(*state.State)
|
||||
converter := &fakeConverter{}
|
||||
|
||||
t.Run("all options are turned off", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, true, false, false, false, false)
|
||||
t.Run("block option is turned on: get ids from blocks", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true})
|
||||
assert.Len(t, objectIDs, 4)
|
||||
})
|
||||
|
||||
t.Run("block option is turned on: get ids from blocks", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, false, false, false, false, false)
|
||||
t.Run("all options are turned off", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{})
|
||||
assert.Len(t, objectIDs, 0)
|
||||
})
|
||||
}
|
||||
|
@ -92,7 +92,7 @@ func TestState_DepSmartIdsLinksAndRelations(t *testing.T) {
|
|||
stateWithLinks := state.NewDoc("root", map[string]simple.Block{
|
||||
"root": simple.New(&model.Block{
|
||||
Id: "root",
|
||||
ChildrenIds: []string{"childBlock", "childBlock2", "childBlock3"},
|
||||
ChildrenIds: []string{"childBlock", "childBlock2", "childBlock3", "dataview", "image", "song"},
|
||||
}),
|
||||
"childBlock": simple.New(&model.Block{Id: "childBlock",
|
||||
Content: &model.BlockContentOfText{
|
||||
|
@ -129,6 +129,31 @@ func TestState_DepSmartIdsLinksAndRelations(t *testing.T) {
|
|||
TargetBlockId: "objectID4",
|
||||
},
|
||||
}}),
|
||||
"dataview": simple.New(&model.Block{Id: "dataview",
|
||||
Content: &model.BlockContentOfDataview{
|
||||
Dataview: &model.BlockContentDataview{
|
||||
Views: []*model.BlockContentDataviewView{{
|
||||
Id: "Today's tasks",
|
||||
DefaultObjectTypeId: "task",
|
||||
DefaultTemplateId: "Task with a picture",
|
||||
}},
|
||||
TargetObjectId: "taskTracker",
|
||||
},
|
||||
}}),
|
||||
"image": simple.New(&model.Block{Id: "image",
|
||||
Content: &model.BlockContentOfFile{
|
||||
File: &model.BlockContentFile{
|
||||
TargetObjectId: "image with cute kitten",
|
||||
Type: model.BlockContentFile_Image,
|
||||
},
|
||||
}}),
|
||||
"song": simple.New(&model.Block{Id: "song",
|
||||
Content: &model.BlockContentOfFile{
|
||||
File: &model.BlockContentFile{
|
||||
TargetObjectId: "Let it be",
|
||||
Type: model.BlockContentFile_Audio,
|
||||
},
|
||||
}}),
|
||||
}).(*state.State)
|
||||
converter := &fakeConverter{}
|
||||
|
||||
|
@ -153,13 +178,23 @@ func TestState_DepSmartIdsLinksAndRelations(t *testing.T) {
|
|||
stateWithLinks.AddRelationLinks(relations...)
|
||||
|
||||
t.Run("blocks option is turned on: get ids from blocks", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, true, false, false, false, false)
|
||||
assert.Len(t, objectIDs, 4)
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true})
|
||||
assert.Len(t, objectIDs, 9)
|
||||
})
|
||||
|
||||
t.Run("dataview only target option is turned on: get only target from blocks", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true, DataviewBlockOnlyTarget: true})
|
||||
assert.Len(t, objectIDs, 7)
|
||||
})
|
||||
|
||||
t.Run("no images option is turned on: get ids from blocks except images", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true, NoImages: true})
|
||||
assert.Len(t, objectIDs, 8)
|
||||
})
|
||||
|
||||
t.Run("blocks option and relations options are turned on: get ids from blocks and relations", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, true, false, true, false, false)
|
||||
assert.Len(t, objectIDs, 8) // 4 links + 4 relations
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true, Relations: true})
|
||||
assert.Len(t, objectIDs, 13) // 9 links + 4 relations
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -238,15 +273,15 @@ func TestState_DepSmartIdsLinksDetailsAndRelations(t *testing.T) {
|
|||
stateWithLinks.SetDetail("relation5", pbtypes.Int64(time.Now().Unix()))
|
||||
|
||||
t.Run("blocks option is turned on: get ids from blocks", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, true, false, false, false, false)
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true})
|
||||
assert.Len(t, objectIDs, 4) // links
|
||||
})
|
||||
t.Run("blocks option and relations option are turned on: get ids from blocks and relations", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, true, false, true, false, false)
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true, Relations: true})
|
||||
assert.Len(t, objectIDs, 9) // 4 links + 5 relations
|
||||
})
|
||||
t.Run("blocks, relations and details option are turned on: get ids from blocks, relations and details", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, true, true, true, false, false)
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true, Relations: true, Details: true})
|
||||
assert.Len(t, objectIDs, 14) // 4 links + 5 relations + 3 options + 1 fileID + 1 date
|
||||
})
|
||||
}
|
||||
|
@ -280,12 +315,12 @@ func TestState_DepSmartIdsLinksCreatorModifierWorkspace(t *testing.T) {
|
|||
converter := &fakeConverter{}
|
||||
|
||||
t.Run("details option is turned on: get ids only from details", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, false, true, false, false, true)
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Details: true, CreatorModifierWorkspace: true})
|
||||
assert.Len(t, objectIDs, 3) // creator + lastModifiedBy + 1 date
|
||||
})
|
||||
|
||||
t.Run("details and relations options are turned on: get ids from details and relations", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, false, true, true, false, true)
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Details: true, Relations: true, CreatorModifierWorkspace: true})
|
||||
assert.Len(t, objectIDs, 7) // 4 relations + creator + lastModifiedBy + 1 date
|
||||
})
|
||||
}
|
||||
|
@ -297,11 +332,11 @@ func TestState_DepSmartIdsObjectTypes(t *testing.T) {
|
|||
converter := &fakeConverter{}
|
||||
|
||||
t.Run("all options are turned off", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, false, false, false, false, false)
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{})
|
||||
assert.Len(t, objectIDs, 0)
|
||||
})
|
||||
t.Run("objTypes option is turned on, get only object types id", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, false, false, false, true, false)
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Types: true})
|
||||
assert.Equal(t, []string{
|
||||
fakeDerivedID(bundle.TypeKeyPage.String()),
|
||||
}, objectIDs)
|
||||
|
|
|
@ -152,9 +152,10 @@ func (t *treeSyncer) ShouldSync(peerId string) bool {
|
|||
return t.isSyncing
|
||||
}
|
||||
|
||||
func (t *treeSyncer) SyncAll(ctx context.Context, peerId string, existing, missing []string) (err error) {
|
||||
func (t *treeSyncer) SyncAll(ctx context.Context, p peer.Peer, existing, missing []string) (err error) {
|
||||
t.Lock()
|
||||
defer t.Unlock()
|
||||
peerId := p.Id()
|
||||
isResponsible := slices.Contains(t.nodeConf.NodeIds(t.spaceId), peerId)
|
||||
t.sendSyncEvents(existing, missing, isResponsible)
|
||||
reqExec, exists := t.requestPools[peerId]
|
||||
|
@ -176,7 +177,7 @@ func (t *treeSyncer) SyncAll(ctx context.Context, peerId string, existing, missi
|
|||
for _, id := range existing {
|
||||
idCopy := id
|
||||
err = headExec.tryAdd(idCopy, func() {
|
||||
t.updateTree(peerId, idCopy)
|
||||
t.updateTree(p, idCopy)
|
||||
})
|
||||
if err != nil {
|
||||
log.Error("failed to add to head queue", zap.Error(err))
|
||||
|
@ -219,7 +220,8 @@ func (t *treeSyncer) requestTree(peerId, id string) {
|
|||
}
|
||||
}
|
||||
|
||||
func (t *treeSyncer) updateTree(peerId, id string) {
|
||||
func (t *treeSyncer) updateTree(p peer.Peer, id string) {
|
||||
peerId := p.Id()
|
||||
log := log.With(zap.String("treeId", id), zap.String("spaceId", t.spaceId))
|
||||
ctx := peer.CtxWithPeerId(t.mainCtx, peerId)
|
||||
tr, err := t.treeManager.GetTree(ctx, t.spaceId, id)
|
||||
|
@ -232,7 +234,7 @@ func (t *treeSyncer) updateTree(peerId, id string) {
|
|||
log.Warn("not a sync tree")
|
||||
return
|
||||
}
|
||||
if err = syncTree.SyncWithPeer(ctx, peerId); err != nil {
|
||||
if err = syncTree.SyncWithPeer(ctx, p); err != nil {
|
||||
log.Warn("synctree.SyncWithPeer error", zap.Error(err))
|
||||
} else {
|
||||
log.Debug("success synctree.SyncWithPeer")
|
||||
|
|
|
@ -11,6 +11,7 @@ import (
|
|||
"github.com/anyproto/any-sync/commonspace/object/tree/objecttree/mock_objecttree"
|
||||
"github.com/anyproto/any-sync/commonspace/object/tree/synctree/mock_synctree"
|
||||
"github.com/anyproto/any-sync/commonspace/object/treemanager/mock_treemanager"
|
||||
"github.com/anyproto/any-sync/net/rpc/rpctest"
|
||||
"github.com/anyproto/any-sync/nodeconf/mock_nodeconf"
|
||||
"github.com/stretchr/testify/require"
|
||||
"go.uber.org/mock/gomock"
|
||||
|
@ -66,16 +67,17 @@ func TestTreeSyncer(t *testing.T) {
|
|||
peerId := "peerId"
|
||||
existingId := "existing"
|
||||
missingId := "missing"
|
||||
pr := rpctest.MockPeer{}
|
||||
|
||||
t.Run("delayed sync", func(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
fx := newFixture(t, spaceId)
|
||||
fx.treeManager.EXPECT().GetTree(gomock.Any(), spaceId, existingId).Return(fx.existingMock, nil)
|
||||
fx.existingMock.EXPECT().SyncWithPeer(gomock.Any(), peerId).Return(nil)
|
||||
fx.existingMock.EXPECT().SyncWithPeer(gomock.Any(), pr).Return(nil)
|
||||
fx.treeManager.EXPECT().GetTree(gomock.Any(), spaceId, missingId).Return(fx.missingMock, nil)
|
||||
fx.nodeConf.EXPECT().NodeIds(spaceId).Return([]string{})
|
||||
fx.syncStatus.EXPECT().RemoveAllExcept(peerId, []string{existingId}).Return()
|
||||
err := fx.SyncAll(context.Background(), peerId, []string{existingId}, []string{missingId})
|
||||
err := fx.SyncAll(context.Background(), pr, []string{existingId}, []string{missingId})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, fx.requestPools[peerId])
|
||||
require.NotNil(t, fx.headPools[peerId])
|
||||
|
@ -89,12 +91,12 @@ func TestTreeSyncer(t *testing.T) {
|
|||
ctx := context.Background()
|
||||
fx := newFixture(t, spaceId)
|
||||
fx.treeManager.EXPECT().GetTree(gomock.Any(), spaceId, existingId).Return(fx.existingMock, nil)
|
||||
fx.existingMock.EXPECT().SyncWithPeer(gomock.Any(), peerId).Return(nil)
|
||||
fx.existingMock.EXPECT().SyncWithPeer(gomock.Any(), pr).Return(nil)
|
||||
fx.treeManager.EXPECT().GetTree(gomock.Any(), spaceId, missingId).Return(fx.missingMock, nil)
|
||||
fx.nodeConf.EXPECT().NodeIds(spaceId).Return([]string{peerId})
|
||||
fx.syncDetailsUpdater.EXPECT().UpdateSpaceDetails([]string{existingId}, []string{missingId}, spaceId)
|
||||
fx.syncStatus.EXPECT().RemoveAllExcept(peerId, []string{existingId}).Return()
|
||||
err := fx.SyncAll(context.Background(), peerId, []string{existingId}, []string{missingId})
|
||||
err := fx.SyncAll(context.Background(), pr, []string{existingId}, []string{missingId})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, fx.requestPools[peerId])
|
||||
require.NotNil(t, fx.headPools[peerId])
|
||||
|
@ -108,13 +110,13 @@ func TestTreeSyncer(t *testing.T) {
|
|||
ctx := context.Background()
|
||||
fx := newFixture(t, spaceId)
|
||||
fx.treeManager.EXPECT().GetTree(gomock.Any(), spaceId, existingId).Return(fx.existingMock, nil)
|
||||
fx.existingMock.EXPECT().SyncWithPeer(gomock.Any(), peerId).Return(nil)
|
||||
fx.existingMock.EXPECT().SyncWithPeer(gomock.Any(), pr).Return(nil)
|
||||
fx.treeManager.EXPECT().GetTree(gomock.Any(), spaceId, missingId).Return(fx.missingMock, nil)
|
||||
fx.nodeConf.EXPECT().NodeIds(spaceId).Return([]string{})
|
||||
fx.syncStatus.EXPECT().RemoveAllExcept(peerId, []string{existingId}).Return()
|
||||
|
||||
fx.StartSync()
|
||||
err := fx.SyncAll(context.Background(), peerId, []string{existingId}, []string{missingId})
|
||||
err := fx.SyncAll(context.Background(), pr, []string{existingId}, []string{missingId})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, fx.requestPools[peerId])
|
||||
require.NotNil(t, fx.headPools[peerId])
|
||||
|
@ -127,13 +129,13 @@ func TestTreeSyncer(t *testing.T) {
|
|||
ctx := context.Background()
|
||||
fx := newFixture(t, spaceId)
|
||||
fx.treeManager.EXPECT().GetTree(gomock.Any(), spaceId, existingId).Return(fx.existingMock, nil)
|
||||
fx.existingMock.EXPECT().SyncWithPeer(gomock.Any(), peerId).Return(nil)
|
||||
fx.existingMock.EXPECT().SyncWithPeer(gomock.Any(), pr).Return(nil)
|
||||
fx.treeManager.EXPECT().GetTree(gomock.Any(), spaceId, missingId).Return(fx.missingMock, nil)
|
||||
fx.nodeConf.EXPECT().NodeIds(spaceId).Return([]string{})
|
||||
fx.syncStatus.EXPECT().RemoveAllExcept(peerId, []string{existingId, existingId}).Return()
|
||||
|
||||
fx.StartSync()
|
||||
err := fx.SyncAll(context.Background(), peerId, []string{existingId, existingId}, []string{missingId, missingId, missingId})
|
||||
err := fx.SyncAll(context.Background(), pr, []string{existingId, existingId}, []string{missingId, missingId, missingId})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, fx.requestPools[peerId])
|
||||
require.NotNil(t, fx.headPools[peerId])
|
||||
|
@ -147,7 +149,7 @@ func TestTreeSyncer(t *testing.T) {
|
|||
ch := make(chan struct{}, 2)
|
||||
fx := newFixture(t, spaceId)
|
||||
fx.treeManager.EXPECT().GetTree(gomock.Any(), spaceId, existingId).Return(fx.existingMock, nil)
|
||||
fx.existingMock.EXPECT().SyncWithPeer(gomock.Any(), peerId).Return(nil)
|
||||
fx.existingMock.EXPECT().SyncWithPeer(gomock.Any(), pr).Return(nil)
|
||||
fx.treeManager.EXPECT().GetTree(gomock.Any(), spaceId, missingId+"1").DoAndReturn(func(ctx context.Context, spaceId, treeId string) (objecttree.ObjectTree, error) {
|
||||
<-ch
|
||||
return fx.missingMock, nil
|
||||
|
@ -160,7 +162,7 @@ func TestTreeSyncer(t *testing.T) {
|
|||
fx.syncStatus.EXPECT().RemoveAllExcept(peerId, []string{existingId}).Return()
|
||||
|
||||
fx.StartSync()
|
||||
err := fx.SyncAll(context.Background(), peerId, []string{existingId}, []string{missingId + "1", missingId + "2"})
|
||||
err := fx.SyncAll(context.Background(), pr, []string{existingId}, []string{missingId + "1", missingId + "2"})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, fx.requestPools[peerId])
|
||||
require.NotNil(t, fx.headPools[peerId])
|
||||
|
@ -188,7 +190,7 @@ func TestTreeSyncer(t *testing.T) {
|
|||
fx.syncStatus.EXPECT().RemoveAllExcept(peerId, existing).Return()
|
||||
|
||||
fx.StartSync()
|
||||
err := fx.SyncAll(context.Background(), peerId, existing, []string{missingId})
|
||||
err := fx.SyncAll(context.Background(), pr, existing, []string{missingId})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, fx.requestPools[peerId])
|
||||
require.NotNil(t, fx.headPools[peerId])
|
||||
|
|
|
@ -40,12 +40,12 @@ type accountService interface {
|
|||
|
||||
type Space interface {
|
||||
Id() string
|
||||
IsPersonal() bool
|
||||
TreeBuilder() objecttreebuilder.TreeBuilder
|
||||
GetRelationIdByKey(ctx context.Context, key domain.RelationKey) (id string, err error)
|
||||
GetTypeIdByKey(ctx context.Context, key domain.TypeKey) (id string, err error)
|
||||
DeriveObjectID(ctx context.Context, uniqueKey domain.UniqueKey) (id string, err error)
|
||||
StoredIds() []string
|
||||
IsPersonal() bool
|
||||
}
|
||||
|
||||
type Service interface {
|
||||
|
|
|
@ -117,7 +117,12 @@ func (d *dot) Add(space smartblock.Space, st *state.State) error {
|
|||
|
||||
// TODO: add relations
|
||||
|
||||
dependentObjectIDs := objectlink.DependentObjectIDs(st, space, true, true, false, false, false)
|
||||
dependentObjectIDs := objectlink.DependentObjectIDs(st, space, objectlink.Flags{
|
||||
Blocks: true,
|
||||
Details: true,
|
||||
Relations: false,
|
||||
Types: false,
|
||||
})
|
||||
for _, depID := range dependentObjectIDs {
|
||||
t, err := d.sbtProvider.Type(st.SpaceID(), depID)
|
||||
if err != nil {
|
||||
|
|
|
@ -93,7 +93,12 @@ func (g *graphjson) Add(space smartblock.Space, st *state.State) error {
|
|||
g.nodes[st.RootId()] = &n
|
||||
// TODO: add relations
|
||||
|
||||
dependentObjectIDs := objectlink.DependentObjectIDs(st, space, true, true, false, false, false)
|
||||
dependentObjectIDs := objectlink.DependentObjectIDs(st, space, objectlink.Flags{
|
||||
Blocks: true,
|
||||
Details: true,
|
||||
Relations: false,
|
||||
Types: false,
|
||||
})
|
||||
for _, depID := range dependentObjectIDs {
|
||||
t, err := g.sbtProvider.Type(st.SpaceID(), depID)
|
||||
if err != nil {
|
||||
|
|
|
@ -165,7 +165,7 @@ func (d *debug) TreeHeads(ctx context.Context, id string) (info TreeInfo, err er
|
|||
if err != nil {
|
||||
return
|
||||
}
|
||||
tree, err := spc.TreeBuilder().BuildHistoryTree(ctx, id, objecttreebuilder.HistoryTreeOpts{})
|
||||
tree, err := spc.TreeBuilder().BuildHistoryTree(ctx, id, objecttreebuilder.HistoryTreeOpts{Heads: []string{""}})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -187,7 +187,7 @@ func (d *debug) DumpTree(ctx context.Context, objectID string, path string, anon
|
|||
if err != nil {
|
||||
return
|
||||
}
|
||||
tree, err := spc.TreeBuilder().BuildHistoryTree(ctx, objectID, objecttreebuilder.HistoryTreeOpts{BuildFullTree: true})
|
||||
tree, err := spc.TreeBuilder().BuildHistoryTree(ctx, objectID, objecttreebuilder.HistoryTreeOpts{})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -88,12 +88,15 @@ func (t *treeImporter) Import(fullTree bool, beforeId string) (err error) {
|
|||
if err != nil {
|
||||
return
|
||||
}
|
||||
var heads []string
|
||||
if !fullTree {
|
||||
heads = []string{beforeId}
|
||||
}
|
||||
t.objectTree, err = objecttree.BuildNonVerifiableHistoryTree(objecttree.HistoryTreeParams{
|
||||
TreeStorage: t.treeStorage,
|
||||
AclList: aclList,
|
||||
BeforeId: beforeId,
|
||||
Heads: heads,
|
||||
IncludeBeforeId: true,
|
||||
BuildFullTree: fullTree,
|
||||
})
|
||||
|
||||
return
|
||||
|
|
|
@ -24,6 +24,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/core/files"
|
||||
"github.com/anyproto/anytype-heart/core/files/fileoffloader"
|
||||
"github.com/anyproto/anytype-heart/core/filestorage/filesync"
|
||||
"github.com/anyproto/anytype-heart/core/session"
|
||||
"github.com/anyproto/anytype-heart/core/syncstatus/filesyncstatus"
|
||||
"github.com/anyproto/anytype-heart/pb"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
|
@ -81,6 +82,7 @@ type service struct {
|
|||
objectStore objectstore.ObjectStore
|
||||
spaceIdResolver idresolver.Resolver
|
||||
migrationQueue *persistentqueue.Queue[*migrationItem]
|
||||
objectArchiver objectArchiver
|
||||
|
||||
indexer *indexer
|
||||
|
||||
|
@ -120,6 +122,7 @@ func (s *service) Init(a *app.App) error {
|
|||
s.fileStore = app.MustComponent[filestore.FileStore](a)
|
||||
s.spaceIdResolver = app.MustComponent[idresolver.Resolver](a)
|
||||
s.fileOffloader = app.MustComponent[fileoffloader.Service](a)
|
||||
s.objectArchiver = app.MustComponent[objectArchiver](a)
|
||||
cfg := app.MustComponent[configProvider](a)
|
||||
|
||||
s.indexer = s.newIndexer()
|
||||
|
@ -148,7 +151,11 @@ func (s *service) Run(_ context.Context) error {
|
|||
go func() {
|
||||
defer s.closeWg.Done()
|
||||
|
||||
err := s.ensureNotSyncedFilesAddedToQueue()
|
||||
err := s.deleteMigratedFilesInNonPersonalSpaces(context.Background())
|
||||
if err != nil {
|
||||
log.Errorf("delete migrated files in non personal spaces: %v", err)
|
||||
}
|
||||
err = s.ensureNotSyncedFilesAddedToQueue()
|
||||
if err != nil {
|
||||
log.Errorf("ensure not synced files added to queue: %v", err)
|
||||
}
|
||||
|
@ -158,6 +165,49 @@ func (s *service) Run(_ context.Context) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
type objectArchiver interface {
|
||||
SetPagesIsArchived(ctx session.Context, req pb.RpcObjectListSetIsArchivedRequest) error
|
||||
}
|
||||
|
||||
func (s *service) deleteMigratedFilesInNonPersonalSpaces(ctx context.Context) error {
|
||||
personalSpace, err := s.spaceService.GetPersonalSpace(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
objectIds, _, err := s.objectStore.QueryObjectIDs(database.Query{
|
||||
Filters: []*model.BlockContentDataviewFilter{
|
||||
{
|
||||
RelationKey: bundle.RelationKeyFileId.String(),
|
||||
Condition: model.BlockContentDataviewFilter_NotEmpty,
|
||||
},
|
||||
{
|
||||
RelationKey: bundle.RelationKeyUniqueKey.String(),
|
||||
Condition: model.BlockContentDataviewFilter_NotEmpty,
|
||||
},
|
||||
{
|
||||
RelationKey: bundle.RelationKeySpaceId.String(),
|
||||
Condition: model.BlockContentDataviewFilter_NotEqual,
|
||||
Value: pbtypes.String(personalSpace.Id()),
|
||||
},
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(objectIds) > 0 {
|
||||
err = s.objectArchiver.SetPagesIsArchived(nil, pb.RpcObjectListSetIsArchivedRequest{
|
||||
ObjectIds: objectIds,
|
||||
IsArchived: true,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// After migrating to new sync queue we need to ensure that all not synced files are added to the queue
|
||||
func (s *service) ensureNotSyncedFilesAddedToQueue() error {
|
||||
records, err := s.objectStore.Query(database.Query{
|
||||
|
|
|
@ -29,6 +29,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/core/filestorage"
|
||||
"github.com/anyproto/anytype-heart/core/filestorage/filesync"
|
||||
"github.com/anyproto/anytype-heart/core/filestorage/rpcstore"
|
||||
"github.com/anyproto/anytype-heart/core/session"
|
||||
wallet2 "github.com/anyproto/anytype-heart/core/wallet"
|
||||
"github.com/anyproto/anytype-heart/core/wallet/mock_wallet"
|
||||
"github.com/anyproto/anytype-heart/pb"
|
||||
|
@ -68,6 +69,16 @@ func (c *dummyConfig) Name() string {
|
|||
return "dummyConfig"
|
||||
}
|
||||
|
||||
type dummyObjectArchiver struct{}
|
||||
|
||||
func (a *dummyObjectArchiver) SetPagesIsArchived(ctx session.Context, req pb.RpcObjectListSetIsArchivedRequest) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *dummyObjectArchiver) Name() string { return "dummyObjectArchiver" }
|
||||
|
||||
func (a *dummyObjectArchiver) Init(_ *app.App) error { return nil }
|
||||
|
||||
const testResolveRetryDelay = 5 * time.Millisecond
|
||||
|
||||
func newFixture(t *testing.T) *fixture {
|
||||
|
@ -85,6 +96,7 @@ func newFixture(t *testing.T) *fixture {
|
|||
eventSender.EXPECT().Broadcast(mock.Anything).Return().Maybe()
|
||||
fileService := files.New()
|
||||
spaceService := mock_space.NewMockService(t)
|
||||
spaceService.EXPECT().GetPersonalSpace(mock.Anything).Return(nil, fmt.Errorf("not needed")).Maybe()
|
||||
spaceIdResolver := mock_idresolver.NewMockResolver(t)
|
||||
|
||||
svc := New(testResolveRetryDelay, testResolveRetryDelay)
|
||||
|
@ -114,6 +126,7 @@ func newFixture(t *testing.T) *fixture {
|
|||
a.Register(testutil.PrepareMock(ctx, a, mock_accountservice.NewMockService(ctrl)))
|
||||
a.Register(testutil.PrepareMock(ctx, a, wallet))
|
||||
a.Register(&config.Config{DisableFileConfig: true, NetworkMode: pb.RpcAccount_DefaultConfig, PeferYamuxTransport: true})
|
||||
a.Register(&dummyObjectArchiver{})
|
||||
|
||||
err = a.Start(ctx)
|
||||
require.NoError(t, err)
|
||||
|
|
|
@ -2,8 +2,11 @@ package history
|
|||
|
||||
import (
|
||||
"context"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"slices"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/anyproto/any-sync/app"
|
||||
|
@ -11,6 +14,7 @@ import (
|
|||
"github.com/anyproto/any-sync/commonspace/objecttreebuilder"
|
||||
"github.com/gogo/protobuf/proto"
|
||||
"github.com/samber/lo"
|
||||
"github.com/zeebo/blake3"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block/cache"
|
||||
smartblock2 "github.com/anyproto/anytype-heart/core/block/editor/smartblock"
|
||||
|
@ -37,8 +41,14 @@ const versionGroupInterval = time.Minute * 5
|
|||
|
||||
var log = logging.Logger("anytype-mw-history")
|
||||
|
||||
var hashersPool = &sync.Pool{
|
||||
New: func() any {
|
||||
return blake3.New()
|
||||
},
|
||||
}
|
||||
|
||||
func New() History {
|
||||
return new(history)
|
||||
return &history{heads: make(map[string]string, 0)}
|
||||
}
|
||||
|
||||
type History interface {
|
||||
|
@ -54,6 +64,7 @@ type history struct {
|
|||
picker cache.ObjectGetter
|
||||
objectStore objectstore.ObjectStore
|
||||
spaceService space.Service
|
||||
heads map[string]string
|
||||
}
|
||||
|
||||
func (h *history) Init(a *app.App) (err error) {
|
||||
|
@ -84,7 +95,12 @@ func (h *history) Show(id domain.FullID, versionID string) (bs *model.ObjectView
|
|||
}
|
||||
s.SetDetailAndBundledRelation(bundle.RelationKeyType, pbtypes.String(typeId))
|
||||
|
||||
dependentObjectIDs := objectlink.DependentObjectIDs(s, space, true, true, false, true, false)
|
||||
dependentObjectIDs := objectlink.DependentObjectIDs(s, space, objectlink.Flags{
|
||||
Blocks: true,
|
||||
Details: true,
|
||||
Relations: false,
|
||||
Types: true,
|
||||
})
|
||||
// nolint:errcheck
|
||||
meta, _ := h.objectStore.QueryByID(dependentObjectIDs)
|
||||
|
||||
|
@ -116,6 +132,8 @@ func (h *history) Show(id domain.FullID, versionID string) (bs *model.ObjectView
|
|||
}
|
||||
|
||||
func (h *history) Versions(id domain.FullID, lastVersionId string, limit int) (resp []*pb.RpcHistoryVersion, err error) {
|
||||
hasher := hashersPool.Get().(*blake3.Hasher)
|
||||
defer hashersPool.Put(hasher)
|
||||
if limit <= 0 {
|
||||
limit = 100
|
||||
}
|
||||
|
@ -129,6 +147,7 @@ func (h *history) Versions(id domain.FullID, lastVersionId string, limit int) (r
|
|||
}
|
||||
|
||||
for len(resp) < limit {
|
||||
curHeads := make(map[string]struct{})
|
||||
tree, _, e := h.treeWithId(id, lastVersionId, includeLastId)
|
||||
if e != nil {
|
||||
return nil, e
|
||||
|
@ -137,12 +156,7 @@ func (h *history) Versions(id domain.FullID, lastVersionId string, limit int) (r
|
|||
|
||||
e = tree.IterateFrom(tree.Root().Id, source.UnmarshalChange, func(c *objecttree.Change) (isContinue bool) {
|
||||
participantId := domain.NewParticipantId(id.SpaceID, c.Identity.Account())
|
||||
data = append(data, &pb.RpcHistoryVersion{
|
||||
Id: c.Id,
|
||||
PreviousIds: c.PreviousIds,
|
||||
AuthorId: participantId,
|
||||
Time: c.Timestamp,
|
||||
})
|
||||
data = h.fillVersionData(c, curHeads, participantId, data, hasher)
|
||||
return true
|
||||
})
|
||||
if e != nil {
|
||||
|
@ -183,6 +197,40 @@ func (h *history) Versions(id domain.FullID, lastVersionId string, limit int) (r
|
|||
return
|
||||
}
|
||||
|
||||
func (h *history) retrieveHeads(versionId string) []string {
|
||||
if heads, ok := h.heads[versionId]; ok {
|
||||
return strings.Split(heads, " ")
|
||||
}
|
||||
return []string{versionId}
|
||||
}
|
||||
|
||||
func (h *history) fillVersionData(change *objecttree.Change, curHeads map[string]struct{}, participantId string, data []*pb.RpcHistoryVersion, hasher *blake3.Hasher) []*pb.RpcHistoryVersion {
|
||||
curHeads[change.Id] = struct{}{}
|
||||
for _, previousId := range change.PreviousIds {
|
||||
delete(curHeads, previousId)
|
||||
}
|
||||
version := &pb.RpcHistoryVersion{
|
||||
Id: change.Id,
|
||||
PreviousIds: change.PreviousIds,
|
||||
AuthorId: participantId,
|
||||
Time: change.Timestamp,
|
||||
}
|
||||
if len(curHeads) > 1 {
|
||||
var combinedHeads string
|
||||
for head := range curHeads {
|
||||
combinedHeads += head + " "
|
||||
}
|
||||
combinedHeads = strings.TrimSpace(combinedHeads)
|
||||
hasher.Reset()
|
||||
// nolint: errcheck
|
||||
hasher.Write([]byte(combinedHeads)) // it never returns an error
|
||||
hashSum := hex.EncodeToString(hasher.Sum(nil))
|
||||
h.heads[hashSum] = combinedHeads
|
||||
version.Id = hashSum
|
||||
}
|
||||
return append(data, version)
|
||||
}
|
||||
|
||||
func (h *history) DiffVersions(req *pb.RpcHistoryDiffVersionsRequest) ([]*pb.EventMessage, *model.ObjectView, error) {
|
||||
id := domain.FullID{
|
||||
ObjectID: req.ObjectId,
|
||||
|
@ -209,7 +257,12 @@ func (h *history) DiffVersions(req *pb.RpcHistoryDiffVersionsRequest) ([]*pb.Eve
|
|||
if err != nil {
|
||||
return nil, nil, fmt.Errorf("get space: %w", err)
|
||||
}
|
||||
dependentObjectIDs := objectlink.DependentObjectIDs(currState, spc, true, true, false, true, false)
|
||||
dependentObjectIDs := objectlink.DependentObjectIDs(currState, spc, objectlink.Flags{
|
||||
Blocks: true,
|
||||
Details: true,
|
||||
Relations: false,
|
||||
Types: true,
|
||||
})
|
||||
meta, err := h.objectStore.QueryByID(dependentObjectIDs)
|
||||
if err != nil {
|
||||
return nil, nil, fmt.Errorf("get dependencies: %w", err)
|
||||
|
@ -458,14 +511,15 @@ func (h *history) SetVersion(id domain.FullID, versionId string) (err error) {
|
|||
})
|
||||
}
|
||||
|
||||
func (h *history) treeWithId(id domain.FullID, beforeId string, includeBeforeId bool) (ht objecttree.HistoryTree, sbt smartblock.SmartBlockType, err error) {
|
||||
func (h *history) treeWithId(id domain.FullID, versionId string, includeBeforeId bool) (ht objecttree.HistoryTree, sbt smartblock.SmartBlockType, err error) {
|
||||
heads := h.retrieveHeads(versionId)
|
||||
spc, err := h.spaceService.Get(context.Background(), id.SpaceID)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ht, err = spc.TreeBuilder().BuildHistoryTree(context.Background(), id.ObjectID, objecttreebuilder.HistoryTreeOpts{
|
||||
BeforeId: beforeId,
|
||||
Include: includeBeforeId,
|
||||
Heads: heads,
|
||||
Include: includeBeforeId,
|
||||
})
|
||||
if err != nil {
|
||||
return
|
||||
|
|
|
@ -990,6 +990,111 @@ func TestHistory_Versions(t *testing.T) {
|
|||
assert.Nil(t, err)
|
||||
assert.Len(t, resp, 0)
|
||||
})
|
||||
t.Run("changes from parallel editing", func(t *testing.T) {
|
||||
// given
|
||||
objectId := "objectId"
|
||||
spaceID := "spaceID"
|
||||
versionId := "versionId"
|
||||
|
||||
accountKeys, _ := accountdata.NewRandom()
|
||||
account := accountKeys.SignKey.GetPublic()
|
||||
|
||||
ch := &objecttree.Change{
|
||||
Id: "id",
|
||||
PreviousIds: []string{"id2"},
|
||||
Identity: account,
|
||||
Model: &pb.Change{
|
||||
Content: []*pb.ChangeContent{
|
||||
{
|
||||
Value: &pb.ChangeContentValueOfBlockUpdate{
|
||||
BlockUpdate: &pb.ChangeBlockUpdate{
|
||||
Events: []*pb.EventMessage{
|
||||
{
|
||||
Value: &pb.EventMessageValueOfBlockSetText{
|
||||
BlockSetText: &pb.EventBlockSetText{
|
||||
Id: "blockId",
|
||||
Text: &pb.EventBlockSetTextText{
|
||||
Value: "new text",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
ch1 := &objecttree.Change{
|
||||
Identity: account,
|
||||
Id: "id1",
|
||||
PreviousIds: []string{"id2"},
|
||||
Model: &pb.Change{
|
||||
Content: []*pb.ChangeContent{
|
||||
{
|
||||
Value: &pb.ChangeContentValueOfBlockUpdate{
|
||||
BlockUpdate: &pb.ChangeBlockUpdate{
|
||||
Events: []*pb.EventMessage{
|
||||
{
|
||||
Value: &pb.EventMessageValueOfBlockSetText{
|
||||
BlockSetText: &pb.EventBlockSetText{
|
||||
Id: "blockId",
|
||||
Text: &pb.EventBlockSetTextText{
|
||||
Value: "some text",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
ch2 := &objecttree.Change{
|
||||
Id: "id2",
|
||||
Identity: account,
|
||||
Model: &pb.Change{
|
||||
Content: []*pb.ChangeContent{
|
||||
{
|
||||
Value: &pb.ChangeContentValueOfBlockUpdate{
|
||||
BlockUpdate: &pb.ChangeBlockUpdate{
|
||||
Events: []*pb.EventMessage{
|
||||
{
|
||||
Value: &pb.EventMessageValueOfBlockSetText{
|
||||
BlockSetText: &pb.EventBlockSetText{
|
||||
Id: "blockId",
|
||||
Text: &pb.EventBlockSetTextText{
|
||||
Value: "new text some text",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
currChange := []*objecttree.Change{
|
||||
ch2, ch, ch1,
|
||||
}
|
||||
|
||||
history := newFixture(t, currChange, objectId, spaceID, versionId)
|
||||
|
||||
// when
|
||||
resp, err := history.Versions(domain.FullID{ObjectID: objectId, SpaceID: spaceID}, versionId, 10)
|
||||
|
||||
// then
|
||||
assert.Nil(t, err)
|
||||
assert.Len(t, resp, 3)
|
||||
})
|
||||
}
|
||||
|
||||
type historyFixture struct {
|
||||
|
@ -1010,6 +1115,7 @@ func newFixture(t *testing.T, expectedChanges []*objecttree.Change, objectId, sp
|
|||
history := &history{
|
||||
objectStore: objectstore.NewStoreFixture(t),
|
||||
spaceService: spaceService,
|
||||
heads: map[string]string{},
|
||||
}
|
||||
return &historyFixture{
|
||||
history: history,
|
||||
|
@ -1035,6 +1141,7 @@ func newFixtureDiffVersions(t *testing.T,
|
|||
history := &history{
|
||||
objectStore: objectstore.NewStoreFixture(t),
|
||||
spaceService: spaceService,
|
||||
heads: map[string]string{},
|
||||
}
|
||||
return &historyFixture{
|
||||
history: history,
|
||||
|
@ -1050,8 +1157,8 @@ func configureTreeBuilder(treeBuilder *mock_objecttreebuilder.MockTreeBuilder,
|
|||
spaceService *mock_space.MockService,
|
||||
) {
|
||||
treeBuilder.EXPECT().BuildHistoryTree(context.Background(), objectId, objecttreebuilder.HistoryTreeOpts{
|
||||
BeforeId: currVersionId,
|
||||
Include: true,
|
||||
Heads: []string{currVersionId},
|
||||
Include: true,
|
||||
}).Return(&historyStub{
|
||||
objectId: objectId,
|
||||
changes: expectedChanges,
|
||||
|
|
|
@ -642,6 +642,23 @@ func (mw *Middleware) ObjectListSetDetails(cctx context.Context, req *pb.RpcObje
|
|||
return response(pb.RpcObjectListSetDetailsResponseError_NULL, nil)
|
||||
}
|
||||
|
||||
func (mw *Middleware) ObjectListModifyDetailValues(_ context.Context, req *pb.RpcObjectListModifyDetailValuesRequest) *pb.RpcObjectListModifyDetailValuesResponse {
|
||||
response := func(code pb.RpcObjectListModifyDetailValuesResponseErrorCode, err error) *pb.RpcObjectListModifyDetailValuesResponse {
|
||||
m := &pb.RpcObjectListModifyDetailValuesResponse{Error: &pb.RpcObjectListModifyDetailValuesResponseError{Code: code}}
|
||||
if err != nil {
|
||||
m.Error.Description = getErrorDescription(err)
|
||||
}
|
||||
return m
|
||||
}
|
||||
err := mw.doBlockService(func(bs *block.Service) (err error) {
|
||||
return bs.ModifyDetailsList(req)
|
||||
})
|
||||
if err != nil {
|
||||
return response(pb.RpcObjectListModifyDetailValuesResponseError_UNKNOWN_ERROR, err)
|
||||
}
|
||||
return response(pb.RpcObjectListModifyDetailValuesResponseError_NULL, nil)
|
||||
}
|
||||
|
||||
func (mw *Middleware) ObjectSetLayout(cctx context.Context, req *pb.RpcObjectSetLayoutRequest) *pb.RpcObjectSetLayoutResponse {
|
||||
ctx := mw.newContext(cctx)
|
||||
response := func(code pb.RpcObjectSetLayoutResponseErrorCode, err error) *pb.RpcObjectSetLayoutResponse {
|
||||
|
|
|
@ -272,7 +272,7 @@ func (s *service) GetSubscriptionStatus(ctx context.Context, req *pb.RpcMembersh
|
|||
log.Debug("subscription status", zap.Any("from server", status), zap.Any("cached", cachedStatus))
|
||||
|
||||
// 5 - Send all messages to the client if needed
|
||||
if !isUpdateRequired(cacheErr, isCacheDisabled, isCacheExpired, cachedStatus, status) {
|
||||
if !isUpdateRequired(cacheErr, isCacheExpired, cachedStatus, status) {
|
||||
// no need to send events or enable/disable cache
|
||||
return &out, nil
|
||||
}
|
||||
|
@ -323,7 +323,7 @@ func canReturnCachedStatus(s *pb.RpcMembershipGetStatusResponse) bool {
|
|||
return s != nil && s.Data != nil && (s.Error == nil || s.Error.Code == pb.RpcMembershipGetStatusResponseError_NULL)
|
||||
}
|
||||
|
||||
func isUpdateRequired(cacheErr error, isCacheDisabled bool, isCacheExpired bool, cachedStatus *pb.RpcMembershipGetStatusResponse, status *proto.GetSubscriptionResponse) bool {
|
||||
func isUpdateRequired(cacheErr error, isCacheExpired bool, cachedStatus *pb.RpcMembershipGetStatusResponse, status *proto.GetSubscriptionResponse) bool {
|
||||
// 1 - If cache was empty or expired
|
||||
// -> treat at is if data was different
|
||||
isCacheEmpty := cacheErr != nil || cachedStatus == nil || cachedStatus.Data == nil || isCacheExpired
|
||||
|
@ -890,11 +890,12 @@ func (s *service) getAllTiers(ctx context.Context, req *pb.RpcMembershipGetTiers
|
|||
// empty return or error
|
||||
tiers, err := s.ppclient.GetAllTiers(ctx, &reqSigned)
|
||||
if err != nil {
|
||||
// if error here -> we do not create empty array
|
||||
// with GetStatus above the logic is different
|
||||
// there we create empty status and save it to cache
|
||||
log.Error("can not get tiers from payment node", zap.Error(err))
|
||||
return nil, err
|
||||
// If PP node didn't answer -> create empty tiers response
|
||||
log.Info("creating empty tiers in cache because can not get tiers from the payment node")
|
||||
|
||||
tiers = &proto.GetTiersResponse{
|
||||
Tiers: make([]*proto.TierData, 0),
|
||||
}
|
||||
}
|
||||
|
||||
// 3 - return out
|
||||
|
|
|
@ -1134,7 +1134,7 @@ func TestFinalizeSubscription(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestGetTiers(t *testing.T) {
|
||||
t.Run("fail if no cache, pp client returned error", func(t *testing.T) {
|
||||
t.Run("do not fail if no cache, pp client returned error", func(t *testing.T) {
|
||||
fx := newFixture(t)
|
||||
defer fx.finish(t)
|
||||
|
||||
|
@ -1145,13 +1145,30 @@ func TestGetTiers(t *testing.T) {
|
|||
fx.cache.EXPECT().IsCacheDisabled().Return(false)
|
||||
fx.cache.EXPECT().IsCacheExpired().Return(false)
|
||||
fx.cache.EXPECT().CacheGet().Return(nil, nil, nil)
|
||||
fx.cache.EXPECT().CacheSet(mock.AnythingOfType("*pb.RpcMembershipGetStatusResponse"), mock.AnythingOfType("*pb.RpcMembershipGetTiersResponse")).RunAndReturn(func(in *pb.RpcMembershipGetStatusResponse, tiers *pb.RpcMembershipGetTiersResponse) (err error) {
|
||||
return nil
|
||||
})
|
||||
fx.ppclient.EXPECT().GetSubscriptionStatus(gomock.Any(), gomock.Any()).DoAndReturn(func(ctx interface{}, in *psp.GetSubscriptionRequestSigned) (*psp.GetSubscriptionResponse, error) {
|
||||
return &psp.GetSubscriptionResponse{
|
||||
Tier: uint32(psp.SubscriptionTier_TierExplorer),
|
||||
Status: psp.SubscriptionStatus_StatusActive,
|
||||
DateStarted: uint64(timeNow.Unix()),
|
||||
DateEnds: uint64(subsExpire.Unix()),
|
||||
IsAutoRenew: true,
|
||||
PaymentMethod: psp.PaymentMethod_MethodCrypto,
|
||||
RequestedAnyName: "something.any",
|
||||
}, nil
|
||||
}).MinTimes(1)
|
||||
|
||||
fx.expectLimitsUpdated()
|
||||
|
||||
req := pb.RpcMembershipGetTiersRequest{
|
||||
NoCache: false,
|
||||
Locale: "en_US",
|
||||
}
|
||||
_, err := fx.GetTiers(ctx, &req)
|
||||
assert.Error(t, err)
|
||||
out, err := fx.GetTiers(ctx, &req)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, 0, len(out.Tiers))
|
||||
})
|
||||
|
||||
t.Run("success if no cache, empty response", func(t *testing.T) {
|
||||
|
|
|
@ -287,6 +287,9 @@ func (s *spaceSyncStatus) makeSyncEvent(spaceId string, params syncParams) *pb.E
|
|||
status = pb.EventSpace_Error
|
||||
err = pb.EventSpace_IncompatibleVersion
|
||||
}
|
||||
if params.compatibility == nodeconf.NetworkCompatibilityStatusNeedsUpdate {
|
||||
status = pb.EventSpace_NetworkNeedsUpdate
|
||||
}
|
||||
return &pb.EventSpaceSyncStatusUpdate{
|
||||
Id: spaceId,
|
||||
Status: status,
|
||||
|
|
|
@ -385,6 +385,33 @@ func Test(t *testing.T) {
|
|||
time.Sleep(100 * time.Millisecond)
|
||||
defer fx.ctrl.Finish()
|
||||
})
|
||||
t.Run("sync protocol compatibility", func(t *testing.T) {
|
||||
fx := newFixture(t, func(fx *fixture) {
|
||||
fx.networkConfig.EXPECT().GetNetworkMode().Return(pb.RpcAccount_DefaultConfig)
|
||||
fx.spaceIdGetter.EXPECT().AllSpaceIds().Return([]string{"spaceId"})
|
||||
fx.nodeStatus.EXPECT().GetNodeStatus("spaceId").Return(nodestatus.Online)
|
||||
fx.nodeUsage.EXPECT().GetNodeUsage(mock.Anything).Return(&files.NodeUsageResponse{
|
||||
Usage: filesync.NodeUsage{
|
||||
BytesLeft: 1000,
|
||||
AccountBytesLimit: 1000,
|
||||
},
|
||||
LocalUsageBytes: 0,
|
||||
}, nil)
|
||||
fx.nodeConf.EXPECT().NetworkCompatibilityStatus().Return(nodeconf.NetworkCompatibilityStatusNeedsUpdate)
|
||||
fx.eventSender.EXPECT().Broadcast(&pb.Event{
|
||||
Messages: []*pb.EventMessage{{
|
||||
Value: &pb.EventMessageValueOfSpaceSyncStatusUpdate{
|
||||
SpaceSyncStatusUpdate: &pb.EventSpaceSyncStatusUpdate{
|
||||
Id: "spaceId",
|
||||
Status: pb.EventSpace_NetworkNeedsUpdate,
|
||||
Network: pb.EventSpace_Anytype,
|
||||
},
|
||||
},
|
||||
}},
|
||||
})
|
||||
})
|
||||
defer fx.ctrl.Finish()
|
||||
})
|
||||
t.Run("hook new session", func(t *testing.T) {
|
||||
fx := newFixture(t, func(fx *fixture) {
|
||||
objs := genSyncingObjects(10, 100, "spaceId")
|
||||
|
|
|
@ -847,6 +847,11 @@
|
|||
- [Rpc.Object.ListExport.Request](#anytype-Rpc-Object-ListExport-Request)
|
||||
- [Rpc.Object.ListExport.Response](#anytype-Rpc-Object-ListExport-Response)
|
||||
- [Rpc.Object.ListExport.Response.Error](#anytype-Rpc-Object-ListExport-Response-Error)
|
||||
- [Rpc.Object.ListModifyDetailValues](#anytype-Rpc-Object-ListModifyDetailValues)
|
||||
- [Rpc.Object.ListModifyDetailValues.Request](#anytype-Rpc-Object-ListModifyDetailValues-Request)
|
||||
- [Rpc.Object.ListModifyDetailValues.Request.Operation](#anytype-Rpc-Object-ListModifyDetailValues-Request-Operation)
|
||||
- [Rpc.Object.ListModifyDetailValues.Response](#anytype-Rpc-Object-ListModifyDetailValues-Response)
|
||||
- [Rpc.Object.ListModifyDetailValues.Response.Error](#anytype-Rpc-Object-ListModifyDetailValues-Response-Error)
|
||||
- [Rpc.Object.ListSetDetails](#anytype-Rpc-Object-ListSetDetails)
|
||||
- [Rpc.Object.ListSetDetails.Request](#anytype-Rpc-Object-ListSetDetails-Request)
|
||||
- [Rpc.Object.ListSetDetails.Response](#anytype-Rpc-Object-ListSetDetails-Response)
|
||||
|
@ -1357,6 +1362,7 @@
|
|||
- [Rpc.Object.ListDelete.Response.Error.Code](#anytype-Rpc-Object-ListDelete-Response-Error-Code)
|
||||
- [Rpc.Object.ListDuplicate.Response.Error.Code](#anytype-Rpc-Object-ListDuplicate-Response-Error-Code)
|
||||
- [Rpc.Object.ListExport.Response.Error.Code](#anytype-Rpc-Object-ListExport-Response-Error-Code)
|
||||
- [Rpc.Object.ListModifyDetailValues.Response.Error.Code](#anytype-Rpc-Object-ListModifyDetailValues-Response-Error-Code)
|
||||
- [Rpc.Object.ListSetDetails.Response.Error.Code](#anytype-Rpc-Object-ListSetDetails-Response-Error-Code)
|
||||
- [Rpc.Object.ListSetIsArchived.Response.Error.Code](#anytype-Rpc-Object-ListSetIsArchived-Response-Error-Code)
|
||||
- [Rpc.Object.ListSetIsFavorite.Response.Error.Code](#anytype-Rpc-Object-ListSetIsFavorite-Response-Error-Code)
|
||||
|
@ -1905,6 +1911,7 @@
|
|||
| ObjectListSetIsFavorite | [Rpc.Object.ListSetIsFavorite.Request](#anytype-Rpc-Object-ListSetIsFavorite-Request) | [Rpc.Object.ListSetIsFavorite.Response](#anytype-Rpc-Object-ListSetIsFavorite-Response) | |
|
||||
| ObjectListSetObjectType | [Rpc.Object.ListSetObjectType.Request](#anytype-Rpc-Object-ListSetObjectType-Request) | [Rpc.Object.ListSetObjectType.Response](#anytype-Rpc-Object-ListSetObjectType-Response) | |
|
||||
| ObjectListSetDetails | [Rpc.Object.ListSetDetails.Request](#anytype-Rpc-Object-ListSetDetails-Request) | [Rpc.Object.ListSetDetails.Response](#anytype-Rpc-Object-ListSetDetails-Response) | |
|
||||
| ObjectListModifyDetailValues | [Rpc.Object.ListModifyDetailValues.Request](#anytype-Rpc-Object-ListModifyDetailValues-Request) | [Rpc.Object.ListModifyDetailValues.Response](#anytype-Rpc-Object-ListModifyDetailValues-Response) | |
|
||||
| ObjectApplyTemplate | [Rpc.Object.ApplyTemplate.Request](#anytype-Rpc-Object-ApplyTemplate-Request) | [Rpc.Object.ApplyTemplate.Response](#anytype-Rpc-Object-ApplyTemplate-Response) | |
|
||||
| ObjectToSet | [Rpc.Object.ToSet.Request](#anytype-Rpc-Object-ToSet-Request) | [Rpc.Object.ToSet.Response](#anytype-Rpc-Object-ToSet-Response) | ObjectToSet creates new set from given object and removes object |
|
||||
| ObjectToCollection | [Rpc.Object.ToCollection.Request](#anytype-Rpc-Object-ToCollection-Request) | [Rpc.Object.ToCollection.Response](#anytype-Rpc-Object-ToCollection-Response) | |
|
||||
|
@ -14345,6 +14352,81 @@ Deletes the object, keys from the local store and unsubscribe from remote change
|
|||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-ListModifyDetailValues"></a>
|
||||
|
||||
### Rpc.Object.ListModifyDetailValues
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-ListModifyDetailValues-Request"></a>
|
||||
|
||||
### Rpc.Object.ListModifyDetailValues.Request
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| objectIds | [string](#string) | repeated | |
|
||||
| operations | [Rpc.Object.ListModifyDetailValues.Request.Operation](#anytype-Rpc-Object-ListModifyDetailValues-Request-Operation) | repeated | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-ListModifyDetailValues-Request-Operation"></a>
|
||||
|
||||
### Rpc.Object.ListModifyDetailValues.Request.Operation
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| relationKey | [string](#string) | | |
|
||||
| add | [google.protobuf.Value](#google-protobuf-Value) | | |
|
||||
| set | [google.protobuf.Value](#google-protobuf-Value) | | |
|
||||
| remove | [google.protobuf.Value](#google-protobuf-Value) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-ListModifyDetailValues-Response"></a>
|
||||
|
||||
### Rpc.Object.ListModifyDetailValues.Response
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| error | [Rpc.Object.ListModifyDetailValues.Response.Error](#anytype-Rpc-Object-ListModifyDetailValues-Response-Error) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-ListModifyDetailValues-Response-Error"></a>
|
||||
|
||||
### Rpc.Object.ListModifyDetailValues.Response.Error
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| code | [Rpc.Object.ListModifyDetailValues.Response.Error.Code](#anytype-Rpc-Object-ListModifyDetailValues-Response-Error-Code) | | |
|
||||
| description | [string](#string) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-ListSetDetails"></a>
|
||||
|
||||
### Rpc.Object.ListSetDetails
|
||||
|
@ -21569,6 +21651,19 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er
|
|||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-ListModifyDetailValues-Response-Error-Code"></a>
|
||||
|
||||
### Rpc.Object.ListModifyDetailValues.Response.Error.Code
|
||||
|
||||
|
||||
| Name | Number | Description |
|
||||
| ---- | ------ | ----------- |
|
||||
| NULL | 0 | |
|
||||
| UNKNOWN_ERROR | 1 | |
|
||||
| BAD_INPUT | 2 | |
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-ListSetDetails-Response-Error-Code"></a>
|
||||
|
||||
### Rpc.Object.ListSetDetails.Response.Error.Code
|
||||
|
@ -25832,6 +25927,7 @@ Precondition: user A and user B opened the same block
|
|||
| Syncing | 1 | |
|
||||
| Error | 2 | |
|
||||
| Offline | 3 | |
|
||||
| NetworkNeedsUpdate | 4 | |
|
||||
|
||||
|
||||
|
||||
|
|
53
go.mod
53
go.mod
|
@ -7,14 +7,14 @@ 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.1
|
||||
github.com/anyproto/any-sync v0.4.22
|
||||
github.com/anyproto/any-store v0.0.2-0.20240812125400-7f6f6d062ebf
|
||||
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.0.7
|
||||
github.com/anyproto/tantivy-go v0.0.9
|
||||
github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de
|
||||
github.com/avast/retry-go/v4 v4.6.0
|
||||
github.com/blevesearch/bleve/v2 v2.3.10
|
||||
github.com/chai2010/webp v1.1.1
|
||||
github.com/chai2010/webp v1.1.2-0.20240612091223-aa1b379218b7
|
||||
github.com/cheggaaa/mb v1.0.3
|
||||
github.com/cheggaaa/mb/v3 v3.0.2
|
||||
github.com/dave/jennifer v1.7.0
|
||||
|
@ -57,7 +57,7 @@ require (
|
|||
github.com/joho/godotenv v1.5.1
|
||||
github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e
|
||||
github.com/kelseyhightower/envconfig v1.4.0
|
||||
github.com/klauspost/compress v1.17.8
|
||||
github.com/klauspost/compress v1.17.9
|
||||
github.com/libp2p/go-libp2p v0.35.1
|
||||
github.com/libp2p/zeroconf/v2 v2.2.0
|
||||
github.com/logrusorgru/aurora v2.0.3+incompatible
|
||||
|
@ -71,15 +71,16 @@ require (
|
|||
github.com/multiformats/go-multiaddr-dns v0.3.1
|
||||
github.com/multiformats/go-multibase v0.2.0
|
||||
github.com/multiformats/go-multihash v0.2.3
|
||||
github.com/oov/psd v0.0.0-20220121172623-5db5eafcecbb
|
||||
github.com/opentracing/opentracing-go v1.2.0
|
||||
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.19.1
|
||||
github.com/prometheus/client_golang v1.20.2
|
||||
github.com/pseudomuto/protoc-gen-doc v1.5.1
|
||||
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd
|
||||
github.com/samber/lo v1.46.0
|
||||
github.com/sasha-s/go-deadlock v0.3.1
|
||||
github.com/samber/lo v1.47.0
|
||||
github.com/sasha-s/go-deadlock v0.3.5
|
||||
github.com/shirou/gopsutil/v3 v3.24.4
|
||||
github.com/stretchr/testify v1.9.0
|
||||
github.com/uber/jaeger-client-go v2.30.0+incompatible
|
||||
|
@ -87,16 +88,17 @@ require (
|
|||
github.com/vektra/mockery/v2 v2.42.2
|
||||
github.com/xeipuuv/gojsonschema v1.2.0
|
||||
github.com/yuin/goldmark v1.7.4
|
||||
github.com/zeebo/blake3 v0.2.4
|
||||
go.uber.org/atomic v1.11.0
|
||||
go.uber.org/mock v0.4.0
|
||||
go.uber.org/multierr v1.11.0
|
||||
go.uber.org/zap v1.27.0
|
||||
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
|
||||
golang.org/x/image v0.18.0
|
||||
golang.org/x/mobile v0.0.0-20240520174638-fa72addaaa1b
|
||||
golang.org/x/net v0.27.0
|
||||
golang.org/x/oauth2 v0.21.0
|
||||
golang.org/x/text v0.16.0
|
||||
golang.org/x/image v0.19.0
|
||||
golang.org/x/mobile v0.0.0-20240806205939-81131f6468ab
|
||||
golang.org/x/net v0.28.0
|
||||
golang.org/x/oauth2 v0.22.0
|
||||
golang.org/x/text v0.17.0
|
||||
google.golang.org/grpc v1.65.0
|
||||
gopkg.in/Graylog2/go-gelf.v2 v2.0.0-20180125164251-1832d8546a9f
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
|
@ -173,6 +175,7 @@ require (
|
|||
github.com/google/flatbuffers v1.12.1 // indirect
|
||||
github.com/google/go-querystring v1.1.0 // indirect
|
||||
github.com/google/pprof v0.0.0-20240402174815-29b9bb013b0f // indirect
|
||||
github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c // indirect
|
||||
github.com/gorilla/css v1.0.0 // indirect
|
||||
github.com/gosimple/unidecode v1.0.1 // indirect
|
||||
github.com/hashicorp/errwrap v1.1.0 // indirect
|
||||
|
@ -216,18 +219,19 @@ require (
|
|||
github.com/multiformats/go-multicodec v0.9.0 // indirect
|
||||
github.com/multiformats/go-multistream v0.5.0 // indirect
|
||||
github.com/multiformats/go-varint v0.0.7 // indirect
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
||||
github.com/mwitkow/go-proto-validators v0.3.2 // indirect
|
||||
github.com/onsi/ginkgo/v2 v2.17.1 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.0.6 // indirect
|
||||
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect
|
||||
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/polydawn/refmt v0.89.0 // indirect
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
|
||||
github.com/prometheus/client_model v0.6.1 // indirect
|
||||
github.com/prometheus/common v0.48.0 // indirect
|
||||
github.com/prometheus/procfs v0.12.0 // indirect
|
||||
github.com/prometheus/common v0.55.0 // indirect
|
||||
github.com/prometheus/procfs v0.15.1 // indirect
|
||||
github.com/pseudomuto/protokit v0.2.1 // indirect
|
||||
github.com/quic-go/quic-go v0.44.0 // indirect
|
||||
github.com/quic-go/quic-go v0.46.0 // indirect
|
||||
github.com/rs/cors v1.7.0 // indirect
|
||||
github.com/rs/zerolog v1.29.0 // indirect
|
||||
github.com/shoenig/go-m1cpu v0.1.6 // indirect
|
||||
|
@ -249,22 +253,21 @@ require (
|
|||
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
|
||||
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
||||
github.com/zeebo/blake3 v0.2.3 // indirect
|
||||
github.com/zeebo/errs v1.3.0 // indirect
|
||||
go.etcd.io/bbolt v1.3.7 // indirect
|
||||
go.opencensus.io v0.24.0 // indirect
|
||||
go.opentelemetry.io/otel v1.14.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.14.0 // indirect
|
||||
golang.org/x/crypto v0.25.0 // indirect
|
||||
golang.org/x/mod v0.19.0 // indirect
|
||||
golang.org/x/sync v0.7.0 // indirect
|
||||
golang.org/x/sys v0.22.0 // indirect
|
||||
golang.org/x/term v0.22.0 // indirect
|
||||
golang.org/x/crypto v0.26.0 // indirect
|
||||
golang.org/x/mod v0.20.0 // indirect
|
||||
golang.org/x/sync v0.8.0 // indirect
|
||||
golang.org/x/sys v0.23.0 // indirect
|
||||
golang.org/x/term v0.23.0 // indirect
|
||||
golang.org/x/time v0.5.0 // indirect
|
||||
golang.org/x/tools v0.23.0 // indirect
|
||||
golang.org/x/tools v0.24.0 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect
|
||||
google.golang.org/protobuf v1.34.1 // indirect
|
||||
google.golang.org/protobuf v1.34.2 // indirect
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
lukechampine.com/blake3 v1.2.1 // indirect
|
||||
|
|
116
go.sum
116
go.sum
|
@ -83,12 +83,10 @@ 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.0-20240719163025-8a3657f8e01c h1:rRlF97BLA+4/jV82lMHEQGbNS4qgsed+HuoAJtYaLUM=
|
||||
github.com/anyproto/any-store v0.0.0-20240719163025-8a3657f8e01c/go.mod h1:JV7dJ8+xF1VaCQgFQsD8SZSNlxxTGFbDiF8llkB2ILc=
|
||||
github.com/anyproto/any-store v0.0.1 h1:RiZi3cHVSpIebcNeHYOUaDShH7E9Ahto33zdnqCaUHM=
|
||||
github.com/anyproto/any-store v0.0.1/go.mod h1:JV7dJ8+xF1VaCQgFQsD8SZSNlxxTGFbDiF8llkB2ILc=
|
||||
github.com/anyproto/any-sync v0.4.22 h1:f9iAbCv/clTzYtzOzkX1IOXahVM/Art1WkUtIgnwl8U=
|
||||
github.com/anyproto/any-sync v0.4.22/go.mod h1:qHIG2zMvGIthEb2FmcjQN5YZZwV8kPHv7/T0ib7YSDg=
|
||||
github.com/anyproto/any-store v0.0.2-0.20240812125400-7f6f6d062ebf h1:9VTQc/011fVyucu9bICmjF6+y/T9QdZv6MN7X4gM4S0=
|
||||
github.com/anyproto/any-store v0.0.2-0.20240812125400-7f6f6d062ebf/go.mod h1:JV7dJ8+xF1VaCQgFQsD8SZSNlxxTGFbDiF8llkB2ILc=
|
||||
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=
|
||||
github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k=
|
||||
github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY=
|
||||
|
@ -111,8 +109,8 @@ github.com/anyproto/protobuf v1.3.3-0.20240201225420-6e325cf0ac38 h1:80jke82/c+b
|
|||
github.com/anyproto/protobuf v1.3.3-0.20240201225420-6e325cf0ac38/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/anyproto/ristretto v0.1.2-0.20240221153107-2b23839cc50c h1:GicoaTUyB2mtCIl3YMrO0OzysqRT5GA4vuvDsqEkhSM=
|
||||
github.com/anyproto/ristretto v0.1.2-0.20240221153107-2b23839cc50c/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA=
|
||||
github.com/anyproto/tantivy-go v0.0.7 h1:sw8wuXJKZYmoULTmoqJdhsK4PYBCdTkAdSD7F89aQiI=
|
||||
github.com/anyproto/tantivy-go v0.0.7/go.mod h1:Pl0zaeEX7dkVDTDKROzlLlGCVjbZHjyPrZloFuVEASc=
|
||||
github.com/anyproto/tantivy-go v0.0.9 h1:lbRBH5Nzs1nlSWKBlC9UuyOEqhM/KEs8P02Cvt58WP8=
|
||||
github.com/anyproto/tantivy-go v0.0.9/go.mod h1:Pl0zaeEX7dkVDTDKROzlLlGCVjbZHjyPrZloFuVEASc=
|
||||
github.com/anyproto/zeroconf/v2 v2.2.1-0.20240228113933-f90a5cc4439d h1:5bj7nX/AS8sxGpTIrapE7PC4oPlhkHMwMqXlJbUHBlg=
|
||||
github.com/anyproto/zeroconf/v2 v2.2.1-0.20240228113933-f90a5cc4439d/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs=
|
||||
github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
|
||||
|
@ -204,8 +202,8 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf
|
|||
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/chai2010/webp v1.1.1 h1:jTRmEccAJ4MGrhFOrPMpNGIJ/eybIgwKpcACsrTEapk=
|
||||
github.com/chai2010/webp v1.1.1/go.mod h1:0XVwvZWdjjdxpUEIf7b9g9VkHFnInUSYujwqTLEuldU=
|
||||
github.com/chai2010/webp v1.1.2-0.20240612091223-aa1b379218b7 h1:EcFyQu4Hz/YC2lc3xWqn678e2FNfG0cgTr/EOA4ByWs=
|
||||
github.com/chai2010/webp v1.1.2-0.20240612091223-aa1b379218b7/go.mod h1:0XVwvZWdjjdxpUEIf7b9g9VkHFnInUSYujwqTLEuldU=
|
||||
github.com/cheggaaa/mb v1.0.3 h1:03ksWum+6kHclB+kjwKMaBtgl5gtNYUwNpxsHQciKe8=
|
||||
github.com/cheggaaa/mb v1.0.3/go.mod h1:NUl0GBtFLlfg2o6iZwxzcG7Lslc2wV/ADTFbLXtVPE4=
|
||||
github.com/cheggaaa/mb/v3 v3.0.2 h1:jd1Xx0zzihZlXL6HmnRXVCI1BHuXz/kY+VzX9WbvNDU=
|
||||
|
@ -758,10 +756,9 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o
|
|||
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
|
||||
github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||
github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||
github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU=
|
||||
github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
|
||||
github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
|
||||
github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
|
||||
github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||
github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
|
||||
github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
|
||||
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
|
@ -781,6 +778,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
|||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
|
||||
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
|
||||
github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
|
||||
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
|
||||
github.com/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpzX4/+RACcnlQ=
|
||||
|
@ -1092,6 +1091,8 @@ github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXS
|
|||
github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
||||
github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8=
|
||||
github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
|
@ -1126,6 +1127,8 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J
|
|||
github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA=
|
||||
github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8=
|
||||
github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
|
||||
github.com/oov/psd v0.0.0-20220121172623-5db5eafcecbb h1:JF9kOhBBk4WPF7luXFu5yR+WgaFm9L/KiHJHhU9vDwA=
|
||||
github.com/oov/psd v0.0.0-20220121172623-5db5eafcecbb/go.mod h1:GHI1bnmAcbp96z6LNfBJvtrjxhaXGkbsk967utPlvL8=
|
||||
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
|
||||
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
|
||||
github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
|
||||
|
@ -1156,8 +1159,8 @@ github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/9
|
|||
github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU=
|
||||
github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek=
|
||||
github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
|
||||
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ=
|
||||
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o=
|
||||
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw=
|
||||
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
|
||||
github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
|
||||
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
|
||||
github.com/pion/datachannel v1.5.6 h1:1IxKJntfSlYkpUj8LlYRSWpYiTTC02nUrOE8T3DqGeg=
|
||||
|
@ -1214,8 +1217,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.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
|
||||
github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
|
||||
github.com/prometheus/client_golang v1.20.2 h1:5ctymQzZlyOON1666svgwn3s6IKWgfbjsejTMiXIyjg=
|
||||
github.com/prometheus/client_golang v1.20.2/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=
|
||||
|
@ -1231,8 +1234,8 @@ github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8
|
|||
github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
|
||||
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
|
||||
github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
|
||||
github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
|
||||
github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
|
||||
github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
|
||||
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
|
||||
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
|
@ -1240,8 +1243,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT
|
|||
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
|
||||
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||
github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||
github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
|
||||
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
|
||||
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
|
||||
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
|
||||
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
|
||||
github.com/pseudomuto/protoc-gen-doc v1.5.1 h1:Ah259kcrio7Ix1Rhb6u8FCaOkzf9qRBqXnvAufg061w=
|
||||
github.com/pseudomuto/protoc-gen-doc v1.5.1/go.mod h1:XpMKYg6zkcpgfpCfQ8GcWBDRtRxOmMR5w7pz4Xo+dYM=
|
||||
|
@ -1249,8 +1252,8 @@ github.com/pseudomuto/protokit v0.2.1 h1:kCYpE3thoR6Esm0CUvd5xbrDTOZPvQPTDeyXpZf
|
|||
github.com/pseudomuto/protokit v0.2.1/go.mod h1:gt7N5Rz2flBzYafvaxyIxMZC0TTF5jDZfRnw25hAAyo=
|
||||
github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo=
|
||||
github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A=
|
||||
github.com/quic-go/quic-go v0.44.0 h1:So5wOr7jyO4vzL2sd8/pD9Kesciv91zSk8BoFngItQ0=
|
||||
github.com/quic-go/quic-go v0.44.0/go.mod h1:z4cx/9Ny9UtGITIPzmPTXh1ULfOyWh4qGQlpnPcWmek=
|
||||
github.com/quic-go/quic-go v0.46.0 h1:uuwLClEEyk1DNvchH8uCByQVjo3yKL9opKulExNDs7Y=
|
||||
github.com/quic-go/quic-go v0.46.0/go.mod h1:1dLehS7TIR64+vxGR70GDcatWTOtMX2PUtnKsjbTurI=
|
||||
github.com/quic-go/webtransport-go v0.8.0 h1:HxSrwun11U+LlmwpgM1kEqIqH90IT4N8auv/cD7QFJg=
|
||||
github.com/quic-go/webtransport-go v0.8.0/go.mod h1:N99tjprW432Ut5ONql/aUhSLT0YVSlwHohQsuac9WaM=
|
||||
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||
|
@ -1270,11 +1273,11 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD
|
|||
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd h1:CmH9+J6ZSsIjUK3dcGsnCnO41eRBOnY12zwkn5qVwgc=
|
||||
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk=
|
||||
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||
github.com/samber/lo v1.46.0 h1:w8G+oaCPgz1PoCJztqymCFaKwXt+5cCXn51uPxExFfQ=
|
||||
github.com/samber/lo v1.46.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU=
|
||||
github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc=
|
||||
github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU=
|
||||
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
|
||||
github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0=
|
||||
github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM=
|
||||
github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU=
|
||||
github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U=
|
||||
github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4/go.mod h1:C1a7PQSMz9NShzorzCiG2fk9+xuCgLkPeCvMHYR2OWg=
|
||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||
github.com/sebdah/goldie/v2 v2.5.3 h1:9ES/mNN+HNUbNWpVAlrzuZ7jE+Nrczbj8uFRjM7624Y=
|
||||
|
@ -1426,11 +1429,10 @@ github.com/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg=
|
|||
github.com/yuin/goldmark v1.7.4/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
|
||||
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
|
||||
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||
github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
|
||||
github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=
|
||||
github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
|
||||
github.com/zeebo/blake3 v0.2.3 h1:TFoLXsjeXqRNFxSbk35Dk4YtszE/MQQGK10BH4ptoTg=
|
||||
github.com/zeebo/blake3 v0.2.3/go.mod h1:mjJjZpnsyIVtVgTOSpJ9vmRE4wgDeyt2HU3qXvvKCaQ=
|
||||
github.com/zeebo/blake3 v0.2.4 h1:KYQPkhpRtcqh0ssGYcKLG1JYvddkEA8QwCM/yBqhaZI=
|
||||
github.com/zeebo/blake3 v0.2.4/go.mod h1:7eeQ6d2iXWRGF6npfaxl2CU+xy2Fjo2gxeyZGCRUjcE=
|
||||
github.com/zeebo/errs v1.3.0 h1:hmiaKqgYZzcVgRL1Vkc1Mn2914BbzB0IBxs+ebeutGs=
|
||||
github.com/zeebo/errs v1.3.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4=
|
||||
github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo=
|
||||
|
@ -1511,8 +1513,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm
|
|||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
|
||||
golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30=
|
||||
golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
|
||||
golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
|
||||
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
|
||||
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
|
@ -1527,16 +1529,14 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0
|
|||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
||||
golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=
|
||||
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM=
|
||||
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc=
|
||||
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
|
||||
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
|
||||
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
|
||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ=
|
||||
golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E=
|
||||
golang.org/x/image v0.19.0 h1:D9FX4QWkLfkeqaC62SonffIIuYdOk/UE2XKUBgRIBIQ=
|
||||
golang.org/x/image v0.19.0/go.mod h1:y0zrRqlQRWQ5PXaYCOMLTW2fpsxZ8Qh9I/ohnInJEys=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
|
@ -1550,8 +1550,8 @@ golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPI
|
|||
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
||||
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
||||
golang.org/x/mobile v0.0.0-20240520174638-fa72addaaa1b h1:WX7nnnLfCEXg+FmdYZPai2XuP3VqCP1HZVMST0n9DF0=
|
||||
golang.org/x/mobile v0.0.0-20240520174638-fa72addaaa1b/go.mod h1:EiXZlVfUTaAyySFVJb9rsODuiO+WXu8HrUuySb7nYFw=
|
||||
golang.org/x/mobile v0.0.0-20240806205939-81131f6468ab h1:KONOFF8Uy3b60HEzOsGnNghORNhY4ImyOx0PGm73K9k=
|
||||
golang.org/x/mobile v0.0.0-20240806205939-81131f6468ab/go.mod h1:udWezQGYjqrCxz5nV321pXQTx5oGbZx+khZvFjZNOPM=
|
||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
|
@ -1563,10 +1563,8 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
|||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
|
||||
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8=
|
||||
golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
|
||||
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
|
@ -1630,8 +1628,8 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
|||
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
|
||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||
golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
|
||||
golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
|
||||
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
|
||||
golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
|
||||
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
|
@ -1641,8 +1639,8 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ
|
|||
golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
|
||||
golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
|
||||
golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA=
|
||||
golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
|
@ -1656,8 +1654,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ
|
|||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
|
||||
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
|
||||
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
|
@ -1751,8 +1749,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
|
||||
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM=
|
||||
golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
|
@ -1760,8 +1758,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
|||
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
|
||||
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
|
||||
golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
|
||||
golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk=
|
||||
golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4=
|
||||
golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU=
|
||||
golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
|
@ -1773,8 +1771,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
|||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
|
||||
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
||||
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
|
||||
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
||||
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
|
@ -1843,10 +1841,8 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
|
|||
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
|
||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
||||
golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg=
|
||||
golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI=
|
||||
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
|
||||
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
|
@ -1966,8 +1962,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj
|
|||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
|
||||
google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
|
||||
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
|
|
3479
pb/commands.pb.go
3479
pb/commands.pb.go
File diff suppressed because it is too large
Load diff
760
pb/events.pb.go
760
pb/events.pb.go
|
@ -98,10 +98,11 @@ func (EventStatusThreadSyncStatus) EnumDescriptor() ([]byte, []int) {
|
|||
type EventSpaceStatus int32
|
||||
|
||||
const (
|
||||
EventSpace_Synced EventSpaceStatus = 0
|
||||
EventSpace_Syncing EventSpaceStatus = 1
|
||||
EventSpace_Error EventSpaceStatus = 2
|
||||
EventSpace_Offline EventSpaceStatus = 3
|
||||
EventSpace_Synced EventSpaceStatus = 0
|
||||
EventSpace_Syncing EventSpaceStatus = 1
|
||||
EventSpace_Error EventSpaceStatus = 2
|
||||
EventSpace_Offline EventSpaceStatus = 3
|
||||
EventSpace_NetworkNeedsUpdate EventSpaceStatus = 4
|
||||
)
|
||||
|
||||
var EventSpaceStatus_name = map[int32]string{
|
||||
|
@ -109,13 +110,15 @@ var EventSpaceStatus_name = map[int32]string{
|
|||
1: "Syncing",
|
||||
2: "Error",
|
||||
3: "Offline",
|
||||
4: "NetworkNeedsUpdate",
|
||||
}
|
||||
|
||||
var EventSpaceStatus_value = map[string]int32{
|
||||
"Synced": 0,
|
||||
"Syncing": 1,
|
||||
"Error": 2,
|
||||
"Offline": 3,
|
||||
"Synced": 0,
|
||||
"Syncing": 1,
|
||||
"Error": 2,
|
||||
"Offline": 3,
|
||||
"NetworkNeedsUpdate": 4,
|
||||
}
|
||||
|
||||
func (x EventSpaceStatus) String() string {
|
||||
|
@ -11706,376 +11709,377 @@ func init() {
|
|||
func init() { proto.RegisterFile("pb/protos/events.proto", fileDescriptor_a966342d378ae5f5) }
|
||||
|
||||
var fileDescriptor_a966342d378ae5f5 = []byte{
|
||||
// 5894 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5c, 0x59, 0x8c, 0x1d, 0xd9,
|
||||
0x59, 0xbe, 0xfb, 0xf2, 0xf7, 0xe2, 0xeb, 0x33, 0x1e, 0x4f, 0x4d, 0xb9, 0xc7, 0xe3, 0x69, 0xaf,
|
||||
0xf1, 0x78, 0xae, 0x3d, 0xde, 0xda, 0x71, 0x3c, 0xb6, 0x7b, 0xf3, 0xf4, 0xf5, 0xd2, 0x6e, 0x4e,
|
||||
0xdb, 0xce, 0x64, 0x12, 0x45, 0xa9, 0xbe, 0x75, 0xfa, 0x76, 0xc5, 0xd5, 0x55, 0x37, 0x55, 0xd5,
|
||||
0x6d, 0x77, 0x02, 0x21, 0x62, 0x11, 0x42, 0x02, 0x81, 0x04, 0x0a, 0x88, 0x17, 0x04, 0x02, 0x89,
|
||||
0x07, 0x84, 0x40, 0x3c, 0x10, 0x5e, 0x10, 0x12, 0x42, 0x62, 0x95, 0x82, 0xc4, 0x03, 0x6f, 0x89,
|
||||
0x26, 0x2f, 0xbc, 0xf0, 0x10, 0x90, 0x10, 0x4f, 0x08, 0x9d, 0xa5, 0xaa, 0xce, 0xa9, 0xe5, 0xd6,
|
||||
0xbd, 0x99, 0x09, 0x8b, 0xc8, 0xd3, 0xbd, 0xe7, 0x3f, 0xff, 0xff, 0x9d, 0xe5, 0xff, 0xff, 0xb3,
|
||||
0xfc, 0xe7, 0x9c, 0x82, 0xa3, 0xc3, 0xad, 0x8b, 0x43, 0xcf, 0x0d, 0x5c, 0xff, 0x22, 0xd9, 0x27,
|
||||
0x4e, 0xe0, 0x77, 0x59, 0x0a, 0x35, 0x0d, 0xe7, 0x20, 0x38, 0x18, 0x12, 0xfd, 0xd4, 0xf0, 0xf9,
|
||||
0xe0, 0xa2, 0x6d, 0x6d, 0x5d, 0x1c, 0x6e, 0x5d, 0xdc, 0x75, 0x4d, 0x62, 0x87, 0xec, 0x2c, 0x21,
|
||||
0xd8, 0xf5, 0xb9, 0x81, 0xeb, 0x0e, 0x6c, 0xc2, 0xf3, 0xb6, 0xf6, 0xb6, 0x2f, 0xfa, 0x81, 0xb7,
|
||||
0xd7, 0x0f, 0x78, 0xee, 0xfc, 0xaf, 0xfc, 0x69, 0x19, 0xea, 0xab, 0x14, 0x1e, 0x5d, 0x86, 0xd6,
|
||||
0x2e, 0xf1, 0x7d, 0x63, 0x40, 0x7c, 0xad, 0x7c, 0xa2, 0x7a, 0x6e, 0xea, 0xf2, 0xd1, 0xae, 0x28,
|
||||
0xaa, 0xcb, 0x38, 0xba, 0x8f, 0x78, 0x36, 0x8e, 0xf8, 0xd0, 0x1c, 0xb4, 0xfb, 0xae, 0x13, 0x90,
|
||||
0x97, 0x41, 0xcf, 0xd4, 0x2a, 0x27, 0xca, 0xe7, 0xda, 0x38, 0x26, 0xa0, 0xab, 0xd0, 0xb6, 0x1c,
|
||||
0x2b, 0xb0, 0x8c, 0xc0, 0xf5, 0xb4, 0xea, 0x89, 0xb2, 0x02, 0xc9, 0x2a, 0xd9, 0x5d, 0xec, 0xf7,
|
||||
0xdd, 0x3d, 0x27, 0xc0, 0x31, 0x23, 0xd2, 0xa0, 0x19, 0x78, 0x46, 0x9f, 0xf4, 0x4c, 0xad, 0xc6,
|
||||
0x10, 0xc3, 0xa4, 0xfe, 0x27, 0x5d, 0x68, 0x8a, 0x3a, 0xa0, 0x3b, 0x30, 0x65, 0x70, 0xd9, 0xcd,
|
||||
0x1d, 0xf7, 0x85, 0x56, 0x66, 0xe8, 0xc7, 0x12, 0x15, 0x16, 0xe8, 0x5d, 0xca, 0xb2, 0x56, 0xc2,
|
||||
0xb2, 0x04, 0xea, 0xc1, 0xac, 0x48, 0xae, 0x90, 0xc0, 0xb0, 0x6c, 0x5f, 0xfb, 0x6b, 0x0e, 0x72,
|
||||
0x3c, 0x07, 0x44, 0xb0, 0xad, 0x95, 0x70, 0x42, 0x10, 0x7d, 0x0e, 0x5e, 0x11, 0x94, 0x65, 0xd7,
|
||||
0xd9, 0xb6, 0x06, 0x4f, 0x87, 0xa6, 0x11, 0x10, 0xed, 0x6f, 0x38, 0xde, 0xa9, 0x1c, 0x3c, 0xce,
|
||||
0xdb, 0xe5, 0xcc, 0x6b, 0x25, 0x9c, 0x85, 0x81, 0xee, 0xc1, 0x8c, 0x20, 0x0b, 0xd0, 0xbf, 0xe5,
|
||||
0xa0, 0x6f, 0xe4, 0x80, 0x46, 0x68, 0xaa, 0x18, 0xfa, 0x3c, 0x1c, 0x11, 0x84, 0x87, 0x96, 0xf3,
|
||||
0x7c, 0x79, 0xc7, 0xb0, 0x6d, 0xe2, 0x0c, 0x88, 0xf6, 0x77, 0xa3, 0xeb, 0xa8, 0x30, 0xaf, 0x95,
|
||||
0x70, 0x26, 0x08, 0x7a, 0x0c, 0x1d, 0x77, 0xeb, 0xcb, 0xa4, 0x1f, 0x76, 0xc8, 0x26, 0x09, 0xb4,
|
||||
0x0e, 0xc3, 0x7d, 0x2b, 0x81, 0xfb, 0x98, 0xb1, 0x85, 0x5d, 0xd9, 0xdd, 0x24, 0xc1, 0x5a, 0x09,
|
||||
0xa7, 0x84, 0xd1, 0x53, 0x40, 0x0a, 0x6d, 0x71, 0x97, 0x38, 0xa6, 0x76, 0x99, 0x41, 0x9e, 0x1c,
|
||||
0x0d, 0xc9, 0x58, 0xd7, 0x4a, 0x38, 0x03, 0x20, 0x05, 0xfb, 0xd4, 0xf1, 0x49, 0xa0, 0x5d, 0x19,
|
||||
0x07, 0x96, 0xb1, 0xa6, 0x60, 0x19, 0x95, 0xf6, 0x2d, 0xa7, 0x62, 0x62, 0x1b, 0x81, 0xe5, 0x3a,
|
||||
0xa2, 0xbe, 0x57, 0x19, 0xf0, 0xe9, 0x6c, 0xe0, 0x88, 0x37, 0xaa, 0x71, 0x26, 0x08, 0xfa, 0x22,
|
||||
0xbc, 0x9a, 0xa0, 0x63, 0xb2, 0xeb, 0xee, 0x13, 0xed, 0x1a, 0x43, 0x3f, 0x53, 0x84, 0xce, 0xb9,
|
||||
0xd7, 0x4a, 0x38, 0x1b, 0x06, 0x2d, 0xc1, 0x74, 0x98, 0xc1, 0x60, 0xaf, 0x33, 0xd8, 0xb9, 0x3c,
|
||||
0x58, 0x01, 0xa6, 0xc8, 0x50, 0x5f, 0xe4, 0xe9, 0x65, 0xdb, 0xf5, 0x89, 0xb6, 0x98, 0xe9, 0x8b,
|
||||
0x02, 0x82, 0xb1, 0x50, 0x5f, 0x94, 0x24, 0xe4, 0x46, 0xfa, 0x81, 0x67, 0xf5, 0x59, 0x05, 0xa9,
|
||||
0x15, 0x2d, 0x8c, 0x6e, 0x64, 0xcc, 0x2c, 0x4c, 0x29, 0x1b, 0x06, 0x61, 0x38, 0xe4, 0xef, 0x6d,
|
||||
0xf9, 0x7d, 0xcf, 0x1a, 0x52, 0xda, 0xa2, 0x69, 0x6a, 0xb7, 0x46, 0x21, 0x6f, 0x4a, 0xcc, 0xdd,
|
||||
0x45, 0x93, 0x6a, 0x27, 0x09, 0x80, 0x3e, 0x0f, 0x48, 0x26, 0x89, 0xee, 0x7b, 0x8f, 0xc1, 0x7e,
|
||||
0x6a, 0x0c, 0xd8, 0xa8, 0x2f, 0x33, 0x60, 0x90, 0x01, 0x47, 0x64, 0xea, 0x86, 0xeb, 0x5b, 0xf4,
|
||||
0x57, 0xbb, 0xcd, 0xe0, 0xdf, 0x1e, 0x03, 0x3e, 0x14, 0xa1, 0x86, 0x95, 0x05, 0x95, 0x2c, 0x62,
|
||||
0x99, 0xba, 0x35, 0xf1, 0x7c, 0xed, 0xce, 0xd8, 0x45, 0x84, 0x22, 0xc9, 0x22, 0x42, 0x7a, 0xb2,
|
||||
0x8b, 0xde, 0xf7, 0xdc, 0xbd, 0xa1, 0xaf, 0xdd, 0x1d, 0xbb, 0x8b, 0xb8, 0x40, 0xb2, 0x8b, 0x38,
|
||||
0x15, 0x5d, 0x87, 0xd6, 0x96, 0xed, 0xf6, 0x9f, 0x53, 0x65, 0x56, 0x18, 0xa4, 0x96, 0x80, 0x5c,
|
||||
0xa2, 0xd9, 0x42, 0x7d, 0x11, 0x2f, 0x35, 0x56, 0xf6, 0x7f, 0x85, 0xd8, 0x24, 0x20, 0x62, 0x5a,
|
||||
0x3a, 0x96, 0x29, 0xca, 0x59, 0xa8, 0xb1, 0x4a, 0x12, 0x68, 0x05, 0xa6, 0xb6, 0x2d, 0x9b, 0xf8,
|
||||
0x4f, 0x87, 0xb6, 0x6b, 0xf0, 0x39, 0x6a, 0xea, 0xf2, 0x89, 0x4c, 0x80, 0x7b, 0x31, 0x1f, 0x45,
|
||||
0x91, 0xc4, 0xd0, 0x6d, 0x68, 0xef, 0x1a, 0xde, 0x73, 0xbf, 0xe7, 0x6c, 0xbb, 0x5a, 0x3d, 0x73,
|
||||
0xe2, 0xe1, 0x18, 0x8f, 0x42, 0xae, 0xb5, 0x12, 0x8e, 0x45, 0xe8, 0xf4, 0xc5, 0x2a, 0xb5, 0x49,
|
||||
0x82, 0x7b, 0x16, 0xb1, 0x4d, 0x5f, 0x6b, 0x30, 0x90, 0x37, 0x33, 0x41, 0x36, 0x49, 0xd0, 0xe5,
|
||||
0x6c, 0x74, 0xfa, 0x52, 0x05, 0xd1, 0x07, 0xf0, 0x4a, 0x48, 0x59, 0xde, 0xb1, 0x6c, 0xd3, 0x23,
|
||||
0x4e, 0xcf, 0xf4, 0xb5, 0x66, 0xe6, 0xcc, 0x10, 0xe3, 0x49, 0xbc, 0x74, 0xf6, 0xca, 0x80, 0xa0,
|
||||
0x23, 0x63, 0x48, 0x96, 0x5d, 0x52, 0x6b, 0x65, 0x8e, 0x8c, 0x31, 0xb4, 0xcc, 0x4c, 0xad, 0x2b,
|
||||
0x0b, 0x04, 0x99, 0xf0, 0x5a, 0x48, 0x5f, 0x32, 0xfa, 0xcf, 0x07, 0x9e, 0xbb, 0xe7, 0x98, 0xcb,
|
||||
0xae, 0xed, 0x7a, 0x5a, 0x9b, 0xe1, 0x9f, 0xcb, 0xc5, 0x4f, 0xf0, 0xaf, 0x95, 0x70, 0x1e, 0x14,
|
||||
0x5a, 0x86, 0xe9, 0x30, 0xeb, 0x09, 0x79, 0x19, 0x68, 0x90, 0x39, 0xfd, 0xc6, 0xd0, 0x94, 0x89,
|
||||
0x0e, 0x90, 0xb2, 0x90, 0x0c, 0x42, 0x4d, 0x42, 0x9b, 0x2a, 0x00, 0xa1, 0x4c, 0x32, 0x08, 0x4d,
|
||||
0xcb, 0x20, 0x74, 0xfa, 0xd5, 0x66, 0x0a, 0x40, 0x28, 0x93, 0x0c, 0x42, 0xd3, 0x74, 0xaa, 0x8e,
|
||||
0x5a, 0xea, 0xba, 0xcf, 0xa9, 0x3d, 0x69, 0xb3, 0x99, 0x53, 0xb5, 0xd4, 0x5b, 0x82, 0x91, 0x4e,
|
||||
0xd5, 0x49, 0x61, 0xba, 0x40, 0x09, 0x69, 0x8b, 0xb6, 0x35, 0x70, 0xb4, 0x43, 0x23, 0x6c, 0x99,
|
||||
0xa2, 0x31, 0x2e, 0xba, 0x40, 0x51, 0xc4, 0xd0, 0x5d, 0xe1, 0x96, 0x9b, 0x24, 0x58, 0xb1, 0xf6,
|
||||
0xb5, 0xc3, 0x99, 0xd3, 0x50, 0x8c, 0xb2, 0x62, 0xed, 0x47, 0x7e, 0xc9, 0x45, 0xe4, 0xa6, 0x85,
|
||||
0x93, 0x9c, 0xf6, 0x6a, 0x41, 0xd3, 0x42, 0x46, 0xb9, 0x69, 0x21, 0x4d, 0x6e, 0xda, 0x43, 0x23,
|
||||
0x20, 0x2f, 0xb5, 0xd7, 0x0b, 0x9a, 0xc6, 0xb8, 0xe4, 0xa6, 0x31, 0x02, 0x9d, 0xdd, 0x42, 0xc2,
|
||||
0x33, 0xe2, 0x05, 0x56, 0xdf, 0xb0, 0x79, 0x57, 0x9d, 0xca, 0x9c, 0x83, 0x62, 0x3c, 0x85, 0x9b,
|
||||
0xce, 0x6e, 0x99, 0x30, 0x72, 0xc3, 0x9f, 0x18, 0x5b, 0x36, 0xc1, 0xee, 0x0b, 0xed, 0x74, 0x41,
|
||||
0xc3, 0x43, 0x46, 0xb9, 0xe1, 0x21, 0x4d, 0x1e, 0x5b, 0x3e, 0x6b, 0x99, 0x03, 0x12, 0x68, 0xe7,
|
||||
0x0a, 0xc6, 0x16, 0xce, 0x26, 0x8f, 0x2d, 0x9c, 0x12, 0x8d, 0x00, 0x2b, 0x46, 0x60, 0xec, 0x5b,
|
||||
0xe4, 0xc5, 0x33, 0x8b, 0xbc, 0xa0, 0x13, 0xfb, 0x2b, 0x23, 0x46, 0x80, 0x90, 0xb7, 0x2b, 0x98,
|
||||
0xa3, 0x11, 0x20, 0x01, 0x12, 0x8d, 0x00, 0x32, 0x5d, 0x0c, 0xeb, 0x47, 0x46, 0x8c, 0x00, 0x0a,
|
||||
0x7e, 0x34, 0xc6, 0xe7, 0x41, 0x21, 0x03, 0x8e, 0xa6, 0xb2, 0x1e, 0x7b, 0x26, 0xf1, 0xb4, 0x37,
|
||||
0x58, 0x21, 0x67, 0x8b, 0x0b, 0x61, 0xec, 0x6b, 0x25, 0x9c, 0x03, 0x94, 0x2a, 0x62, 0xd3, 0xdd,
|
||||
0xf3, 0xfa, 0x84, 0xf6, 0xd3, 0xc9, 0x71, 0x8a, 0x88, 0xd8, 0x53, 0x45, 0x44, 0x39, 0x68, 0x1f,
|
||||
0xde, 0x88, 0x72, 0x68, 0xc1, 0x6c, 0x16, 0x65, 0xa5, 0x8b, 0x8d, 0xc5, 0x19, 0x56, 0x52, 0x77,
|
||||
0x74, 0x49, 0x49, 0xa9, 0xb5, 0x12, 0x1e, 0x0d, 0x8b, 0x0e, 0xe0, 0xb8, 0xc2, 0xc0, 0xe7, 0x79,
|
||||
0xb9, 0xe0, 0xb3, 0xac, 0xe0, 0x8b, 0xa3, 0x0b, 0x4e, 0x89, 0xad, 0x95, 0x70, 0x01, 0x30, 0x1a,
|
||||
0xc2, 0x31, 0xa5, 0x33, 0x42, 0xc7, 0x16, 0x26, 0xf2, 0xe3, 0xac, 0xdc, 0x0b, 0xa3, 0xcb, 0x55,
|
||||
0x65, 0xd6, 0x4a, 0x78, 0x14, 0x24, 0x1a, 0x80, 0x96, 0x99, 0x4d, 0x35, 0xf9, 0xb5, 0xcc, 0x65,
|
||||
0x4f, 0x4e, 0x71, 0x5c, 0x97, 0xb9, 0x60, 0x99, 0x96, 0x2f, 0xba, 0xf3, 0x27, 0xc6, 0xb5, 0xfc,
|
||||
0xa8, 0x1f, 0xf3, 0xa0, 0x14, 0xdd, 0xd1, 0xac, 0x27, 0x86, 0x37, 0x20, 0x01, 0xef, 0xe8, 0x9e,
|
||||
0x49, 0x1b, 0xf5, 0xf5, 0x71, 0x74, 0x97, 0x12, 0x53, 0x74, 0x97, 0x09, 0x8c, 0x7c, 0x98, 0x53,
|
||||
0x38, 0x7a, 0xfe, 0xb2, 0x6b, 0xdb, 0xa4, 0x1f, 0xf6, 0xe6, 0x4f, 0xb2, 0x82, 0xdf, 0x19, 0x5d,
|
||||
0x70, 0x42, 0x68, 0xad, 0x84, 0x47, 0x82, 0xa6, 0xda, 0xfb, 0xd8, 0x36, 0x13, 0x36, 0xa3, 0x8d,
|
||||
0x65, 0xab, 0x49, 0xb1, 0x54, 0x7b, 0x53, 0x1c, 0x29, 0x5b, 0x95, 0x38, 0x68, 0x73, 0x5f, 0x1b,
|
||||
0xc7, 0x56, 0x55, 0x99, 0x94, 0xad, 0xaa, 0xd9, 0x74, 0x76, 0xdb, 0xf3, 0x89, 0xc7, 0x30, 0xee,
|
||||
0xbb, 0x96, 0xa3, 0xbd, 0x99, 0x39, 0xbb, 0x3d, 0xf5, 0x89, 0x27, 0x0a, 0xa2, 0x5c, 0x74, 0x76,
|
||||
0x53, 0xc4, 0x14, 0x9c, 0x87, 0x64, 0x3b, 0xd0, 0x4e, 0x14, 0xe1, 0x50, 0x2e, 0x05, 0x87, 0x12,
|
||||
0xe8, 0x4c, 0x11, 0x11, 0x36, 0x09, 0xd5, 0x0a, 0x36, 0x9c, 0x01, 0xd1, 0xde, 0xca, 0x9c, 0x29,
|
||||
0x24, 0x38, 0x89, 0x99, 0xce, 0x14, 0x59, 0x20, 0x74, 0xe7, 0x1f, 0xd1, 0xe9, 0x8a, 0x8c, 0x43,
|
||||
0xcf, 0x67, 0xee, 0xfc, 0x25, 0xe8, 0x88, 0x95, 0xee, 0x41, 0xd2, 0x00, 0xe8, 0x53, 0x50, 0x1b,
|
||||
0x5a, 0xce, 0x40, 0x33, 0x19, 0xd0, 0x2b, 0x09, 0xa0, 0x0d, 0xcb, 0x19, 0xac, 0x95, 0x30, 0x63,
|
||||
0x41, 0xb7, 0x00, 0x86, 0x9e, 0xdb, 0x27, 0xbe, 0xbf, 0x4e, 0x5e, 0x68, 0x84, 0x09, 0xe8, 0x49,
|
||||
0x01, 0xce, 0xd0, 0x5d, 0x27, 0x74, 0x5e, 0x96, 0xf8, 0xd1, 0x2a, 0xcc, 0x88, 0x94, 0xf0, 0xf2,
|
||||
0xed, 0xcc, 0xc5, 0x5f, 0x08, 0x10, 0x47, 0x81, 0x14, 0x29, 0xba, 0xf7, 0x11, 0x84, 0x15, 0xd7,
|
||||
0x21, 0xda, 0x20, 0x73, 0xef, 0x13, 0x82, 0x50, 0x16, 0xba, 0xc6, 0x92, 0x24, 0xd0, 0x12, 0x4c,
|
||||
0x07, 0x3b, 0x1e, 0x31, 0xcc, 0xcd, 0xc0, 0x08, 0xf6, 0x7c, 0xcd, 0xc9, 0x5c, 0xa6, 0xf1, 0xcc,
|
||||
0xee, 0x13, 0xc6, 0x49, 0x97, 0xa0, 0xb2, 0x0c, 0x5a, 0x87, 0x0e, 0xdd, 0x08, 0x3d, 0xb4, 0x76,
|
||||
0xad, 0x00, 0x13, 0xa3, 0xbf, 0x43, 0x4c, 0xcd, 0xcd, 0xdc, 0x44, 0xd1, 0x65, 0x6f, 0x57, 0xe6,
|
||||
0xa3, 0xab, 0x95, 0xa4, 0x2c, 0x5a, 0x83, 0x59, 0x4a, 0xdb, 0x1c, 0x1a, 0x7d, 0xf2, 0xd4, 0x37,
|
||||
0x06, 0x44, 0x1b, 0x66, 0x5a, 0x20, 0x43, 0x8b, 0xb9, 0xe8, 0x62, 0x45, 0x95, 0x0b, 0x91, 0x1e,
|
||||
0xba, 0x7d, 0xc3, 0xe6, 0x48, 0x5f, 0xc9, 0x47, 0x8a, 0xb9, 0x42, 0xa4, 0x98, 0xa2, 0xb4, 0x91,
|
||||
0xf7, 0xbd, 0xa9, 0xed, 0x17, 0xb4, 0x51, 0xf0, 0x29, 0x6d, 0x14, 0x34, 0x8a, 0xe7, 0xb8, 0x81,
|
||||
0xb5, 0x6d, 0xf5, 0x85, 0xff, 0x3a, 0xa6, 0xe6, 0x65, 0xe2, 0xad, 0x4b, 0x6c, 0xdd, 0x4d, 0x1e,
|
||||
0x59, 0x4a, 0xc9, 0xa2, 0x27, 0x80, 0x64, 0x9a, 0x30, 0x2a, 0x9f, 0x21, 0xce, 0x8f, 0x42, 0x8c,
|
||||
0x2c, 0x2b, 0x43, 0x9e, 0xd6, 0x72, 0x68, 0x1c, 0xd0, 0xed, 0xed, 0x92, 0xe7, 0x1a, 0x66, 0xdf,
|
||||
0xf0, 0x03, 0x2d, 0xc8, 0xac, 0xe5, 0x06, 0x67, 0xeb, 0x46, 0x7c, 0xb4, 0x96, 0x49, 0x59, 0x8a,
|
||||
0xb7, 0x4b, 0x76, 0xb7, 0x88, 0xe7, 0xef, 0x58, 0x43, 0x51, 0xc7, 0xbd, 0x4c, 0xbc, 0x47, 0x11,
|
||||
0x5b, 0x5c, 0xc3, 0x94, 0x2c, 0x5d, 0x88, 0xfb, 0x54, 0xdb, 0x9b, 0x07, 0x4e, 0x9f, 0x1b, 0xa3,
|
||||
0x00, 0x7d, 0x91, 0xb9, 0x10, 0x67, 0x96, 0xd1, 0x8d, 0x99, 0x63, 0xe8, 0x6c, 0x18, 0xf4, 0x00,
|
||||
0x0e, 0x0d, 0x2f, 0x0f, 0x15, 0xe4, 0x97, 0x99, 0x0b, 0xe7, 0x8d, 0xcb, 0x1b, 0x49, 0xc8, 0xa4,
|
||||
0x24, 0x75, 0x35, 0x6b, 0x77, 0xe8, 0x7a, 0xc1, 0x3d, 0xcb, 0xb1, 0xfc, 0x1d, 0xed, 0x20, 0xd3,
|
||||
0xd5, 0x7a, 0x8c, 0xa5, 0xcb, 0x79, 0xa8, 0xab, 0xc9, 0x32, 0x4b, 0x4d, 0xa8, 0xef, 0x1b, 0xf6,
|
||||
0x1e, 0xd1, 0xff, 0xa8, 0x0e, 0x4d, 0x11, 0xd3, 0xd5, 0xd7, 0xa1, 0xc6, 0x02, 0xe0, 0x47, 0xa0,
|
||||
0x6e, 0x39, 0x26, 0x79, 0xc9, 0x62, 0xe7, 0x75, 0xcc, 0x13, 0xe8, 0x12, 0x34, 0x45, 0x8c, 0x57,
|
||||
0x44, 0x55, 0xf2, 0x22, 0xf6, 0x21, 0x9b, 0xfe, 0x21, 0x34, 0xc3, 0x40, 0xf8, 0x1c, 0xb4, 0x87,
|
||||
0x9e, 0x4b, 0xad, 0xb7, 0x67, 0x32, 0xd8, 0x36, 0x8e, 0x09, 0xe8, 0x5d, 0x68, 0x9a, 0x22, 0xd4,
|
||||
0xce, 0xa1, 0x5f, 0xeb, 0xf2, 0xb3, 0x89, 0x6e, 0x78, 0x36, 0xd1, 0xdd, 0x64, 0x67, 0x13, 0x38,
|
||||
0xe4, 0xd3, 0xbf, 0x51, 0x86, 0x06, 0x8f, 0x87, 0xeb, 0xfb, 0xd0, 0x10, 0x3d, 0x73, 0x0d, 0x1a,
|
||||
0x7d, 0x46, 0xd3, 0x92, 0xb1, 0x70, 0xa5, 0x86, 0x22, 0xc0, 0x8e, 0x05, 0x33, 0x15, 0xf3, 0xf9,
|
||||
0xa8, 0x55, 0x19, 0x29, 0xc6, 0xb5, 0x80, 0x05, 0xf3, 0xff, 0x58, 0xb9, 0xff, 0x59, 0x86, 0x19,
|
||||
0x35, 0xcc, 0x3e, 0x07, 0xed, 0x7e, 0x14, 0xb8, 0x17, 0xbd, 0xdb, 0x97, 0x82, 0xf0, 0xd0, 0xb7,
|
||||
0x2d, 0xe2, 0x04, 0x2c, 0xa2, 0x54, 0xc9, 0x5c, 0xa8, 0x64, 0x86, 0xf5, 0xbb, 0xcb, 0x91, 0x18,
|
||||
0x96, 0x20, 0xf4, 0xaf, 0x03, 0xc4, 0x39, 0xe8, 0x44, 0x34, 0x75, 0xac, 0x1b, 0xbb, 0x61, 0xf1,
|
||||
0x32, 0x49, 0xe2, 0xd8, 0x30, 0x82, 0x1d, 0x71, 0x1a, 0x24, 0x93, 0xd0, 0x05, 0x38, 0xec, 0x5b,
|
||||
0x03, 0xc7, 0x08, 0xf6, 0x3c, 0xf2, 0x8c, 0x78, 0xd6, 0xb6, 0x45, 0x4c, 0x16, 0x80, 0x6b, 0xe1,
|
||||
0x74, 0x86, 0xfe, 0xf3, 0x6d, 0x68, 0xf0, 0x25, 0xa1, 0xfe, 0xef, 0x95, 0xc8, 0xc6, 0xf4, 0xbf,
|
||||
0x28, 0x43, 0x9d, 0x87, 0xc6, 0x67, 0xa1, 0x62, 0x85, 0x66, 0x56, 0xb1, 0x4c, 0x74, 0x4f, 0xb6,
|
||||
0xaf, 0x6a, 0xc6, 0x7a, 0x29, 0xeb, 0xa8, 0xa0, 0xfb, 0x80, 0x1c, 0x3c, 0xa3, 0x3e, 0x12, 0x19,
|
||||
0x1d, 0x3a, 0x0a, 0x0d, 0x7f, 0x6f, 0xab, 0x67, 0xfa, 0x5a, 0xf5, 0x44, 0xf5, 0x5c, 0x1b, 0x8b,
|
||||
0x94, 0x7e, 0x1f, 0x5a, 0x21, 0x33, 0xea, 0x40, 0xf5, 0x39, 0x39, 0x10, 0x85, 0xd3, 0xbf, 0xe8,
|
||||
0x82, 0xf0, 0xb5, 0xc8, 0x6d, 0x92, 0xb6, 0xcd, 0x4b, 0x11, 0x0e, 0xf9, 0x25, 0xa8, 0xd2, 0x45,
|
||||
0x58, 0xb2, 0x09, 0x93, 0xbb, 0x48, 0x6e, 0x6d, 0x97, 0xa1, 0xce, 0x8f, 0x27, 0x92, 0x65, 0x20,
|
||||
0xa8, 0x3d, 0x27, 0x07, 0xbc, 0x8f, 0xda, 0x98, 0xfd, 0xcf, 0x05, 0xf9, 0xf3, 0x2a, 0x4c, 0xcb,
|
||||
0x21, 0x59, 0x7d, 0x15, 0xaa, 0x8b, 0x66, 0xba, 0xeb, 0x35, 0x68, 0x1a, 0xdb, 0x01, 0xf1, 0xa2,
|
||||
0x53, 0xc0, 0x30, 0x49, 0x47, 0x19, 0x86, 0xc5, 0xf4, 0xdc, 0xc6, 0x3c, 0xa1, 0x77, 0xa1, 0x21,
|
||||
0x22, 0xdd, 0x49, 0xa4, 0x88, 0xbf, 0x22, 0xf3, 0xdf, 0x87, 0x56, 0x14, 0xb8, 0xfe, 0xb8, 0x65,
|
||||
0x7b, 0xd0, 0x8a, 0x22, 0xd4, 0x47, 0xa0, 0x1e, 0xb8, 0x81, 0x61, 0x33, 0xb8, 0x2a, 0xe6, 0x09,
|
||||
0xea, 0x68, 0x0e, 0x79, 0x19, 0x2c, 0x47, 0xa3, 0x60, 0x15, 0xc7, 0x04, 0x3e, 0xc8, 0x91, 0x7d,
|
||||
0x9e, 0x5b, 0xe5, 0xb9, 0x11, 0x21, 0x2e, 0xb3, 0x26, 0x97, 0x79, 0x00, 0x0d, 0x11, 0xb6, 0x8e,
|
||||
0xf2, 0xcb, 0x52, 0x3e, 0x5a, 0x84, 0xfa, 0x80, 0xe6, 0x0b, 0xad, 0xbf, 0x9d, 0x18, 0x22, 0xf8,
|
||||
0x6a, 0x74, 0xd9, 0x75, 0x02, 0x6a, 0xc6, 0xea, 0x6e, 0x1c, 0x73, 0x49, 0xaa, 0x42, 0x8f, 0x9f,
|
||||
0x41, 0x70, 0x8f, 0x12, 0x29, 0xfd, 0x77, 0xcb, 0xd0, 0x8e, 0x0e, 0x7d, 0xf4, 0x0f, 0xf3, 0x9c,
|
||||
0x67, 0x11, 0x66, 0x3c, 0xc1, 0x45, 0x47, 0x87, 0xd0, 0x85, 0x8e, 0x25, 0x6a, 0x82, 0x25, 0x1e,
|
||||
0xac, 0x4a, 0xe8, 0xb7, 0x72, 0x95, 0x3a, 0x0f, 0xd3, 0x21, 0xeb, 0x83, 0xd8, 0xf4, 0x14, 0x9a,
|
||||
0xae, 0x47, 0xd2, 0x1d, 0xa8, 0x5a, 0x26, 0x3f, 0x83, 0x6e, 0x63, 0xfa, 0x57, 0xdf, 0x86, 0x69,
|
||||
0x39, 0xf4, 0xab, 0x3f, 0xcb, 0xf6, 0x9e, 0x3b, 0xb4, 0x18, 0x29, 0xcc, 0x5c, 0x49, 0xac, 0x6f,
|
||||
0xc3, 0x26, 0xc4, 0x2c, 0x58, 0x11, 0xd0, 0x5f, 0x83, 0x3a, 0x3f, 0x90, 0x4a, 0x20, 0xeb, 0xbf,
|
||||
0xd1, 0x87, 0x3a, 0x53, 0x82, 0x7e, 0x85, 0x3b, 0xc0, 0x05, 0x68, 0xb0, 0xcd, 0x55, 0x78, 0x54,
|
||||
0x7e, 0x24, 0x4b, 0x63, 0x58, 0xf0, 0xe8, 0xcb, 0x30, 0x25, 0x1d, 0x05, 0x50, 0x8b, 0x65, 0x19,
|
||||
0x91, 0x15, 0x84, 0x49, 0xa4, 0x43, 0x8b, 0x4e, 0x96, 0x62, 0x00, 0xa5, 0xed, 0x8f, 0xd2, 0xfa,
|
||||
0x29, 0x68, 0x88, 0xcd, 0xa2, 0x2e, 0x8e, 0x3e, 0x7a, 0x51, 0x2f, 0x45, 0x69, 0xfd, 0x0b, 0xd0,
|
||||
0x8e, 0x4e, 0x0c, 0xd0, 0x63, 0x98, 0x16, 0x27, 0x06, 0x7c, 0xc3, 0x43, 0x99, 0x67, 0x0b, 0xac,
|
||||
0x8b, 0xee, 0x6e, 0xd8, 0xa1, 0x43, 0xf7, 0xc9, 0xc1, 0x90, 0x60, 0x05, 0x40, 0xff, 0xd9, 0x73,
|
||||
0xac, 0xe7, 0xf5, 0x21, 0xb4, 0xa2, 0x30, 0x69, 0x52, 0x0b, 0x0b, 0x7c, 0x68, 0xac, 0x14, 0xc6,
|
||||
0xf8, 0xb9, 0x3c, 0x1d, 0x80, 0xd9, 0x08, 0xaa, 0x1f, 0x83, 0xea, 0x03, 0x72, 0x40, 0x3d, 0x84,
|
||||
0x0f, 0xa4, 0xc2, 0x43, 0xf8, 0x80, 0xd9, 0x83, 0x86, 0x38, 0xae, 0x48, 0x96, 0x77, 0x11, 0x1a,
|
||||
0xdb, 0xfc, 0x04, 0xa4, 0x60, 0xc8, 0x14, 0x6c, 0xfa, 0x1d, 0x98, 0x92, 0x0f, 0x29, 0x92, 0x78,
|
||||
0x27, 0x60, 0xaa, 0x2f, 0x1d, 0x83, 0x70, 0x35, 0xc8, 0x24, 0x9d, 0xa8, 0xe6, 0x98, 0x42, 0x58,
|
||||
0xcd, 0xb4, 0xc3, 0xb7, 0x32, 0xbb, 0x7d, 0x84, 0x35, 0x3e, 0x80, 0x43, 0xc9, 0xd3, 0x88, 0x64,
|
||||
0x49, 0xe7, 0xe0, 0xd0, 0x56, 0xe2, 0xec, 0x83, 0x8f, 0x81, 0x49, 0xb2, 0xde, 0x83, 0x3a, 0x8f,
|
||||
0x16, 0x27, 0x21, 0x2e, 0x41, 0xdd, 0x60, 0xd1, 0x68, 0x2a, 0x38, 0x2b, 0xed, 0x49, 0xe5, 0x5a,
|
||||
0x32, 0x51, 0xcc, 0x19, 0x75, 0x0b, 0x66, 0xd4, 0x00, 0x74, 0x12, 0x72, 0x0d, 0x66, 0xf6, 0x95,
|
||||
0x40, 0x37, 0x87, 0x9e, 0xcf, 0x84, 0x56, 0xa0, 0xb0, 0x2a, 0xa8, 0xff, 0x54, 0x03, 0x6a, 0xec,
|
||||
0x04, 0x25, 0x59, 0xc4, 0x75, 0xa8, 0x05, 0xe4, 0x65, 0xb8, 0x46, 0x9d, 0x1f, 0x79, 0x1c, 0xc3,
|
||||
0xb7, 0xf1, 0x8c, 0x1f, 0x7d, 0x1a, 0xea, 0x7e, 0x70, 0x60, 0x87, 0xe7, 0x7e, 0x27, 0x47, 0x0b,
|
||||
0x6e, 0x52, 0x56, 0xcc, 0x25, 0xa8, 0x28, 0xf3, 0x05, 0x71, 0xe2, 0x57, 0x20, 0xca, 0x9c, 0x10,
|
||||
0x73, 0x09, 0x74, 0x07, 0x9a, 0xfd, 0x1d, 0xd2, 0x7f, 0x4e, 0x4c, 0x71, 0xd4, 0x77, 0x7a, 0xb4,
|
||||
0xf0, 0x32, 0x67, 0xc6, 0xa1, 0x14, 0x2d, 0xbb, 0xcf, 0xb4, 0xdb, 0x18, 0xa7, 0x6c, 0xa6, 0x71,
|
||||
0xcc, 0x25, 0xd0, 0x2a, 0xb4, 0xad, 0xbe, 0xeb, 0xac, 0xee, 0xba, 0x5f, 0xb6, 0xc4, 0x99, 0xde,
|
||||
0xd9, 0xd1, 0xe2, 0xbd, 0x90, 0x1d, 0xc7, 0x92, 0x21, 0x4c, 0x6f, 0x97, 0x6e, 0x8b, 0x5b, 0xe3,
|
||||
0xc2, 0x30, 0x76, 0x1c, 0x4b, 0xea, 0x73, 0x42, 0x9f, 0xd9, 0x4e, 0x7e, 0x0f, 0xea, 0xac, 0xcb,
|
||||
0xd1, 0x7b, 0x72, 0xf6, 0xac, 0x54, 0x52, 0xee, 0x88, 0x25, 0x54, 0x15, 0xe1, 0xb0, 0xfe, 0x57,
|
||||
0x71, 0xa6, 0xc6, 0xc1, 0x11, 0x7a, 0xe3, 0x38, 0x6f, 0x42, 0x53, 0xa8, 0x42, 0xad, 0x70, 0x2b,
|
||||
0x64, 0x78, 0x03, 0xea, 0xdc, 0x31, 0xb3, 0xdb, 0xf3, 0x16, 0xb4, 0xa3, 0xce, 0x1c, 0xcd, 0xc2,
|
||||
0x7a, 0x27, 0x87, 0xe5, 0xe7, 0x2a, 0x50, 0xe7, 0x27, 0x49, 0xe9, 0xa1, 0x56, 0xf6, 0x82, 0x93,
|
||||
0xa3, 0x0f, 0xa6, 0x64, 0x37, 0xb8, 0xc7, 0x36, 0x6a, 0x74, 0x61, 0x1e, 0xdd, 0xcc, 0x3a, 0x57,
|
||||
0x20, 0xbd, 0x11, 0xf2, 0xe3, 0x58, 0xb4, 0x40, 0x9d, 0x8f, 0xa1, 0x1d, 0x49, 0xa1, 0x25, 0x55,
|
||||
0xa5, 0x17, 0x46, 0xaa, 0x22, 0x59, 0xa4, 0x00, 0xfc, 0x66, 0x19, 0xaa, 0x2b, 0xd6, 0x7e, 0xaa,
|
||||
0x1f, 0x6e, 0x84, 0x5e, 0x5d, 0x34, 0x1c, 0xac, 0x58, 0xfb, 0x8a, 0x53, 0xeb, 0xab, 0xa1, 0xc5,
|
||||
0xdd, 0x52, 0xab, 0x77, 0x66, 0xf4, 0x0a, 0x2c, 0x86, 0xe1, 0x15, 0xfb, 0xa5, 0x26, 0xd4, 0xd8,
|
||||
0x21, 0x6d, 0xd6, 0x38, 0x75, 0x30, 0x2c, 0xae, 0x18, 0x0b, 0x03, 0xb1, 0x09, 0x97, 0xf1, 0xf3,
|
||||
0x71, 0xca, 0x08, 0x8a, 0xc7, 0x29, 0x1e, 0xd5, 0xa2, 0xac, 0x98, 0x4b, 0xd0, 0x22, 0x77, 0xad,
|
||||
0x5d, 0x22, 0x86, 0xa9, 0x82, 0x22, 0x1f, 0x59, 0xbb, 0x04, 0x33, 0x7e, 0x2a, 0xb7, 0x63, 0xf8,
|
||||
0x3b, 0x62, 0x84, 0x2a, 0x90, 0x5b, 0x33, 0xfc, 0x1d, 0xcc, 0xf8, 0xa9, 0x9c, 0x43, 0xb7, 0x84,
|
||||
0x8d, 0x71, 0xe4, 0xe8, 0x4e, 0x11, 0x33, 0x7e, 0x2a, 0xe7, 0x5b, 0x5f, 0x25, 0x62, 0x4c, 0x2a,
|
||||
0x90, 0xdb, 0xb4, 0xbe, 0x4a, 0x30, 0xe3, 0x8f, 0x87, 0xf0, 0xd6, 0x78, 0x5d, 0x23, 0x0d, 0xe1,
|
||||
0x4f, 0x60, 0x36, 0x50, 0x8e, 0x1a, 0xc4, 0x4d, 0x81, 0x0b, 0x05, 0x7a, 0x51, 0x64, 0x70, 0x02,
|
||||
0x83, 0x3a, 0x01, 0xdb, 0x00, 0x67, 0x3b, 0xc1, 0x1b, 0x50, 0xff, 0xac, 0x65, 0x06, 0x3b, 0x6a,
|
||||
0x76, 0x5d, 0x19, 0xf2, 0xa8, 0xda, 0x26, 0x1a, 0xf2, 0x64, 0xad, 0x73, 0x9c, 0x15, 0xa8, 0x51,
|
||||
0xf3, 0x99, 0xcc, 0x8e, 0x63, 0xab, 0xfb, 0x58, 0x03, 0xb0, 0xdc, 0xd1, 0x1c, 0x67, 0x0e, 0x6a,
|
||||
0xd4, 0x42, 0x72, 0xba, 0x64, 0x0e, 0x6a, 0xd4, 0xee, 0xf2, 0x73, 0xa9, 0xb6, 0xd5, 0xdc, 0x6a,
|
||||
0x98, 0x7b, 0x06, 0x66, 0x55, 0x75, 0xe4, 0xa0, 0xfc, 0x59, 0x13, 0x6a, 0xec, 0xc6, 0x43, 0xd2,
|
||||
0x23, 0x7f, 0x0c, 0x66, 0xb8, 0xfe, 0x96, 0xc4, 0x12, 0xbc, 0x92, 0x79, 0xe1, 0x49, 0xbd, 0x47,
|
||||
0x21, 0x4c, 0x40, 0x88, 0x60, 0x15, 0x61, 0xfc, 0x45, 0x05, 0x83, 0x52, 0x2c, 0xf2, 0x56, 0xb4,
|
||||
0x78, 0xad, 0x15, 0x5c, 0xb7, 0x61, 0xb2, 0x7c, 0x09, 0x1c, 0xae, 0x64, 0xd1, 0x12, 0xb4, 0xe8,
|
||||
0xd4, 0x4a, 0xbb, 0x4b, 0xb8, 0xed, 0x99, 0xd1, 0xf2, 0x3d, 0xc1, 0x8d, 0x23, 0x39, 0x3a, 0xb1,
|
||||
0xf7, 0x0d, 0xcf, 0x64, 0xb5, 0x12, 0x3e, 0x7c, 0x76, 0x34, 0xc8, 0x72, 0xc8, 0x8e, 0x63, 0x49,
|
||||
0xf4, 0x00, 0xa6, 0x4c, 0x12, 0xc5, 0x09, 0x84, 0x53, 0x7f, 0x6a, 0x34, 0xd0, 0x4a, 0x2c, 0x80,
|
||||
0x65, 0x69, 0x5a, 0xa7, 0x70, 0x6f, 0xe8, 0x17, 0x2e, 0x36, 0x18, 0x54, 0x7c, 0xad, 0x31, 0x96,
|
||||
0xd4, 0x4f, 0xc3, 0x8c, 0xa2, 0xb7, 0x4f, 0x74, 0xd5, 0x21, 0xeb, 0x92, 0xe3, 0x2c, 0x44, 0x5b,
|
||||
0x94, 0x77, 0xd4, 0x65, 0x47, 0xee, 0x8e, 0x44, 0x08, 0x3e, 0x84, 0x56, 0xa8, 0x18, 0x74, 0x57,
|
||||
0xad, 0xc3, 0xf9, 0xe2, 0x3a, 0x44, 0x3a, 0x15, 0x68, 0xeb, 0xd0, 0x8e, 0x34, 0x84, 0x16, 0x55,
|
||||
0xb8, 0xb7, 0x8b, 0xe1, 0x62, 0xed, 0x0a, 0x3c, 0x0c, 0x53, 0x92, 0xa2, 0xd0, 0xb2, 0x8a, 0xf8,
|
||||
0x4e, 0x31, 0xa2, 0xac, 0xe6, 0x78, 0xd5, 0x13, 0x69, 0x4c, 0xd6, 0x4a, 0x35, 0xd6, 0xca, 0x1f,
|
||||
0x36, 0xa1, 0x15, 0xdd, 0x32, 0xca, 0xd8, 0x63, 0xee, 0x79, 0x76, 0xe1, 0x1e, 0x33, 0x94, 0xef,
|
||||
0x3e, 0xf5, 0x6c, 0x4c, 0x25, 0xa8, 0x8a, 0x03, 0x2b, 0x88, 0x5c, 0xf5, 0x6c, 0xb1, 0xe8, 0x13,
|
||||
0xca, 0x8e, 0xb9, 0x14, 0x7a, 0xac, 0x5a, 0x79, 0x6d, 0xc4, 0x29, 0xb4, 0x02, 0x92, 0x6b, 0xe9,
|
||||
0x3d, 0x68, 0x5b, 0x74, 0xe9, 0xb7, 0x16, 0xcf, 0xbc, 0x6f, 0x17, 0xc3, 0xf5, 0x42, 0x11, 0x1c,
|
||||
0x4b, 0xd3, 0xba, 0x6d, 0x1b, 0xfb, 0xd4, 0xaf, 0x19, 0x58, 0x63, 0xdc, 0xba, 0xdd, 0x8b, 0x85,
|
||||
0xb0, 0x8c, 0x80, 0x6e, 0x8a, 0xb5, 0x4b, 0xb3, 0x60, 0x64, 0x89, 0xbb, 0x2a, 0x5e, 0xbf, 0x7c,
|
||||
0x90, 0x9a, 0x69, 0xb9, 0x1b, 0x5f, 0x1a, 0x03, 0x65, 0xe4, 0x6c, 0x4b, 0x35, 0xc8, 0x57, 0x46,
|
||||
0xed, 0x71, 0x35, 0x28, 0xaf, 0x8e, 0xf4, 0x63, 0x50, 0x7d, 0xea, 0xd9, 0xf9, 0x73, 0x35, 0x53,
|
||||
0x77, 0x4e, 0xf6, 0x49, 0xd5, 0x13, 0xf2, 0x17, 0xf4, 0x91, 0x4e, 0x72, 0x71, 0xa4, 0x4e, 0xcf,
|
||||
0x61, 0x7a, 0x4f, 0x4c, 0xe8, 0xd7, 0x54, 0x7f, 0x7b, 0x33, 0xe1, 0x6f, 0xd4, 0xc3, 0x36, 0x3c,
|
||||
0xc2, 0x2f, 0x5a, 0x48, 0x33, 0xf9, 0xb8, 0xf3, 0xe4, 0xfd, 0x70, 0xfd, 0x31, 0xd1, 0x48, 0x91,
|
||||
0xec, 0x5b, 0x8e, 0xf5, 0x33, 0x65, 0x68, 0x45, 0x97, 0xc8, 0xd2, 0xd1, 0xf9, 0x96, 0xe5, 0xaf,
|
||||
0x11, 0xc3, 0x24, 0x9e, 0xf0, 0xdb, 0xf3, 0x85, 0xb7, 0xd3, 0xba, 0x3d, 0x21, 0x81, 0x23, 0x59,
|
||||
0xfd, 0x04, 0xb4, 0x42, 0x6a, 0xce, 0xa6, 0xec, 0xbb, 0x15, 0x68, 0x88, 0xeb, 0x67, 0xc9, 0x4a,
|
||||
0xdc, 0x86, 0x86, 0x6d, 0x1c, 0xb8, 0x7b, 0xe1, 0x96, 0xe9, 0x4c, 0xc1, 0x8d, 0xb6, 0xee, 0x43,
|
||||
0xc6, 0x8d, 0x85, 0x14, 0xfa, 0x0c, 0xd4, 0x6d, 0x6b, 0xd7, 0x0a, 0xc4, 0xf0, 0x71, 0xba, 0x50,
|
||||
0x9c, 0x1d, 0x54, 0x73, 0x19, 0x5a, 0x38, 0xbb, 0x75, 0x12, 0xde, 0x19, 0x2e, 0x2c, 0xfc, 0x19,
|
||||
0xe3, 0xc6, 0x42, 0x4a, 0xbf, 0x0f, 0x0d, 0x5e, 0x9d, 0xc9, 0x26, 0x09, 0xb5, 0x25, 0xb1, 0xa5,
|
||||
0xb3, 0xba, 0xe5, 0xac, 0x4a, 0x8f, 0x43, 0x83, 0x17, 0x9e, 0x63, 0x35, 0xdf, 0x79, 0x9d, 0xed,
|
||||
0x77, 0x6c, 0xfd, 0x61, 0x7c, 0xf8, 0xf7, 0xf1, 0xcf, 0x32, 0xf4, 0x27, 0x70, 0x68, 0xc5, 0x08,
|
||||
0x8c, 0x2d, 0xc3, 0x27, 0x98, 0xf4, 0x5d, 0xcf, 0xcc, 0x44, 0xf5, 0x78, 0x96, 0x88, 0x50, 0xe7,
|
||||
0xa3, 0x0a, 0xbe, 0x1f, 0x85, 0x0e, 0xff, 0xf7, 0x84, 0x0e, 0xff, 0xb8, 0x96, 0x13, 0xcf, 0x1b,
|
||||
0x27, 0x92, 0x41, 0x0d, 0x2e, 0x15, 0xd0, 0xbb, 0xa9, 0xae, 0xbd, 0x4f, 0x15, 0x48, 0x2a, 0x8b,
|
||||
0xef, 0x9b, 0x6a, 0x44, 0xaf, 0x48, 0x56, 0x09, 0xe9, 0xdd, 0x4d, 0x86, 0xf4, 0xce, 0x14, 0x48,
|
||||
0xa7, 0x62, 0x7a, 0x37, 0xd5, 0x98, 0x5e, 0x51, 0xe9, 0x72, 0x50, 0xef, 0xff, 0x59, 0x18, 0xed,
|
||||
0xd7, 0x72, 0xc2, 0x3e, 0x9f, 0x56, 0xc3, 0x3e, 0x23, 0xac, 0xe6, 0x87, 0x15, 0xf7, 0xf9, 0xf5,
|
||||
0x46, 0x4e, 0xdc, 0x67, 0x41, 0x89, 0xfb, 0x8c, 0xa8, 0x59, 0x32, 0xf0, 0x73, 0x53, 0x0d, 0xfc,
|
||||
0x9c, 0x2a, 0x90, 0x54, 0x22, 0x3f, 0x0b, 0x4a, 0xe4, 0xa7, 0xa8, 0x50, 0x29, 0xf4, 0xb3, 0xa0,
|
||||
0x84, 0x7e, 0x8a, 0x04, 0xa5, 0xd8, 0xcf, 0x82, 0x12, 0xfb, 0x29, 0x12, 0x94, 0x82, 0x3f, 0x0b,
|
||||
0x4a, 0xf0, 0xa7, 0x48, 0x50, 0x8a, 0xfe, 0xdc, 0x54, 0xa3, 0x3f, 0xc5, 0xfd, 0x23, 0x29, 0xfd,
|
||||
0x47, 0x81, 0x9a, 0xff, 0xc6, 0x40, 0xcd, 0x2f, 0x56, 0x73, 0x02, 0x30, 0x38, 0x3b, 0x00, 0x73,
|
||||
0x21, 0x5f, 0x93, 0xc5, 0x11, 0x98, 0xf1, 0x67, 0x81, 0x74, 0x08, 0xe6, 0xbd, 0x44, 0x08, 0xe6,
|
||||
0x74, 0x81, 0xb0, 0x1a, 0x83, 0xf9, 0x3f, 0x13, 0x64, 0xf8, 0xfd, 0xc6, 0x88, 0xfd, 0xf4, 0x0d,
|
||||
0x79, 0x3f, 0x3d, 0x62, 0x26, 0x4b, 0x6f, 0xa8, 0x6f, 0xab, 0x1b, 0xea, 0x73, 0x63, 0xc8, 0x2a,
|
||||
0x3b, 0xea, 0x8d, 0xac, 0x1d, 0x75, 0x77, 0x0c, 0x94, 0xdc, 0x2d, 0xf5, 0xfd, 0xf4, 0x96, 0xfa,
|
||||
0xc2, 0x18, 0x78, 0x99, 0x7b, 0xea, 0x8d, 0xac, 0x3d, 0xf5, 0x38, 0xb5, 0xcb, 0xdd, 0x54, 0x7f,
|
||||
0x46, 0xd9, 0x54, 0x9f, 0x1d, 0xa7, 0xbb, 0xe2, 0xc9, 0xe1, 0x73, 0x39, 0xbb, 0xea, 0x77, 0xc7,
|
||||
0x81, 0x19, 0x1d, 0xc4, 0xfe, 0xd1, 0xbe, 0x58, 0x2d, 0xe6, 0xf7, 0xde, 0x84, 0x56, 0x78, 0xd1,
|
||||
0x46, 0xff, 0x0a, 0x34, 0xc3, 0x37, 0x47, 0x49, 0xcf, 0x39, 0x1a, 0x6d, 0xea, 0xf8, 0xea, 0x59,
|
||||
0xa4, 0xd0, 0x6d, 0xa8, 0xd1, 0x7f, 0xc2, 0x2d, 0xce, 0x8f, 0x77, 0xa1, 0x87, 0x16, 0x82, 0x99,
|
||||
0x9c, 0xfe, 0x6f, 0x47, 0x00, 0xa4, 0xa7, 0x18, 0xe3, 0x16, 0xfb, 0x3e, 0x1d, 0xcc, 0xec, 0x80,
|
||||
0x78, 0xec, 0x22, 0x57, 0xe1, 0x53, 0x85, 0xb8, 0x04, 0x6a, 0x2d, 0x01, 0xf1, 0xb0, 0x10, 0x47,
|
||||
0x8f, 0xa0, 0x15, 0x06, 0x52, 0xb5, 0x1a, 0x83, 0x7a, 0x77, 0x6c, 0xa8, 0x30, 0xb4, 0x87, 0x23,
|
||||
0x08, 0xb4, 0x08, 0x35, 0xdf, 0xf5, 0x02, 0xad, 0xce, 0xa0, 0xde, 0x19, 0x1b, 0x6a, 0xd3, 0xf5,
|
||||
0x02, 0xcc, 0x44, 0x79, 0xd3, 0xa4, 0x97, 0xae, 0x93, 0x34, 0x4d, 0x19, 0xb1, 0xff, 0xb5, 0x1a,
|
||||
0x8d, 0xa1, 0xcb, 0xc2, 0x1b, 0xb9, 0x0d, 0x5d, 0x1c, 0x5f, 0x4b, 0xb2, 0x57, 0x22, 0xb1, 0x08,
|
||||
0xe2, 0x9a, 0xe0, 0xeb, 0x9b, 0xf3, 0xd0, 0xe9, 0xbb, 0xfb, 0xc4, 0xc3, 0xf1, 0x15, 0x27, 0x71,
|
||||
0x0b, 0x2d, 0x45, 0x47, 0x3a, 0xb4, 0x76, 0x2c, 0x93, 0xf4, 0xfa, 0x62, 0xfc, 0x6b, 0xe1, 0x28,
|
||||
0x8d, 0x1e, 0x40, 0x8b, 0xc5, 0xd8, 0xc3, 0x08, 0xff, 0x64, 0x95, 0xe4, 0xa1, 0xfe, 0x10, 0x80,
|
||||
0x16, 0xc4, 0x0a, 0xbf, 0x67, 0x05, 0xac, 0x0f, 0x5b, 0x38, 0x4a, 0xd3, 0x0a, 0xb3, 0x7b, 0x64,
|
||||
0x72, 0x85, 0x9b, 0xbc, 0xc2, 0x49, 0x3a, 0xba, 0x0a, 0xaf, 0x32, 0x5a, 0x62, 0x8b, 0xc9, 0x43,
|
||||
0xf5, 0x2d, 0x9c, 0x9d, 0xc9, 0xee, 0xcd, 0x19, 0x03, 0x7e, 0xaf, 0x9d, 0x05, 0xef, 0xea, 0x38,
|
||||
0x26, 0xa0, 0x0b, 0x70, 0xd8, 0x24, 0xdb, 0xc6, 0x9e, 0x1d, 0x3c, 0x21, 0xbb, 0x43, 0xdb, 0x08,
|
||||
0x48, 0xcf, 0x64, 0x8f, 0x6d, 0xdb, 0x38, 0x9d, 0x81, 0x2e, 0xc1, 0x2b, 0x82, 0xc8, 0xdd, 0x98,
|
||||
0x6a, 0xa3, 0x67, 0xb2, 0xb7, 0xa7, 0x6d, 0x9c, 0x95, 0xa5, 0x7f, 0xa7, 0x46, 0x95, 0xce, 0x4c,
|
||||
0xfb, 0x7d, 0xa8, 0x1a, 0xa6, 0x29, 0xa6, 0xcd, 0x2b, 0x13, 0x3a, 0x88, 0x78, 0x4f, 0x4e, 0x11,
|
||||
0xd0, 0x46, 0x74, 0xe5, 0x8e, 0x4f, 0x9c, 0xd7, 0x27, 0xc5, 0x8a, 0xbe, 0x01, 0x20, 0x70, 0x28,
|
||||
0xe2, 0x1e, 0xbf, 0x38, 0x5e, 0xfd, 0xc1, 0x10, 0xa3, 0xfb, 0xe4, 0x02, 0x07, 0xdd, 0x87, 0x1a,
|
||||
0xab, 0x21, 0x9f, 0x58, 0xaf, 0x4e, 0x8a, 0xf7, 0x88, 0xd7, 0x8f, 0x61, 0xe8, 0x7d, 0x7e, 0xf7,
|
||||
0x4d, 0xba, 0x70, 0x59, 0x56, 0x2f, 0x5c, 0x2e, 0x41, 0xdd, 0x0a, 0xc8, 0x6e, 0xfa, 0xfe, 0xed,
|
||||
0x48, 0x53, 0x15, 0x23, 0x0f, 0x17, 0x1d, 0x79, 0x0f, 0xf0, 0xc3, 0xe8, 0x2e, 0x76, 0x72, 0x3c,
|
||||
0xbc, 0x0b, 0x35, 0x2a, 0x9e, 0x5a, 0x4b, 0x8e, 0x53, 0x30, 0x93, 0xd4, 0x2f, 0x43, 0x8d, 0x36,
|
||||
0x76, 0x44, 0xeb, 0x44, 0x7d, 0x2a, 0x51, 0x7d, 0x96, 0xa6, 0xa0, 0xed, 0x0e, 0x89, 0xc7, 0x1c,
|
||||
0x43, 0xff, 0x97, 0x9a, 0x74, 0x29, 0xae, 0x27, 0xdb, 0xd8, 0xb5, 0x89, 0x47, 0x4e, 0xd9, 0xca,
|
||||
0x70, 0xc2, 0xca, 0x6e, 0x4c, 0x8e, 0x96, 0xb2, 0x33, 0x9c, 0xb0, 0xb3, 0x1f, 0x00, 0x33, 0x65,
|
||||
0x69, 0x0f, 0x15, 0x4b, 0xbb, 0x3e, 0x39, 0xa2, 0x62, 0x6b, 0xa4, 0xc8, 0xd6, 0x56, 0x54, 0x5b,
|
||||
0xeb, 0x8e, 0xa7, 0xf2, 0x68, 0x6a, 0x1a, 0xc3, 0xda, 0xbe, 0x90, 0x6b, 0x6d, 0x4b, 0x8a, 0xb5,
|
||||
0x4d, 0x5a, 0xf4, 0x27, 0x64, 0x6f, 0xff, 0x50, 0x83, 0x1a, 0x9d, 0x1e, 0xd1, 0xaa, 0x6c, 0x6b,
|
||||
0xef, 0x4e, 0x34, 0xb5, 0xca, 0x76, 0xb6, 0x9e, 0xb0, 0xb3, 0xab, 0x93, 0x21, 0xa5, 0x6c, 0x6c,
|
||||
0x3d, 0x61, 0x63, 0x13, 0xe2, 0xa5, 0xec, 0x6b, 0x4d, 0xb1, 0xaf, 0xcb, 0x93, 0xa1, 0x29, 0xb6,
|
||||
0x65, 0x14, 0xd9, 0xd6, 0x5d, 0xd5, 0xb6, 0xc6, 0x5c, 0xbd, 0xb1, 0xb5, 0xca, 0x18, 0x76, 0xf5,
|
||||
0x41, 0xae, 0x5d, 0xdd, 0x56, 0xec, 0x6a, 0x92, 0x62, 0x3f, 0x21, 0x9b, 0xba, 0xca, 0x17, 0x9d,
|
||||
0xe2, 0x9e, 0xf1, 0x98, 0x8b, 0x4e, 0xfd, 0x1a, 0xb4, 0xe3, 0xb7, 0xec, 0x19, 0xd7, 0xf3, 0x39,
|
||||
0x5b, 0x58, 0x6a, 0x98, 0xd4, 0xaf, 0x40, 0x3b, 0x7e, 0x9f, 0x9e, 0x51, 0x96, 0xcf, 0x32, 0x85,
|
||||
0x94, 0x48, 0xe9, 0xab, 0x70, 0x38, 0xfd, 0x7a, 0x36, 0x23, 0x0e, 0x2f, 0xdd, 0x2d, 0x0f, 0x9f,
|
||||
0xa2, 0x48, 0x24, 0xfd, 0x05, 0xcc, 0x26, 0xde, 0xc3, 0x4e, 0x8c, 0x81, 0xae, 0x48, 0x4b, 0xe4,
|
||||
0xaa, 0xd8, 0x83, 0x67, 0xdf, 0x96, 0x8f, 0x17, 0xc2, 0xfa, 0x0a, 0xcc, 0x16, 0x54, 0x7e, 0x9c,
|
||||
0xcb, 0xf2, 0x5f, 0x82, 0xa9, 0x51, 0x75, 0xff, 0x04, 0x2e, 0xf3, 0x07, 0xd0, 0x49, 0xbd, 0xe5,
|
||||
0x4f, 0x16, 0xb3, 0x01, 0x30, 0x88, 0x78, 0x84, 0xd1, 0x5e, 0x9a, 0xe0, 0xe9, 0x02, 0x93, 0xc3,
|
||||
0x12, 0x86, 0xfe, 0x3b, 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, 0x12, 0x58, 0x11, 0xd7, 0x5f, 0xc0, 0x94,
|
||||
0x94, 0x89, 0x6e, 0x41, 0xc5, 0x1d, 0xa6, 0xee, 0x35, 0xe6, 0x63, 0x3e, 0x0e, 0xfd, 0x0d, 0x57,
|
||||
0xdc, 0x61, 0xda, 0x25, 0x65, 0xf7, 0xad, 0x2a, 0xee, 0xab, 0x3f, 0x80, 0xc3, 0xe9, 0xb7, 0xf2,
|
||||
0xc9, 0xee, 0x39, 0x93, 0x8a, 0x12, 0xf0, 0x6e, 0x4a, 0x6e, 0xf9, 0x17, 0xe0, 0x50, 0xf2, 0x05,
|
||||
0x7c, 0xc6, 0x6b, 0x9c, 0xf8, 0x51, 0x53, 0x18, 0xae, 0x9f, 0xff, 0x85, 0x32, 0xcc, 0xaa, 0x0d,
|
||||
0x41, 0x47, 0x01, 0xa9, 0x94, 0x75, 0xd7, 0x21, 0x9d, 0x12, 0x7a, 0x15, 0x0e, 0xab, 0xf4, 0x45,
|
||||
0xd3, 0xec, 0x94, 0xd3, 0xec, 0x74, 0xd8, 0xea, 0x54, 0x90, 0x06, 0x47, 0x12, 0x3d, 0xc4, 0x06,
|
||||
0xd1, 0x4e, 0x15, 0xbd, 0x0e, 0xaf, 0x26, 0x73, 0x86, 0xb6, 0xd1, 0x27, 0x9d, 0x9a, 0xfe, 0xfd,
|
||||
0x0a, 0xd4, 0x9e, 0xfa, 0xc4, 0xd3, 0xff, 0xb9, 0x12, 0xbe, 0xd2, 0xb8, 0x01, 0x35, 0xf6, 0x38,
|
||||
0x5d, 0x7a, 0xcd, 0x58, 0x4e, 0xbc, 0x66, 0x54, 0x5e, 0xc4, 0xc5, 0xaf, 0x19, 0x6f, 0x40, 0x8d,
|
||||
0x3d, 0x47, 0x9f, 0x5c, 0xf2, 0xa7, 0xcb, 0xd0, 0x8e, 0x9f, 0x86, 0x4f, 0x2c, 0x2f, 0xbf, 0x0a,
|
||||
0xa9, 0xa8, 0xaf, 0x42, 0xce, 0x43, 0xdd, 0x63, 0xef, 0x37, 0xf8, 0x28, 0x93, 0x7c, 0x6b, 0xc2,
|
||||
0x0a, 0xc4, 0x9c, 0x45, 0x27, 0x30, 0x25, 0x3f, 0x7c, 0x9f, 0xbc, 0x1a, 0xa7, 0xc4, 0x57, 0x6f,
|
||||
0x7a, 0xa6, 0xbf, 0xe8, 0x79, 0xc6, 0x81, 0x30, 0x4c, 0x95, 0xa8, 0xcf, 0x41, 0x6d, 0xc3, 0x72,
|
||||
0x06, 0xd9, 0x8f, 0x48, 0xf5, 0x6f, 0x95, 0xa1, 0x29, 0x2e, 0xef, 0xea, 0x0b, 0x50, 0x5d, 0x27,
|
||||
0x2f, 0x68, 0x45, 0xc4, 0xb5, 0xe1, 0x54, 0x45, 0x1e, 0xb1, 0x56, 0x08, 0x7e, 0x1c, 0xb2, 0xe9,
|
||||
0x37, 0xa3, 0x69, 0x72, 0x72, 0xd9, 0x1b, 0x50, 0x63, 0xef, 0xd5, 0x27, 0x97, 0xfc, 0xad, 0x16,
|
||||
0x34, 0xf8, 0x4b, 0x4c, 0xfd, 0x9b, 0x2d, 0x68, 0xf0, 0x37, 0xec, 0xe8, 0x36, 0x34, 0xfd, 0xbd,
|
||||
0xdd, 0x5d, 0xc3, 0x3b, 0xd0, 0xb2, 0x3f, 0x98, 0xa8, 0x3c, 0x79, 0xef, 0x6e, 0x72, 0x5e, 0x1c,
|
||||
0x0a, 0xa1, 0x6b, 0x50, 0xeb, 0x1b, 0xdb, 0x24, 0x75, 0x9c, 0x9b, 0x25, 0xbc, 0x6c, 0x6c, 0x13,
|
||||
0xcc, 0xd8, 0xd1, 0x5d, 0x68, 0x09, 0xb5, 0xf8, 0x22, 0x9e, 0x33, 0xba, 0xdc, 0x50, 0x99, 0x91,
|
||||
0x94, 0x7e, 0x1f, 0x9a, 0xa2, 0x32, 0xe8, 0x4e, 0xf4, 0x0e, 0x35, 0x19, 0x79, 0xce, 0x6c, 0x42,
|
||||
0xf4, 0xb8, 0x39, 0x7a, 0x91, 0xfa, 0x97, 0x15, 0xa8, 0xd1, 0xca, 0x7d, 0x6c, 0x24, 0x74, 0x1c,
|
||||
0xc0, 0x36, 0xfc, 0x60, 0x63, 0xcf, 0xb6, 0x89, 0x29, 0x5e, 0xd8, 0x49, 0x14, 0x74, 0x0e, 0x0e,
|
||||
0xf1, 0x94, 0xbf, 0xb3, 0xb9, 0xd7, 0xef, 0x93, 0xe8, 0x99, 0x68, 0x92, 0x8c, 0x16, 0xa1, 0xce,
|
||||
0xbe, 0xaa, 0x26, 0x56, 0x85, 0x6f, 0x17, 0xf6, 0x6c, 0x77, 0xc3, 0x72, 0x44, 0x6d, 0xb8, 0xa4,
|
||||
0xee, 0x42, 0x3b, 0xa2, 0x51, 0x27, 0x1c, 0x5a, 0x8e, 0x63, 0x39, 0x03, 0x61, 0xd1, 0x61, 0x92,
|
||||
0x4e, 0x3a, 0xf4, 0xaf, 0xa8, 0x6f, 0x1d, 0x8b, 0x14, 0xa5, 0x6f, 0x1b, 0x96, 0x2d, 0xaa, 0x58,
|
||||
0xc7, 0x22, 0x45, 0x91, 0xf6, 0xc4, 0xcb, 0xff, 0x1a, 0x6b, 0x60, 0x98, 0xd4, 0x3f, 0x2a, 0x47,
|
||||
0x8f, 0xb1, 0xb3, 0x1e, 0x67, 0xa6, 0x62, 0x49, 0x73, 0x72, 0x40, 0x9b, 0x4f, 0x08, 0x52, 0x88,
|
||||
0xfa, 0x28, 0x34, 0x5c, 0xc7, 0xb6, 0x1c, 0x22, 0x62, 0x47, 0x22, 0x95, 0xe8, 0xe3, 0x7a, 0xaa,
|
||||
0x8f, 0x45, 0xfe, 0xaa, 0x69, 0xd1, 0x2a, 0x36, 0xe2, 0x7c, 0x4e, 0x41, 0xef, 0x41, 0xd3, 0x24,
|
||||
0xfb, 0x56, 0x9f, 0xf8, 0x5a, 0x93, 0x99, 0xde, 0xc9, 0x91, 0x7d, 0xbb, 0xc2, 0x78, 0x71, 0x28,
|
||||
0xa3, 0x07, 0xd0, 0xe0, 0xa4, 0xa8, 0x49, 0x65, 0xa9, 0x49, 0x71, 0xa5, 0x2b, 0x23, 0x2a, 0x5d,
|
||||
0x2d, 0xa8, 0x74, 0x2d, 0x59, 0xe9, 0x79, 0x13, 0x20, 0x36, 0x37, 0x34, 0x05, 0xcd, 0xa7, 0xce,
|
||||
0x73, 0xc7, 0x7d, 0xe1, 0x74, 0x4a, 0x34, 0xf1, 0x78, 0x7b, 0x9b, 0x96, 0xd2, 0x29, 0xd3, 0x04,
|
||||
0xe5, 0xb3, 0x9c, 0x41, 0xa7, 0x82, 0x00, 0x1a, 0x34, 0x41, 0xcc, 0x4e, 0x95, 0xfe, 0xbf, 0xc7,
|
||||
0xf4, 0xd7, 0xa9, 0xa1, 0xd7, 0xe0, 0x95, 0x9e, 0xd3, 0x77, 0x77, 0x87, 0x46, 0x60, 0x6d, 0xd9,
|
||||
0xe4, 0x19, 0xf1, 0x7c, 0xcb, 0x75, 0x3a, 0x75, 0xfd, 0x3f, 0xca, 0xfc, 0xd4, 0x57, 0xbf, 0x0b,
|
||||
0xd3, 0xca, 0xa7, 0x28, 0x34, 0x68, 0xb2, 0x2f, 0x03, 0xc4, 0xeb, 0x6e, 0x91, 0x64, 0x56, 0xc2,
|
||||
0x9f, 0xc5, 0x8b, 0x25, 0x0b, 0x4f, 0xe9, 0xf7, 0x00, 0xa4, 0x0f, 0x50, 0x1c, 0x07, 0xd8, 0x3a,
|
||||
0x08, 0x88, 0xcf, 0x3f, 0x3e, 0x41, 0x21, 0x6a, 0x58, 0xa2, 0xc8, 0xf8, 0x15, 0x05, 0x5f, 0xbf,
|
||||
0x0e, 0x20, 0x7d, 0x7e, 0x82, 0xfa, 0x0f, 0x4d, 0x2d, 0x25, 0xc1, 0x92, 0x64, 0xbd, 0x2b, 0x5a,
|
||||
0x10, 0x7e, 0x68, 0x22, 0xac, 0x01, 0x8f, 0xd2, 0xc9, 0x35, 0x60, 0x14, 0x7d, 0x15, 0x20, 0xfe,
|
||||
0xd6, 0x82, 0xbe, 0x10, 0x0d, 0xd1, 0xef, 0x40, 0xcd, 0x34, 0x02, 0x43, 0x8c, 0x8e, 0xaf, 0x27,
|
||||
0x66, 0xa8, 0x58, 0x04, 0x33, 0x36, 0xfd, 0xb7, 0xcb, 0x30, 0x2d, 0x7f, 0x57, 0x42, 0x7f, 0x1f,
|
||||
0x6a, 0xec, 0xc3, 0x14, 0x77, 0x60, 0x5a, 0xfe, 0xb0, 0x44, 0xea, 0xbb, 0xbe, 0x1c, 0x4f, 0x16,
|
||||
0xc5, 0x8a, 0x80, 0xde, 0x8b, 0xaa, 0xf4, 0xb1, 0xa1, 0x2e, 0x41, 0x53, 0x7c, 0xa7, 0x42, 0x3f,
|
||||
0x0d, 0xed, 0xf8, 0xb3, 0x14, 0x74, 0x8c, 0xe0, 0xf4, 0x50, 0xcb, 0x22, 0xa9, 0xff, 0x63, 0x15,
|
||||
0xea, 0x4c, 0x9d, 0xfa, 0x37, 0x2a, 0xb2, 0x25, 0xea, 0xdf, 0x2f, 0xe7, 0xee, 0xf9, 0xae, 0x28,
|
||||
0x9f, 0x07, 0x98, 0x4d, 0x7d, 0x8e, 0x45, 0x7c, 0x85, 0x42, 0x1d, 0x40, 0xaf, 0x43, 0xd3, 0x21,
|
||||
0xc1, 0x0b, 0xd7, 0x7b, 0xce, 0x9c, 0x64, 0x36, 0xfd, 0x09, 0x16, 0x26, 0xb5, 0xce, 0x79, 0x70,
|
||||
0xc8, 0x8c, 0xae, 0x42, 0x9d, 0x78, 0x9e, 0xeb, 0x31, 0xd7, 0x99, 0x4d, 0x7d, 0xd8, 0x24, 0xfe,
|
||||
0xe2, 0xc5, 0x2a, 0xe5, 0xc2, 0x9c, 0x19, 0x5d, 0x85, 0x57, 0x7d, 0xee, 0x2d, 0x7c, 0xed, 0xe8,
|
||||
0x8b, 0xf7, 0xd3, 0x62, 0x54, 0xc9, 0xce, 0x9c, 0xff, 0x74, 0x38, 0x91, 0x4a, 0x0e, 0x56, 0x92,
|
||||
0x3d, 0xaf, 0x8c, 0xda, 0x50, 0x67, 0x05, 0x75, 0x2a, 0xb2, 0x7b, 0x56, 0xe7, 0xaf, 0x40, 0x53,
|
||||
0x54, 0x9d, 0xd2, 0x17, 0x79, 0x1d, 0x3b, 0x25, 0x34, 0x0d, 0xad, 0x4d, 0x62, 0x6f, 0xaf, 0xb9,
|
||||
0x7e, 0xd0, 0x29, 0xa3, 0x19, 0x68, 0x33, 0x9b, 0x7f, 0xec, 0xd8, 0x07, 0x9d, 0xca, 0xfc, 0x07,
|
||||
0xd0, 0x8e, 0x6a, 0x8e, 0x5a, 0x50, 0x5b, 0xdf, 0xb3, 0xed, 0x4e, 0x89, 0x2d, 0x35, 0x03, 0xd7,
|
||||
0x0b, 0x03, 0xcd, 0xab, 0x2f, 0xe9, 0xbc, 0xd1, 0x29, 0xe7, 0x79, 0x77, 0x05, 0x75, 0x60, 0x5a,
|
||||
0x14, 0xce, 0xeb, 0x56, 0xd5, 0xff, 0xbe, 0x0c, 0xed, 0xe8, 0x93, 0x1d, 0x74, 0x9d, 0x17, 0xea,
|
||||
0x32, 0xdf, 0xdf, 0x17, 0x12, 0x5a, 0xcd, 0xff, 0x02, 0x48, 0x42, 0xb3, 0x67, 0x60, 0x56, 0x0c,
|
||||
0xa1, 0x61, 0x27, 0xf3, 0x51, 0x30, 0x41, 0x9d, 0xbf, 0x19, 0xf5, 0x6e, 0x87, 0xb9, 0xd2, 0xb2,
|
||||
0xeb, 0x38, 0xa4, 0x1f, 0xb0, 0x3e, 0x3e, 0x04, 0x53, 0xeb, 0x6e, 0xb0, 0xe1, 0xfa, 0x3e, 0x6d,
|
||||
0x19, 0xef, 0xa9, 0x38, 0xbf, 0xa2, 0xff, 0x66, 0x19, 0x1a, 0xfc, 0xc3, 0x21, 0xfa, 0xaf, 0x96,
|
||||
0xa1, 0xc1, 0x3f, 0x16, 0x82, 0xce, 0x43, 0xc7, 0x73, 0x29, 0x50, 0xb8, 0x21, 0xe8, 0xad, 0x88,
|
||||
0x56, 0xa5, 0xe8, 0x74, 0x8f, 0xea, 0x4a, 0xda, 0x16, 0x53, 0xb8, 0x42, 0x43, 0x37, 0x01, 0xf8,
|
||||
0xc7, 0x48, 0x9e, 0x1c, 0x0c, 0x89, 0x30, 0xd3, 0xe4, 0x15, 0x31, 0xf1, 0xf9, 0x12, 0x76, 0x98,
|
||||
0x22, 0x71, 0xcf, 0x7f, 0x0d, 0x66, 0x30, 0xf1, 0x87, 0xae, 0xe3, 0x93, 0x1f, 0xd6, 0xc7, 0xc9,
|
||||
0x73, 0x3f, 0x33, 0x3e, 0xff, 0xad, 0x2a, 0xd4, 0xd9, 0xea, 0x50, 0xff, 0x83, 0x6a, 0xb4, 0x8e,
|
||||
0xcd, 0xb8, 0x3b, 0x18, 0xdf, 0xf0, 0x91, 0xbd, 0x56, 0x59, 0x57, 0xca, 0xc7, 0x44, 0x97, 0xe5,
|
||||
0x9b, 0x3d, 0xb2, 0xc7, 0xaa, 0x12, 0xca, 0x8d, 0x9e, 0xcf, 0x40, 0x6b, 0xe8, 0xb9, 0x03, 0x8f,
|
||||
0x2e, 0x60, 0x6b, 0x89, 0x4f, 0xc9, 0xa8, 0x62, 0x1b, 0x82, 0x0d, 0x47, 0x02, 0xfa, 0x3a, 0xb4,
|
||||
0x42, 0x6a, 0xce, 0x87, 0x0e, 0x10, 0xd4, 0x4c, 0x57, 0x4c, 0xc2, 0x55, 0xcc, 0xfe, 0xd3, 0x7e,
|
||||
0x11, 0x3d, 0x18, 0x6e, 0x3e, 0x45, 0x72, 0xfe, 0x8b, 0xe2, 0xe4, 0x75, 0x06, 0xda, 0x2b, 0x9e,
|
||||
0x3b, 0x64, 0x2f, 0xda, 0x3b, 0x25, 0xea, 0xdd, 0x5c, 0x8d, 0x9d, 0x32, 0xfd, 0xbf, 0xfa, 0x92,
|
||||
0xfd, 0xaf, 0x30, 0x67, 0x35, 0xf6, 0x09, 0x65, 0xeb, 0x54, 0x11, 0x82, 0x59, 0x4c, 0xd8, 0x69,
|
||||
0x93, 0x58, 0xfa, 0x74, 0x6a, 0x14, 0xe8, 0x91, 0x35, 0xe0, 0xdb, 0xb9, 0x4e, 0x7d, 0x7e, 0x31,
|
||||
0xbc, 0x61, 0x43, 0x9d, 0x97, 0x6f, 0x1f, 0xa7, 0xa0, 0x89, 0xf7, 0xd8, 0xfa, 0xab, 0x53, 0xa6,
|
||||
0x64, 0xba, 0xa8, 0xe7, 0xd0, 0xcb, 0x86, 0xd3, 0x27, 0x36, 0x9b, 0xb3, 0xa3, 0x51, 0xa4, 0xb6,
|
||||
0x34, 0xf7, 0x57, 0x1f, 0x1d, 0x2f, 0x7f, 0xfb, 0xa3, 0xe3, 0xe5, 0xef, 0x7e, 0x74, 0xbc, 0xfc,
|
||||
0xcb, 0xdf, 0x3b, 0x5e, 0xfa, 0xf6, 0xf7, 0x8e, 0x97, 0xfe, 0xe9, 0x7b, 0xc7, 0x4b, 0x1f, 0x56,
|
||||
0x86, 0x5b, 0x5b, 0x0d, 0x76, 0x35, 0xe2, 0xca, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x2a, 0x3c,
|
||||
0x5f, 0xfa, 0x5a, 0x5f, 0x00, 0x00,
|
||||
// 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,
|
||||
}
|
||||
|
||||
func (m *Event) Marshal() (dAtA []byte, err error) {
|
||||
|
|
|
@ -2417,6 +2417,35 @@ message Rpc {
|
|||
}
|
||||
}
|
||||
|
||||
message ListModifyDetailValues {
|
||||
message Request {
|
||||
repeated string objectIds = 1;
|
||||
repeated Operation operations = 2;
|
||||
|
||||
message Operation {
|
||||
string relationKey = 1;
|
||||
google.protobuf.Value add = 2;
|
||||
google.protobuf.Value set = 3;
|
||||
google.protobuf.Value remove = 4;
|
||||
}
|
||||
}
|
||||
|
||||
message Response {
|
||||
Error error = 1;
|
||||
|
||||
message Error {
|
||||
Code code = 1;
|
||||
string description = 2;
|
||||
|
||||
enum Code {
|
||||
NULL = 0;
|
||||
UNKNOWN_ERROR = 1;
|
||||
BAD_INPUT = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
message ApplyTemplate {
|
||||
message Request {
|
||||
string contextId = 1;
|
||||
|
|
|
@ -1088,6 +1088,7 @@ message Event {
|
|||
Syncing = 1;
|
||||
Error = 2;
|
||||
Offline = 3;
|
||||
NetworkNeedsUpdate = 4;
|
||||
}
|
||||
enum Network {
|
||||
Anytype = 0;
|
||||
|
|
|
@ -99,6 +99,7 @@ service ClientCommands {
|
|||
rpc ObjectListSetIsFavorite (anytype.Rpc.Object.ListSetIsFavorite.Request) returns (anytype.Rpc.Object.ListSetIsFavorite.Response);
|
||||
rpc ObjectListSetObjectType (anytype.Rpc.Object.ListSetObjectType.Request) returns (anytype.Rpc.Object.ListSetObjectType.Response);
|
||||
rpc ObjectListSetDetails (anytype.Rpc.Object.ListSetDetails.Request) returns (anytype.Rpc.Object.ListSetDetails.Response);
|
||||
rpc ObjectListModifyDetailValues (anytype.Rpc.Object.ListModifyDetailValues.Request) returns (anytype.Rpc.Object.ListModifyDetailValues.Response);
|
||||
rpc ObjectApplyTemplate (anytype.Rpc.Object.ApplyTemplate.Request) returns (anytype.Rpc.Object.ApplyTemplate.Response);
|
||||
// ObjectToSet creates new set from given object and removes object
|
||||
rpc ObjectToSet (anytype.Rpc.Object.ToSet.Request) returns (anytype.Rpc.Object.ToSet.Response);
|
||||
|
|
|
@ -26,314 +26,316 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
|
|||
func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) }
|
||||
|
||||
var fileDescriptor_93a29dc403579097 = []byte{
|
||||
// 4904 bytes of a gzipped FileDescriptorProto
|
||||
// 4931 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, 0xe8, 0x85, 0x65, 0x6f, 0xb9, 0x9b, 0xef, 0x6f,
|
||||
0x8f, 0xdb, 0xde, 0x99, 0xfd, 0x38, 0xf6, 0x90, 0x90, 0xc7, 0x1e, 0x7b, 0xcd, 0xd9, 0x1e, 0xe3,
|
||||
0x6e, 0xcf, 0x48, 0x2b, 0x21, 0x51, 0xae, 0x0e, 0xb7, 0x0b, 0x57, 0x57, 0xd6, 0x55, 0x65, 0xb7,
|
||||
0xa7, 0x0f, 0x81, 0x40, 0x20, 0x10, 0x08, 0xc4, 0x89, 0xaf, 0x17, 0x1e, 0x90, 0xf8, 0x6b, 0xe0,
|
||||
0xed, 0x1e, 0xef, 0x11, 0xed, 0xfe, 0x23, 0xa7, 0xca, 0xcc, 0xca, 0x8f, 0xa8, 0x8c, 0xac, 0xf2,
|
||||
0x3e, 0xcd, 0xa8, 0xe3, 0x17, 0x11, 0x99, 0x95, 0x91, 0x99, 0x91, 0x1f, 0x55, 0x8e, 0x6e, 0x16,
|
||||
0x67, 0x1b, 0x45, 0xc9, 0x38, 0xab, 0x36, 0x2a, 0x28, 0x97, 0x69, 0x02, 0xcd, 0xbf, 0x23, 0xf1,
|
||||
0xf3, 0xf0, 0xdd, 0x38, 0x5f, 0xf1, 0x55, 0x01, 0x1f, 0x7d, 0x68, 0xc8, 0x84, 0xcd, 0xe7, 0x71,
|
||||
0x3e, 0xad, 0x24, 0xf2, 0xd1, 0x07, 0x46, 0x02, 0x4b, 0xc8, 0xb9, 0xfa, 0xfd, 0xd9, 0xff, 0xfd,
|
||||
0x62, 0x10, 0xbd, 0xb7, 0x9d, 0xa5, 0x90, 0xf3, 0x6d, 0xa5, 0x31, 0xfc, 0x2a, 0xfa, 0xee, 0x56,
|
||||
0x51, 0xec, 0x01, 0x7f, 0x0d, 0x65, 0x95, 0xb2, 0x7c, 0x78, 0x77, 0xa4, 0x1c, 0x8c, 0x4e, 0x8a,
|
||||
0x64, 0xb4, 0x55, 0x14, 0x23, 0x23, 0x1c, 0x9d, 0xc0, 0x4f, 0x16, 0x50, 0xf1, 0x8f, 0xee, 0x85,
|
||||
0xa1, 0xaa, 0x60, 0x79, 0x05, 0xc3, 0xf3, 0xe8, 0xb7, 0xb6, 0x8a, 0x62, 0x0c, 0x7c, 0x07, 0xea,
|
||||
0x0a, 0x8c, 0x79, 0xcc, 0x61, 0xf8, 0xb0, 0xa5, 0xea, 0x02, 0xda, 0xc7, 0xa3, 0x6e, 0x50, 0xf9,
|
||||
0x99, 0x44, 0xdf, 0xa9, 0xfd, 0x5c, 0x2c, 0xf8, 0x94, 0x5d, 0xe5, 0xc3, 0xdb, 0x6d, 0x45, 0x25,
|
||||
0xd2, 0xb6, 0xef, 0x84, 0x10, 0x65, 0xf5, 0x4d, 0xf4, 0xeb, 0x6f, 0xe2, 0x2c, 0x03, 0xbe, 0x5d,
|
||||
0x42, 0x5d, 0x70, 0x57, 0x47, 0x8a, 0x46, 0x52, 0xa6, 0xed, 0xde, 0x0d, 0x32, 0xca, 0xf0, 0x57,
|
||||
0xd1, 0x77, 0xa5, 0xe4, 0x04, 0x12, 0xb6, 0x84, 0x72, 0xe8, 0xd5, 0x52, 0x42, 0xe2, 0x91, 0xb7,
|
||||
0x20, 0x6c, 0x7b, 0x9b, 0xe5, 0x4b, 0x28, 0xb9, 0xdf, 0xb6, 0x12, 0x86, 0x6d, 0x1b, 0x48, 0xd9,
|
||||
0xfe, 0x87, 0x41, 0xf4, 0xfd, 0xad, 0x24, 0x61, 0x8b, 0x9c, 0x1f, 0xb0, 0x24, 0xce, 0x0e, 0xd2,
|
||||
0xfc, 0xf2, 0x08, 0xae, 0xb6, 0x2f, 0x6a, 0x3e, 0x9f, 0xc1, 0xf0, 0xb9, 0xfb, 0x54, 0x25, 0x3a,
|
||||
0xd2, 0xec, 0xc8, 0x86, 0xb5, 0xef, 0x4f, 0xae, 0xa7, 0xa4, 0xca, 0xf2, 0x2f, 0x83, 0xe8, 0x06,
|
||||
0x2e, 0xcb, 0x98, 0x65, 0x4b, 0x30, 0xa5, 0xf9, 0xb4, 0xc3, 0xb0, 0x8b, 0xeb, 0xf2, 0x7c, 0x76,
|
||||
0x5d, 0x35, 0x55, 0xa2, 0x2c, 0x7a, 0xdf, 0x0e, 0x97, 0x31, 0x54, 0xa2, 0x3b, 0x3d, 0xa6, 0x23,
|
||||
0x42, 0x21, 0xda, 0xf3, 0x93, 0x3e, 0xa8, 0xf2, 0x96, 0x46, 0x43, 0xe5, 0x2d, 0x63, 0x95, 0x76,
|
||||
0xf6, 0xc8, 0x6b, 0xc1, 0x22, 0xb4, 0xaf, 0xc7, 0x3d, 0x48, 0xe5, 0xea, 0x4f, 0xa3, 0xdf, 0x78,
|
||||
0xc3, 0xca, 0xcb, 0xaa, 0x88, 0x13, 0x50, 0x5d, 0xe1, 0xbe, 0xab, 0xdd, 0x48, 0x71, 0x6f, 0x78,
|
||||
0xd0, 0x85, 0x59, 0x41, 0xdb, 0x08, 0x5f, 0x15, 0x80, 0xc7, 0x20, 0xa3, 0x58, 0x0b, 0xa9, 0xa0,
|
||||
0xc5, 0x90, 0xb2, 0x7d, 0x19, 0x0d, 0x8d, 0xed, 0xb3, 0x3f, 0x83, 0x84, 0x6f, 0x4d, 0xa7, 0xb8,
|
||||
0x55, 0x8c, 0xae, 0x20, 0x46, 0x5b, 0xd3, 0x29, 0xd5, 0x2a, 0x7e, 0x54, 0x39, 0xbb, 0x8a, 0x3e,
|
||||
0x40, 0xce, 0x0e, 0xd2, 0x4a, 0x38, 0x5c, 0x0f, 0x5b, 0x51, 0x98, 0x76, 0x3a, 0xea, 0x8b, 0x2b,
|
||||
0xc7, 0x7f, 0x35, 0x88, 0xbe, 0xe7, 0xf1, 0x7c, 0x02, 0x73, 0xb6, 0x84, 0xe1, 0x66, 0xb7, 0x35,
|
||||
0x49, 0x6a, 0xff, 0x1f, 0x5f, 0x43, 0xc3, 0x13, 0x26, 0x63, 0xc8, 0x20, 0xe1, 0x64, 0x98, 0x48,
|
||||
0x71, 0x67, 0x98, 0x68, 0xcc, 0xea, 0x61, 0x8d, 0x70, 0x0f, 0xf8, 0xf6, 0xa2, 0x2c, 0x21, 0xe7,
|
||||
0x64, 0x5b, 0x1a, 0xa4, 0xb3, 0x2d, 0x1d, 0xd4, 0x53, 0x9f, 0x3d, 0xe0, 0x5b, 0x59, 0x46, 0xd6,
|
||||
0x47, 0x8a, 0x3b, 0xeb, 0xa3, 0x31, 0xe5, 0x21, 0x89, 0x7e, 0xd3, 0x7a, 0x62, 0x7c, 0x3f, 0x3f,
|
||||
0x67, 0x43, 0xfa, 0x59, 0x08, 0xb9, 0xf6, 0xf1, 0xb0, 0x93, 0xf3, 0x54, 0xe3, 0xe5, 0xdb, 0x82,
|
||||
0x95, 0x74, 0xb3, 0x48, 0x71, 0x67, 0x35, 0x34, 0xa6, 0x3c, 0xfc, 0x49, 0xf4, 0x9e, 0x1a, 0x25,
|
||||
0x9b, 0xf9, 0xec, 0x9e, 0x77, 0x08, 0xc5, 0x13, 0xda, 0xfd, 0x0e, 0xca, 0x0c, 0x0e, 0x4a, 0xa6,
|
||||
0x06, 0x9f, 0xbb, 0x5e, 0x3d, 0x34, 0xf4, 0xdc, 0x0b, 0x43, 0x2d, 0xdb, 0x3b, 0x90, 0x01, 0x69,
|
||||
0x5b, 0x0a, 0x3b, 0x6c, 0x6b, 0x48, 0xd9, 0x2e, 0xa3, 0xdf, 0xd1, 0x8f, 0xa5, 0x9e, 0x47, 0x85,
|
||||
0xbc, 0x1e, 0xa4, 0xd7, 0x88, 0x7a, 0xdb, 0x90, 0xf6, 0xf5, 0xb4, 0x1f, 0xdc, 0xaa, 0x8f, 0xea,
|
||||
0x81, 0xfe, 0xfa, 0xa0, 0xfe, 0x77, 0x2f, 0x0c, 0x29, 0xdb, 0xff, 0x38, 0x88, 0x7e, 0xa0, 0x64,
|
||||
0x2f, 0xf3, 0xf8, 0x2c, 0x03, 0x31, 0x25, 0x1e, 0x01, 0xbf, 0x62, 0xe5, 0xe5, 0x78, 0x95, 0x27,
|
||||
0xc4, 0xf4, 0xef, 0x87, 0x3b, 0xa6, 0x7f, 0x52, 0xc9, 0xca, 0xf8, 0x54, 0x45, 0x39, 0x2b, 0x70,
|
||||
0xc6, 0xd7, 0xd4, 0x80, 0xb3, 0x82, 0xca, 0xf8, 0x5c, 0xa4, 0x65, 0xf5, 0xb0, 0x1e, 0x36, 0xfd,
|
||||
0x56, 0x0f, 0xed, 0x71, 0xf2, 0x4e, 0x08, 0x31, 0xc3, 0x56, 0x13, 0xc0, 0x2c, 0x3f, 0x4f, 0x67,
|
||||
0xa7, 0xc5, 0xb4, 0x0e, 0xe3, 0xc7, 0xfe, 0x08, 0xb5, 0x10, 0x62, 0xd8, 0x22, 0x50, 0xe5, 0xed,
|
||||
0x9f, 0x4d, 0x62, 0xa4, 0xba, 0xd2, 0x6e, 0xc9, 0xe6, 0x07, 0x30, 0x8b, 0x93, 0x95, 0xea, 0xff,
|
||||
0x9f, 0x84, 0x3a, 0x1e, 0xa6, 0x75, 0x21, 0x3e, 0xbd, 0xa6, 0x96, 0x2a, 0xcf, 0x7f, 0x0f, 0xa2,
|
||||
0x7b, 0x4d, 0xf5, 0x2f, 0xe2, 0x7c, 0x06, 0xaa, 0x3d, 0x65, 0xe9, 0xb7, 0xf2, 0xe9, 0x09, 0x54,
|
||||
0x3c, 0x2e, 0xf9, 0xf0, 0x0b, 0x7f, 0x25, 0x43, 0x3a, 0xba, 0x6c, 0x3f, 0xfa, 0x56, 0xba, 0xa6,
|
||||
0xd5, 0xc7, 0xf5, 0xc0, 0xa6, 0x86, 0x00, 0xb7, 0xd5, 0x85, 0x04, 0x0f, 0x00, 0x77, 0x42, 0x88,
|
||||
0x69, 0x75, 0x21, 0xd8, 0xcf, 0x97, 0x29, 0x87, 0x3d, 0xc8, 0xa1, 0x6c, 0xb7, 0xba, 0x54, 0x75,
|
||||
0x11, 0xa2, 0xd5, 0x09, 0xd4, 0x0c, 0x36, 0x8e, 0x37, 0x3d, 0x39, 0xae, 0x05, 0x8c, 0xb4, 0xa6,
|
||||
0xc7, 0xa7, 0xfd, 0x60, 0xb3, 0xba, 0xb3, 0x7c, 0x9e, 0xc0, 0x92, 0x5d, 0xe2, 0xd5, 0x9d, 0x6d,
|
||||
0x42, 0x02, 0xc4, 0xea, 0xce, 0x0b, 0x9a, 0x19, 0xcc, 0xf2, 0xf3, 0x3a, 0x85, 0x2b, 0x34, 0x83,
|
||||
0xd9, 0xca, 0xb5, 0x98, 0x98, 0xc1, 0x3c, 0x98, 0xf2, 0x70, 0x14, 0xfd, 0x9a, 0x10, 0xfe, 0x11,
|
||||
0x4b, 0xf3, 0xe1, 0x4d, 0x8f, 0x52, 0x2d, 0xd0, 0x56, 0x6f, 0xd1, 0x00, 0x2a, 0x71, 0xfd, 0xeb,
|
||||
0x76, 0x9c, 0x27, 0x90, 0x79, 0x4b, 0x6c, 0xc4, 0xc1, 0x12, 0x3b, 0x98, 0x49, 0x1d, 0x84, 0xb0,
|
||||
0x1e, 0xbf, 0xc6, 0x17, 0x71, 0x99, 0xe6, 0xb3, 0xa1, 0x4f, 0xd7, 0x92, 0x13, 0xa9, 0x83, 0x8f,
|
||||
0x43, 0x21, 0xac, 0x14, 0xb7, 0x8a, 0xa2, 0xac, 0x87, 0x45, 0x5f, 0x08, 0xbb, 0x48, 0x30, 0x84,
|
||||
0x5b, 0xa8, 0xdf, 0xdb, 0x0e, 0x24, 0x59, 0x9a, 0x07, 0xbd, 0x29, 0xa4, 0x8f, 0x37, 0x83, 0xa2,
|
||||
0xe0, 0x3d, 0x80, 0x78, 0x09, 0x4d, 0xcd, 0x7c, 0x4f, 0xc6, 0x06, 0x82, 0xc1, 0x8b, 0x40, 0xb3,
|
||||
0x4e, 0x13, 0xe2, 0xc3, 0xf8, 0x12, 0xea, 0x07, 0x0c, 0xf5, 0xbc, 0x36, 0xf4, 0xe9, 0x3b, 0x04,
|
||||
0xb1, 0x4e, 0xf3, 0x93, 0xca, 0xd5, 0x22, 0xfa, 0x40, 0xc8, 0x8f, 0xe3, 0x92, 0xa7, 0x49, 0x5a,
|
||||
0xc4, 0x79, 0x93, 0xff, 0xfb, 0xfa, 0x75, 0x8b, 0xd2, 0x2e, 0xd7, 0x7b, 0xd2, 0xca, 0xed, 0x7f,
|
||||
0x0e, 0xa2, 0xdb, 0xd8, 0xef, 0x31, 0x94, 0xf3, 0x54, 0x2c, 0x23, 0x2b, 0x39, 0x08, 0x0f, 0x3f,
|
||||
0x0f, 0x1b, 0x6d, 0x29, 0xe8, 0xd2, 0xfc, 0xf0, 0xfa, 0x8a, 0xaa, 0x60, 0x7f, 0x1c, 0x45, 0x72,
|
||||
0xb9, 0x22, 0x96, 0x94, 0x6e, 0xaf, 0x55, 0xeb, 0x18, 0x67, 0x3d, 0x79, 0x3b, 0x40, 0x98, 0xa9,
|
||||
0x42, 0xfe, 0x2e, 0x56, 0xca, 0x43, 0xaf, 0x86, 0x10, 0x11, 0x53, 0x05, 0x42, 0x70, 0x41, 0xc7,
|
||||
0x17, 0xec, 0xca, 0x5f, 0xd0, 0x5a, 0x12, 0x2e, 0xa8, 0x22, 0xcc, 0xde, 0x95, 0x2a, 0xa8, 0x6f,
|
||||
0xef, 0xaa, 0x29, 0x46, 0x68, 0xef, 0x0a, 0x33, 0xca, 0x30, 0x8b, 0x7e, 0xdb, 0x36, 0xfc, 0x82,
|
||||
0xb1, 0xcb, 0x79, 0x5c, 0x5e, 0x0e, 0x9f, 0xd0, 0xca, 0x0d, 0xa3, 0x1d, 0xad, 0xf5, 0x62, 0xcd,
|
||||
0xb0, 0x60, 0x3b, 0xac, 0x13, 0x8d, 0xd3, 0x32, 0x43, 0xc3, 0x82, 0x63, 0x43, 0x21, 0xc4, 0xb0,
|
||||
0x40, 0xa0, 0x66, 0xe4, 0xb6, 0xbd, 0x8d, 0x01, 0xaf, 0x96, 0x1c, 0xf5, 0x31, 0x50, 0xab, 0x25,
|
||||
0x0f, 0x86, 0x43, 0x68, 0xaf, 0x8c, 0x8b, 0x0b, 0x7f, 0x08, 0x09, 0x51, 0x38, 0x84, 0x1a, 0x04,
|
||||
0xb7, 0xf7, 0x18, 0xe2, 0x32, 0xb9, 0xf0, 0xb7, 0xb7, 0x94, 0x85, 0xdb, 0x5b, 0x33, 0xb8, 0xbd,
|
||||
0xa5, 0xe0, 0x4d, 0xca, 0x2f, 0x0e, 0x81, 0xc7, 0xfe, 0xf6, 0x76, 0x99, 0x70, 0x7b, 0xb7, 0x58,
|
||||
0x93, 0xc9, 0xd8, 0x0e, 0xc7, 0x8b, 0xb3, 0x2a, 0x29, 0xd3, 0x33, 0x18, 0x06, 0xac, 0x68, 0x88,
|
||||
0xc8, 0x64, 0x48, 0xd8, 0x0c, 0xd2, 0xca, 0x67, 0x23, 0xdb, 0x9f, 0x56, 0x68, 0x90, 0x6e, 0x6c,
|
||||
0x58, 0x04, 0x31, 0x48, 0xfb, 0x49, 0x5c, 0xbd, 0xbd, 0x92, 0x2d, 0x8a, 0xaa, 0xa3, 0x7a, 0x08,
|
||||
0x0a, 0x57, 0xaf, 0x0d, 0x2b, 0x9f, 0x6f, 0xa3, 0xdf, 0xb5, 0x1f, 0xe9, 0x69, 0x5e, 0x69, 0xaf,
|
||||
0xeb, 0xf4, 0x73, 0xb2, 0x30, 0x62, 0x5b, 0x2a, 0x80, 0x9b, 0x34, 0xa5, 0xf1, 0xcc, 0x77, 0x80,
|
||||
0xc7, 0x69, 0x56, 0x0d, 0x1f, 0xf8, 0x6d, 0x34, 0x72, 0x22, 0x4d, 0xf1, 0x71, 0xb8, 0xcf, 0xee,
|
||||
0x2c, 0x8a, 0x2c, 0x4d, 0xda, 0xfb, 0x93, 0x4a, 0x57, 0x8b, 0xc3, 0x7d, 0xd6, 0xc6, 0xf0, 0x18,
|
||||
0x34, 0x06, 0x2e, 0xff, 0x33, 0x59, 0x15, 0xe0, 0x1f, 0x83, 0x1c, 0x24, 0x3c, 0x06, 0x61, 0x14,
|
||||
0xd7, 0x67, 0x0c, 0xfc, 0x20, 0x5e, 0xb1, 0x05, 0x31, 0x06, 0x69, 0x71, 0xb8, 0x3e, 0x36, 0x66,
|
||||
0x32, 0x05, 0xed, 0x61, 0x3f, 0xe7, 0x50, 0xe6, 0x71, 0xb6, 0x9b, 0xc5, 0xb3, 0x6a, 0x48, 0xf4,
|
||||
0x1b, 0x97, 0x22, 0x32, 0x05, 0x9a, 0xf6, 0x3c, 0xc6, 0xfd, 0x6a, 0x37, 0x5e, 0xb2, 0x32, 0xe5,
|
||||
0xf4, 0x63, 0x34, 0x48, 0xe7, 0x63, 0x74, 0x50, 0xaf, 0xb7, 0xad, 0x32, 0xb9, 0x48, 0x97, 0x30,
|
||||
0x0d, 0x78, 0x6b, 0x90, 0x1e, 0xde, 0x2c, 0xd4, 0xd3, 0x68, 0x63, 0xb6, 0x28, 0x13, 0x20, 0x1b,
|
||||
0x4d, 0x8a, 0x3b, 0x1b, 0x4d, 0x63, 0xca, 0xc3, 0xdf, 0x0e, 0xa2, 0xdf, 0x93, 0x52, 0x7b, 0xd3,
|
||||
0x70, 0x27, 0xae, 0x2e, 0xce, 0x58, 0x5c, 0x4e, 0x87, 0x1f, 0xfb, 0xec, 0x78, 0x51, 0xed, 0xfa,
|
||||
0xd9, 0x75, 0x54, 0xf0, 0x63, 0x3d, 0x48, 0x2b, 0xab, 0xc7, 0x79, 0x1f, 0xab, 0x83, 0x84, 0x1f,
|
||||
0x2b, 0x46, 0xf1, 0x00, 0x22, 0xe4, 0x72, 0x81, 0xfe, 0x80, 0xd4, 0x77, 0x57, 0xe9, 0x0f, 0x3b,
|
||||
0x39, 0x3c, 0x3e, 0xd6, 0x42, 0x37, 0x5a, 0xd6, 0x29, 0x1b, 0xfe, 0x88, 0x19, 0xf5, 0xc5, 0x49,
|
||||
0xcf, 0xba, 0x57, 0x84, 0x3d, 0xb7, 0x7a, 0xc6, 0xa8, 0x2f, 0x4e, 0x78, 0xb6, 0x86, 0xb5, 0x90,
|
||||
0x67, 0xcf, 0xd0, 0x36, 0xea, 0x8b, 0xe3, 0x8c, 0x42, 0x31, 0xcd, 0xbc, 0xf0, 0x24, 0x60, 0x07,
|
||||
0xcf, 0x0d, 0x6b, 0xbd, 0x58, 0x1c, 0xb1, 0x5b, 0x45, 0x91, 0xad, 0x26, 0x30, 0x2f, 0x32, 0x32,
|
||||
0x62, 0x1d, 0x24, 0x1c, 0xb1, 0x18, 0xc5, 0xf9, 0xdd, 0x84, 0xd5, 0xd9, 0xa3, 0x37, 0xbf, 0x13,
|
||||
0xa2, 0x70, 0x7e, 0xd7, 0x20, 0x38, 0x43, 0x99, 0xb0, 0x6d, 0x96, 0x65, 0x90, 0xf0, 0xf6, 0x71,
|
||||
0x9f, 0xd6, 0x34, 0x44, 0x38, 0x43, 0x41, 0xa4, 0x59, 0x19, 0x37, 0xab, 0x91, 0xb8, 0x84, 0x17,
|
||||
0xab, 0x83, 0x34, 0xbf, 0x1c, 0xfa, 0x27, 0x63, 0x03, 0x10, 0x2b, 0x63, 0x2f, 0x88, 0x57, 0x3d,
|
||||
0xa7, 0xf9, 0x94, 0xf9, 0x57, 0x3d, 0xb5, 0x24, 0xbc, 0xea, 0x51, 0x04, 0x36, 0x79, 0x02, 0x94,
|
||||
0xc9, 0x5a, 0x12, 0x36, 0xa9, 0x08, 0xdf, 0x00, 0xa4, 0xf6, 0x4f, 0xc9, 0x01, 0x08, 0xed, 0x98,
|
||||
0x3e, 0xec, 0xe4, 0x70, 0x84, 0x36, 0xcb, 0x9f, 0x5d, 0xe0, 0xc9, 0x85, 0x3f, 0x42, 0x1d, 0x24,
|
||||
0x1c, 0xa1, 0x18, 0xc5, 0x55, 0x9a, 0x30, 0xbd, 0x7c, 0x7b, 0xe0, 0x8f, 0x8f, 0xd6, 0xd2, 0xed,
|
||||
0x61, 0x27, 0x87, 0x17, 0x24, 0xfb, 0x73, 0xf1, 0xcc, 0xbc, 0x41, 0x2e, 0x65, 0xe1, 0x05, 0x89,
|
||||
0x66, 0x70, 0xe9, 0xa5, 0xa0, 0x7e, 0x9c, 0xfe, 0xd2, 0x1b, 0x79, 0xb8, 0xf4, 0x0e, 0xa7, 0x9c,
|
||||
0xfc, 0xfb, 0x20, 0xba, 0x69, 0x7b, 0x39, 0x62, 0x75, 0x1f, 0x79, 0x1d, 0x67, 0xe9, 0x34, 0xe6,
|
||||
0x30, 0x61, 0x97, 0x90, 0xa3, 0x1d, 0x0d, 0xb7, 0xb4, 0x92, 0x1f, 0x39, 0x0a, 0xc4, 0x8e, 0x46,
|
||||
0x2f, 0x45, 0x1c, 0x27, 0x92, 0x3e, 0xad, 0x60, 0x3b, 0xae, 0x88, 0x91, 0xcc, 0x41, 0xc2, 0x71,
|
||||
0x82, 0x51, 0x9c, 0x25, 0x4a, 0xf9, 0xcb, 0xb7, 0x05, 0x94, 0x29, 0xe4, 0x09, 0xf8, 0xb3, 0x44,
|
||||
0x4c, 0x85, 0xb3, 0x44, 0x0f, 0xdd, 0x5a, 0xf0, 0xeb, 0xc1, 0xa9, 0x7d, 0x62, 0x8f, 0x89, 0xc0,
|
||||
0x89, 0x3d, 0x81, 0xe2, 0x4a, 0x1a, 0xc0, 0xbb, 0x69, 0xd6, 0xb2, 0x12, 0xdc, 0x34, 0xa3, 0xe9,
|
||||
0xd6, 0x36, 0x8a, 0x66, 0xc6, 0x75, 0x37, 0xe9, 0x28, 0xfa, 0xd8, 0xee, 0x2e, 0x6b, 0xbd, 0x58,
|
||||
0xff, 0xbe, 0xcd, 0x09, 0x64, 0xb1, 0x98, 0x42, 0x02, 0x9b, 0x23, 0x0d, 0xd3, 0x67, 0xdf, 0xc6,
|
||||
0x62, 0x95, 0xc3, 0xbf, 0x1e, 0x44, 0x1f, 0xf9, 0x3c, 0xbe, 0x2a, 0x84, 0xdf, 0xcd, 0x6e, 0x5b,
|
||||
0x92, 0x24, 0xae, 0x24, 0x84, 0x35, 0x54, 0x19, 0xfe, 0x3c, 0xfa, 0xb0, 0x11, 0x99, 0x1b, 0x0b,
|
||||
0xaa, 0x00, 0x6e, 0xda, 0xa2, 0xcb, 0x8f, 0x39, 0xed, 0x7e, 0xa3, 0x37, 0x6f, 0x56, 0x04, 0x6e,
|
||||
0xb9, 0x2a, 0xb4, 0x22, 0xd0, 0x36, 0x94, 0x98, 0x58, 0x11, 0x78, 0x30, 0x3c, 0x53, 0x37, 0x48,
|
||||
0xdd, 0x4f, 0x7c, 0x63, 0x9c, 0x36, 0x61, 0xf7, 0x92, 0x47, 0xdd, 0x20, 0x8e, 0x9d, 0x46, 0xac,
|
||||
0x12, 0xf1, 0x27, 0x21, 0x0b, 0x28, 0x19, 0x5f, 0xeb, 0xc5, 0x2a, 0x87, 0x7f, 0x19, 0x7d, 0xaf,
|
||||
0x55, 0xb1, 0x5d, 0x88, 0xf9, 0xa2, 0x84, 0xe9, 0x70, 0xa3, 0xa3, 0xdc, 0x0d, 0xa8, 0x5d, 0x6f,
|
||||
0xf6, 0x57, 0x50, 0xfe, 0xff, 0x7e, 0x10, 0x7d, 0xdf, 0xe5, 0x64, 0x13, 0xeb, 0x32, 0x3c, 0x0b,
|
||||
0x99, 0x74, 0x59, 0x5d, 0x8c, 0xe7, 0xd7, 0xd2, 0x69, 0x2d, 0xfa, 0xec, 0x40, 0xde, 0x5a, 0xc6,
|
||||
0x69, 0x26, 0x0e, 0x12, 0x3e, 0x0e, 0x19, 0x75, 0xd0, 0xe0, 0xa2, 0x8f, 0x54, 0x69, 0x8d, 0x92,
|
||||
0xa2, 0xbf, 0x59, 0x8b, 0x85, 0xa7, 0x74, 0xaf, 0xf4, 0xac, 0x15, 0xd6, 0x7b, 0xd2, 0xca, 0x2d,
|
||||
0x6f, 0x36, 0xcb, 0xea, 0x9f, 0xed, 0x20, 0xf7, 0x79, 0x55, 0xaa, 0x9e, 0x48, 0x5f, 0xef, 0x49,
|
||||
0x2b, 0xaf, 0x7f, 0x11, 0x7d, 0xd8, 0xf6, 0xaa, 0x26, 0x85, 0x8d, 0x4e, 0x53, 0x68, 0x5e, 0xd8,
|
||||
0xec, 0xaf, 0x60, 0x52, 0xfd, 0x2f, 0xd3, 0x8a, 0xb3, 0x72, 0x35, 0xbe, 0x60, 0x57, 0xcd, 0xad,
|
||||
0x5c, 0xb7, 0xb7, 0x2a, 0x60, 0x64, 0x11, 0x44, 0xaa, 0xef, 0x27, 0x5b, 0xae, 0xcc, 0xed, 0xdd,
|
||||
0x8a, 0x70, 0x65, 0x11, 0x1d, 0xae, 0x5c, 0xd2, 0x8c, 0x55, 0x4d, 0xad, 0xcc, 0x55, 0xe3, 0x87,
|
||||
0xfe, 0xa2, 0xb6, 0xaf, 0x1b, 0x3f, 0xea, 0x06, 0x4d, 0xf6, 0xa0, 0xc4, 0x3b, 0xe9, 0xf9, 0xb9,
|
||||
0xae, 0x93, 0xbf, 0xa4, 0x36, 0x42, 0x64, 0x0f, 0x04, 0x6a, 0x92, 0xd1, 0xdd, 0x34, 0x03, 0x71,
|
||||
0x2a, 0xf5, 0xea, 0xfc, 0x3c, 0x63, 0xf1, 0x14, 0x25, 0xa3, 0xb5, 0x78, 0x64, 0xcb, 0x89, 0x64,
|
||||
0xd4, 0xc7, 0x99, 0x4b, 0x3d, 0xb5, 0xf4, 0x04, 0x12, 0x96, 0x27, 0x69, 0x86, 0x2f, 0x29, 0x09,
|
||||
0x4d, 0x2d, 0x24, 0x2e, 0xf5, 0xb4, 0x20, 0x33, 0x49, 0xd5, 0xa2, 0xba, 0xdb, 0x37, 0xe5, 0xbf,
|
||||
0xdf, 0x56, 0xb4, 0xc4, 0xc4, 0x24, 0xe5, 0xc1, 0xcc, 0x9a, 0xac, 0x16, 0x9e, 0x16, 0xc2, 0xf8,
|
||||
0xad, 0xb6, 0x96, 0x94, 0x10, 0x6b, 0x32, 0x97, 0x30, 0x6b, 0x8b, 0xfa, 0xf7, 0x1d, 0x76, 0x95,
|
||||
0x0b, 0xa3, 0x77, 0xda, 0x2a, 0x8d, 0x8c, 0x58, 0x5b, 0x60, 0x46, 0x19, 0xfe, 0x71, 0xf4, 0xab,
|
||||
0xc2, 0x70, 0xc9, 0x8a, 0xe1, 0x0d, 0x8f, 0x42, 0x69, 0xdd, 0x27, 0xba, 0x49, 0xca, 0xcd, 0xb5,
|
||||
0x38, 0x1d, 0x1b, 0xa7, 0x55, 0x3c, 0x83, 0xe1, 0x3d, 0xa2, 0xc5, 0x85, 0x94, 0xb8, 0x16, 0xd7,
|
||||
0xa6, 0xdc, 0xa8, 0x38, 0x62, 0x53, 0x65, 0xdd, 0x53, 0x43, 0x2d, 0x0c, 0x45, 0x85, 0x0d, 0x99,
|
||||
0x43, 0x8a, 0xa3, 0x78, 0x99, 0xce, 0xf4, 0x84, 0x23, 0xc7, 0xad, 0x0a, 0x1d, 0x52, 0x18, 0x66,
|
||||
0x64, 0x41, 0xc4, 0x21, 0x05, 0x09, 0x2b, 0x9f, 0xff, 0x36, 0x88, 0x6e, 0x19, 0x66, 0xaf, 0xd9,
|
||||
0x3b, 0xda, 0xcf, 0xcf, 0xd9, 0x9b, 0x94, 0x5f, 0x1c, 0xa4, 0xf9, 0x65, 0x35, 0xfc, 0x8c, 0x32,
|
||||
0xe9, 0xe7, 0x75, 0x51, 0x3e, 0xbf, 0xb6, 0x9e, 0xc9, 0x20, 0x9b, 0x2d, 0x1e, 0x73, 0x62, 0x28,
|
||||
0x35, 0x50, 0x06, 0xa9, 0x77, 0x82, 0x30, 0x47, 0x64, 0x90, 0x21, 0xde, 0x34, 0xb1, 0x76, 0x9e,
|
||||
0xb1, 0x1c, 0x37, 0xb1, 0xb1, 0x50, 0x0b, 0x89, 0x26, 0x6e, 0x41, 0x66, 0x3c, 0x6e, 0x44, 0x72,
|
||||
0x37, 0x62, 0x2b, 0xcb, 0xd0, 0x78, 0xac, 0x55, 0x35, 0x40, 0x8c, 0xc7, 0x5e, 0x50, 0xf9, 0x39,
|
||||
0x89, 0xbe, 0x53, 0x3f, 0xd2, 0xe3, 0x12, 0x96, 0x29, 0xe0, 0xc3, 0x6d, 0x4b, 0x42, 0xf4, 0x7f,
|
||||
0x97, 0x30, 0x3d, 0xeb, 0x34, 0xaf, 0x8a, 0x2c, 0xae, 0x2e, 0xd4, 0x71, 0xa7, 0x5b, 0xe7, 0x46,
|
||||
0x88, 0x0f, 0x3c, 0xef, 0x77, 0x50, 0x66, 0x50, 0x6f, 0x64, 0x7a, 0x88, 0x79, 0xe0, 0x57, 0x6d,
|
||||
0x0d, 0x33, 0x0f, 0x3b, 0x39, 0xb3, 0xff, 0xba, 0x17, 0x67, 0x19, 0x94, 0xab, 0x46, 0x76, 0x18,
|
||||
0xe7, 0xe9, 0x39, 0x54, 0x1c, 0xed, 0xbf, 0x2a, 0x6a, 0x84, 0x31, 0x62, 0xff, 0x35, 0x80, 0x9b,
|
||||
0x6c, 0x1e, 0x79, 0xde, 0xcf, 0xa7, 0xf0, 0x16, 0x65, 0xf3, 0xd8, 0x8e, 0x60, 0x88, 0x6c, 0x9e,
|
||||
0x62, 0xcd, 0x8e, 0xe8, 0x8b, 0x8c, 0x25, 0x97, 0x6a, 0x0a, 0x70, 0x1b, 0x58, 0x48, 0xf0, 0x1c,
|
||||
0x70, 0x27, 0x84, 0x98, 0x49, 0x40, 0x08, 0x4e, 0xa0, 0xc8, 0xe2, 0x04, 0xdf, 0x70, 0x90, 0x3a,
|
||||
0x4a, 0x46, 0x4c, 0x02, 0x98, 0x41, 0xc5, 0x55, 0x37, 0x27, 0x7c, 0xc5, 0x45, 0x17, 0x27, 0xee,
|
||||
0x84, 0x10, 0x33, 0x0d, 0x0a, 0xc1, 0xb8, 0xc8, 0x52, 0x8e, 0xba, 0x81, 0xd4, 0x10, 0x12, 0xa2,
|
||||
0x1b, 0xb8, 0x04, 0x32, 0x79, 0x08, 0xe5, 0x0c, 0xbc, 0x26, 0x85, 0x24, 0x68, 0xb2, 0x21, 0xcc,
|
||||
0x45, 0x38, 0x59, 0x77, 0x56, 0xac, 0xd0, 0x45, 0x38, 0x55, 0x2d, 0x56, 0xac, 0x88, 0x8b, 0x70,
|
||||
0x0e, 0x80, 0x8a, 0x78, 0x1c, 0x57, 0xdc, 0x5f, 0x44, 0x21, 0x09, 0x16, 0xb1, 0x21, 0xcc, 0x1c,
|
||||
0x2d, 0x8b, 0xb8, 0xe0, 0x68, 0x8e, 0x56, 0x05, 0xb0, 0xce, 0x43, 0x6f, 0x92, 0x72, 0x33, 0x92,
|
||||
0xc8, 0x56, 0x01, 0xbe, 0x9b, 0x42, 0x36, 0xad, 0xd0, 0x48, 0xa2, 0x9e, 0x7b, 0x23, 0x25, 0x46,
|
||||
0x92, 0x36, 0x85, 0x42, 0x49, 0xed, 0x1b, 0xfb, 0x6a, 0x87, 0xb6, 0x8c, 0xef, 0x84, 0x10, 0x33,
|
||||
0x3e, 0x35, 0x85, 0xde, 0x8e, 0xcb, 0x32, 0xad, 0x27, 0xff, 0x07, 0xfe, 0x02, 0x35, 0x72, 0x62,
|
||||
0x7c, 0xf2, 0x71, 0xa8, 0x7b, 0x35, 0x03, 0xb7, 0xaf, 0x60, 0x78, 0xe8, 0xbe, 0x1b, 0x64, 0x4c,
|
||||
0xc6, 0x29, 0x24, 0xd6, 0x81, 0x9e, 0xef, 0x69, 0x7a, 0xce, 0xf3, 0x1e, 0x74, 0x61, 0xd6, 0x45,
|
||||
0x75, 0xed, 0xe2, 0x90, 0x2d, 0x61, 0xc2, 0x5e, 0xbe, 0x4d, 0x2b, 0x9e, 0xe6, 0x33, 0x35, 0x73,
|
||||
0x3f, 0x27, 0x2c, 0xf9, 0x60, 0xe2, 0xa2, 0x7a, 0xa7, 0x92, 0x49, 0x20, 0x50, 0x59, 0x8e, 0xe0,
|
||||
0xca, 0x9b, 0x40, 0x60, 0x8b, 0x9a, 0x23, 0x12, 0x88, 0x10, 0x6f, 0xf6, 0x51, 0xb4, 0x73, 0xf5,
|
||||
0x36, 0xdf, 0x84, 0x35, 0xb9, 0x1c, 0x65, 0x0d, 0x83, 0xc4, 0x52, 0x36, 0xa8, 0x60, 0xd6, 0x97,
|
||||
0xda, 0xbf, 0xe9, 0x62, 0x8f, 0x08, 0x3b, 0xed, 0x6e, 0xf6, 0xb8, 0x07, 0xe9, 0x71, 0x65, 0x4e,
|
||||
0xa5, 0x29, 0x57, 0xed, 0x43, 0xe9, 0xc7, 0x3d, 0x48, 0x6b, 0x4f, 0xc6, 0xae, 0xd6, 0x8b, 0x38,
|
||||
0xb9, 0x9c, 0x95, 0x6c, 0x91, 0x4f, 0xb7, 0x59, 0xc6, 0x4a, 0xb4, 0x27, 0xe3, 0x94, 0x1a, 0xa1,
|
||||
0xc4, 0x9e, 0x4c, 0x87, 0x8a, 0xc9, 0xe0, 0xec, 0x52, 0x6c, 0x65, 0xe9, 0x0c, 0xaf, 0xa8, 0x1d,
|
||||
0x43, 0x02, 0x20, 0x32, 0x38, 0x2f, 0xe8, 0x09, 0x22, 0xb9, 0xe2, 0xe6, 0x69, 0x12, 0x67, 0xd2,
|
||||
0xdf, 0x06, 0x6d, 0xc6, 0x01, 0x3b, 0x83, 0xc8, 0xa3, 0xe0, 0xa9, 0xe7, 0x64, 0x51, 0xe6, 0xfb,
|
||||
0x39, 0x67, 0x64, 0x3d, 0x1b, 0xa0, 0xb3, 0x9e, 0x16, 0x88, 0x86, 0xd5, 0x09, 0xbc, 0xad, 0x4b,
|
||||
0x53, 0xff, 0xe3, 0x1b, 0x56, 0xeb, 0xdf, 0x47, 0x4a, 0x1e, 0x1a, 0x56, 0x11, 0x87, 0x2a, 0xa3,
|
||||
0x9c, 0xc8, 0x80, 0x09, 0x68, 0xbb, 0x61, 0xf2, 0xa8, 0x1b, 0xf4, 0xfb, 0x19, 0xf3, 0x55, 0x06,
|
||||
0x21, 0x3f, 0x02, 0xe8, 0xe3, 0xa7, 0x01, 0xcd, 0x76, 0x8b, 0x53, 0x9f, 0x0b, 0x48, 0x2e, 0x5b,
|
||||
0x97, 0x6c, 0xdc, 0x82, 0x4a, 0x84, 0xd8, 0x6e, 0x21, 0x50, 0x7f, 0x13, 0xed, 0x27, 0x2c, 0x0f,
|
||||
0x35, 0x51, 0x2d, 0xef, 0xd3, 0x44, 0x8a, 0x33, 0x8b, 0x5f, 0x2d, 0x55, 0x91, 0x29, 0x9b, 0x69,
|
||||
0x8d, 0xb0, 0x60, 0x43, 0xc4, 0xe2, 0x97, 0x84, 0x4d, 0x4e, 0x8e, 0x7d, 0x1e, 0xb6, 0x6f, 0xd5,
|
||||
0xb6, 0xac, 0x1c, 0xd2, 0xb7, 0x6a, 0x29, 0x96, 0xae, 0xa4, 0x8c, 0x91, 0x0e, 0x2b, 0x6e, 0x9c,
|
||||
0x3c, 0xed, 0x07, 0x9b, 0x25, 0x8f, 0xe3, 0x73, 0x3b, 0x83, 0xb8, 0x94, 0x5e, 0xd7, 0x03, 0x86,
|
||||
0x0c, 0x46, 0x2c, 0x79, 0x02, 0x38, 0x1a, 0xc2, 0x1c, 0xcf, 0xdb, 0x2c, 0xe7, 0x90, 0x73, 0xdf,
|
||||
0x10, 0xe6, 0x1a, 0x53, 0x60, 0x68, 0x08, 0xa3, 0x14, 0x50, 0xdc, 0x8a, 0xfd, 0x20, 0xe0, 0x47,
|
||||
0xf1, 0xdc, 0x9b, 0xb1, 0xc9, 0xbd, 0x1e, 0x29, 0x0f, 0xc5, 0x2d, 0xe2, 0xac, 0x03, 0x37, 0xdb,
|
||||
0xcb, 0x24, 0x2e, 0x67, 0x7a, 0x77, 0x63, 0x3a, 0xdc, 0xa4, 0xed, 0xb8, 0x24, 0x71, 0xe0, 0x16,
|
||||
0xd6, 0x40, 0xc3, 0xce, 0xfe, 0x3c, 0x9e, 0xe9, 0x9a, 0x7a, 0x6a, 0x20, 0xe4, 0xad, 0xaa, 0x3e,
|
||||
0xea, 0x06, 0x91, 0x9f, 0xd7, 0xe9, 0x14, 0x58, 0xc0, 0x8f, 0x90, 0xf7, 0xf1, 0x83, 0x41, 0x94,
|
||||
0xbd, 0xd5, 0xf5, 0x96, 0x2b, 0xba, 0xad, 0x7c, 0xaa, 0xd6, 0xb1, 0x23, 0xe2, 0xf1, 0x20, 0x2e,
|
||||
0x94, 0xbd, 0x11, 0x3c, 0xea, 0xa3, 0xcd, 0x06, 0x6d, 0xa8, 0x8f, 0xea, 0xfd, 0xd7, 0x3e, 0x7d,
|
||||
0xd4, 0x07, 0x2b, 0x9f, 0x3f, 0x55, 0x7d, 0x74, 0x27, 0xe6, 0x71, 0x9d, 0xb7, 0xbf, 0x4e, 0xe1,
|
||||
0x4a, 0x2d, 0x84, 0x3d, 0xf5, 0x6d, 0xa8, 0x91, 0x78, 0x9d, 0x0a, 0xad, 0x8a, 0x37, 0x7a, 0xf3,
|
||||
0x01, 0xdf, 0x6a, 0x85, 0xd0, 0xe9, 0x1b, 0x2d, 0x15, 0x36, 0x7a, 0xf3, 0x01, 0xdf, 0xea, 0x3d,
|
||||
0xcd, 0x4e, 0xdf, 0xe8, 0x65, 0xcd, 0x8d, 0xde, 0xbc, 0xf2, 0xfd, 0x37, 0x4d, 0xc7, 0xb5, 0x9d,
|
||||
0xd7, 0x79, 0x58, 0xc2, 0xd3, 0x25, 0xf8, 0xd2, 0x49, 0xd7, 0x9e, 0x46, 0x43, 0xe9, 0x24, 0xad,
|
||||
0x62, 0x7d, 0xdc, 0xc3, 0x57, 0x8a, 0x63, 0x56, 0xa5, 0xe2, 0xc0, 0xfc, 0x79, 0x0f, 0xa3, 0x0d,
|
||||
0x1c, 0x5a, 0x34, 0x85, 0x94, 0xcc, 0x71, 0xa3, 0x83, 0x9a, 0x3b, 0xb5, 0x4f, 0x03, 0xf6, 0xda,
|
||||
0x57, 0x6b, 0xd7, 0x7b, 0xd2, 0xe6, 0xe0, 0xcf, 0x61, 0xec, 0x13, 0xc7, 0x50, 0xab, 0x7a, 0x0f,
|
||||
0x1d, 0x37, 0xfb, 0x2b, 0x28, 0xf7, 0x7f, 0xd7, 0xac, 0x2b, 0xb0, 0x7f, 0xd5, 0x09, 0x9e, 0xf5,
|
||||
0xb1, 0x88, 0x3a, 0xc2, 0xf3, 0x6b, 0xe9, 0xa8, 0x82, 0xfc, 0xd7, 0x20, 0xba, 0xe3, 0x2d, 0x88,
|
||||
0x7b, 0xf6, 0xfc, 0xfb, 0x7d, 0x6c, 0xfb, 0xcf, 0xa0, 0xbf, 0xf8, 0x36, 0xaa, 0xaa, 0x74, 0xff,
|
||||
0xd4, 0x2c, 0xef, 0x1b, 0x0d, 0xf1, 0xde, 0xc3, 0xab, 0x72, 0x0a, 0xa5, 0xea, 0xb1, 0xa1, 0xa0,
|
||||
0x33, 0x30, 0xee, 0xb7, 0x9f, 0x5e, 0x53, 0xcb, 0xfa, 0x10, 0x8d, 0x03, 0xab, 0x77, 0xce, 0xac,
|
||||
0xf2, 0x84, 0x2c, 0x5b, 0x34, 0x2e, 0xd0, 0x67, 0xd7, 0x55, 0xa3, 0x7a, 0xb2, 0x05, 0x8b, 0xf7,
|
||||
0xda, 0x9f, 0xf7, 0x34, 0xec, 0xbc, 0xe9, 0xfe, 0xc9, 0xf5, 0x94, 0x54, 0x59, 0xfe, 0x67, 0x10,
|
||||
0xdd, 0x77, 0x58, 0x73, 0xda, 0x81, 0xf6, 0x64, 0x7e, 0x14, 0xb0, 0x4f, 0x29, 0xe9, 0xc2, 0xfd,
|
||||
0xc1, 0xb7, 0x53, 0x36, 0x5f, 0x6d, 0x71, 0x54, 0x76, 0xd3, 0x8c, 0x43, 0xd9, 0xfe, 0x6a, 0x8b,
|
||||
0x6b, 0x57, 0x52, 0x23, 0xfa, 0xab, 0x2d, 0x01, 0xdc, 0xfa, 0x6a, 0x8b, 0xc7, 0xb3, 0xf7, 0xab,
|
||||
0x2d, 0x5e, 0x6b, 0xc1, 0xaf, 0xb6, 0x84, 0x35, 0xa8, 0xc9, 0xa7, 0x29, 0x82, 0xdc, 0x55, 0xef,
|
||||
0x65, 0xd1, 0xdd, 0x64, 0x7f, 0x76, 0x1d, 0x15, 0x62, 0xfa, 0x95, 0x9c, 0xb8, 0x11, 0xd7, 0xe3,
|
||||
0x99, 0x3a, 0xb7, 0xe2, 0x36, 0x7a, 0xf3, 0xca, 0xf7, 0x4f, 0xd4, 0xda, 0x4b, 0x4f, 0x36, 0xac,
|
||||
0x14, 0x5f, 0xec, 0x59, 0x0b, 0x4d, 0x1e, 0xb5, 0x05, 0xbb, 0xe5, 0x9f, 0xf6, 0x83, 0x89, 0xea,
|
||||
0xd6, 0x84, 0x6a, 0xf4, 0x51, 0x97, 0x21, 0xd4, 0xe4, 0x1b, 0xbd, 0x79, 0x62, 0x92, 0x93, 0xbe,
|
||||
0x65, 0x6b, 0xf7, 0x30, 0xe6, 0xb6, 0xf5, 0x66, 0x7f, 0x05, 0xe5, 0x7e, 0xa9, 0x92, 0x5a, 0xdb,
|
||||
0xbd, 0x68, 0xe7, 0xf5, 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, 0x78, 0x7d,
|
||||
0x45, 0x6a, 0xba, 0xb7, 0xf1, 0x71, 0xfb, 0x73, 0x26, 0x01, 0xdb, 0x63, 0xfa, 0x73, 0x26, 0xdd,
|
||||
0x5a, 0x78, 0x0b, 0xaa, 0x4e, 0x4a, 0xd4, 0xca, 0xc8, 0xb7, 0x05, 0x25, 0x72, 0x16, 0xb4, 0x22,
|
||||
0x7a, 0xd8, 0xc9, 0xf9, 0x9c, 0xbc, 0x7c, 0x5b, 0xc4, 0xf9, 0x94, 0x76, 0x22, 0xe5, 0xdd, 0x4e,
|
||||
0x34, 0x87, 0xb7, 0xee, 0x6a, 0xe9, 0x09, 0x6b, 0x96, 0x79, 0x8f, 0x29, 0x7d, 0x8d, 0x04, 0xb7,
|
||||
0xee, 0x5a, 0x28, 0xe1, 0x4d, 0xe5, 0xb4, 0x21, 0x6f, 0x28, 0x95, 0x7d, 0xd2, 0x07, 0x45, 0x0b,
|
||||
0x08, 0xed, 0x4d, 0x9f, 0x08, 0x3c, 0x0d, 0x59, 0x69, 0x9d, 0x0a, 0xac, 0xf7, 0xa4, 0x09, 0xb7,
|
||||
0x63, 0xe0, 0x5f, 0x42, 0x3c, 0x85, 0x32, 0xe8, 0x56, 0x53, 0xbd, 0xdc, 0xda, 0xb4, 0xcf, 0xed,
|
||||
0x36, 0xcb, 0x16, 0xf3, 0x5c, 0x35, 0x26, 0xe9, 0xd6, 0xa6, 0xba, 0xdd, 0x22, 0x1a, 0x6f, 0x5a,
|
||||
0x1a, 0xb7, 0x22, 0xbd, 0x7c, 0x12, 0x36, 0xe3, 0x64, 0x95, 0x6b, 0xbd, 0x58, 0xba, 0x9e, 0x2a,
|
||||
0x8c, 0x3a, 0xea, 0x89, 0x22, 0x69, 0xbd, 0x27, 0x8d, 0x77, 0x0f, 0x2d, 0xb7, 0x3a, 0x9e, 0x36,
|
||||
0x3a, 0x6c, 0xb5, 0x42, 0x6a, 0xb3, 0xbf, 0x02, 0xde, 0xab, 0x55, 0x51, 0x55, 0xaf, 0x8b, 0x76,
|
||||
0xd3, 0x2c, 0x1b, 0xae, 0x05, 0xc2, 0xa4, 0x81, 0x82, 0x7b, 0xb5, 0x1e, 0x98, 0x88, 0xe4, 0x66,
|
||||
0x6f, 0x33, 0x1f, 0x76, 0xd9, 0x11, 0x54, 0xaf, 0x48, 0xb6, 0x69, 0xb4, 0xdf, 0x66, 0x3d, 0x6a,
|
||||
0x5d, 0xdb, 0x51, 0xf8, 0xc1, 0xb5, 0x2a, 0xbc, 0xd1, 0x9b, 0x47, 0x97, 0x01, 0x04, 0x25, 0x66,
|
||||
0x96, 0x7b, 0x94, 0x09, 0x67, 0x26, 0xb9, 0xdf, 0x41, 0xa1, 0x3d, 0x4b, 0xd9, 0x8d, 0xde, 0xa4,
|
||||
0xd3, 0x19, 0x70, 0xef, 0x39, 0x96, 0x0d, 0x04, 0xcf, 0xb1, 0x10, 0x88, 0x9a, 0x4e, 0xfe, 0xae,
|
||||
0x37, 0x6b, 0xf7, 0xa7, 0xbe, 0xa6, 0x53, 0xca, 0x16, 0x15, 0x6a, 0x3a, 0x2f, 0x8d, 0x46, 0x03,
|
||||
0xed, 0x56, 0xbd, 0xba, 0xfe, 0x24, 0x64, 0x06, 0xbd, 0xbf, 0xbe, 0xd6, 0x8b, 0x45, 0x33, 0x8a,
|
||||
0x71, 0x98, 0xce, 0x53, 0xee, 0x9b, 0x51, 0x2c, 0x1b, 0x35, 0x12, 0x9a, 0x51, 0xda, 0x28, 0x55,
|
||||
0xbd, 0x3a, 0x47, 0xd8, 0x9f, 0x86, 0xab, 0x27, 0x99, 0x7e, 0xd5, 0xd3, 0x6c, 0xeb, 0xd8, 0x35,
|
||||
0xd7, 0x21, 0xc3, 0x2f, 0xd4, 0x62, 0xd9, 0x13, 0xdb, 0xe2, 0xe5, 0x4a, 0x0c, 0x86, 0x46, 0x1d,
|
||||
0x4a, 0x01, 0x1f, 0x27, 0xd4, 0x5c, 0x73, 0x32, 0x5c, 0x14, 0x10, 0x97, 0x71, 0x9e, 0x78, 0x17,
|
||||
0xa7, 0xc2, 0x60, 0x8b, 0x0c, 0x2d, 0x4e, 0x49, 0x0d, 0x74, 0xa8, 0xef, 0xbe, 0x16, 0xe9, 0xe9,
|
||||
0x0a, 0xfa, 0xfd, 0x43, 0xf7, 0xad, 0xc8, 0xc7, 0x3d, 0x48, 0x7c, 0xa8, 0xdf, 0x00, 0x7a, 0x5b,
|
||||
0x5e, 0x3a, 0xfd, 0x38, 0x60, 0xca, 0x45, 0x43, 0x0b, 0x61, 0x5a, 0x05, 0x05, 0xb5, 0x4e, 0x70,
|
||||
0x81, 0xff, 0x18, 0x56, 0xbe, 0xa0, 0x36, 0xf9, 0xa9, 0x40, 0x42, 0x41, 0xdd, 0x46, 0x51, 0x9e,
|
||||
0x69, 0xaf, 0x83, 0x1e, 0x04, 0xf4, 0xed, 0xa5, 0xcf, 0xc3, 0x4e, 0x0e, 0xf5, 0x9c, 0x9d, 0x74,
|
||||
0xe9, 0x9c, 0x62, 0x78, 0x0a, 0xba, 0x93, 0x2e, 0xfd, 0x87, 0x18, 0x6b, 0xbd, 0x58, 0x7c, 0x61,
|
||||
0x20, 0xe6, 0xf0, 0xb6, 0x39, 0xc9, 0xf7, 0x14, 0x57, 0xc8, 0x5b, 0x47, 0xf9, 0x8f, 0xba, 0x41,
|
||||
0x73, 0x3d, 0xf7, 0xb8, 0x64, 0x09, 0x54, 0x95, 0xfa, 0xc6, 0x9b, 0x7b, 0xff, 0x49, 0xc9, 0x46,
|
||||
0xe8, 0x0b, 0x6f, 0xf7, 0xc2, 0x90, 0xb2, 0xfd, 0x65, 0xf4, 0xee, 0x01, 0x9b, 0x8d, 0x21, 0x9f,
|
||||
0x0e, 0x7f, 0xe0, 0x5e, 0x88, 0x65, 0xb3, 0x51, 0xfd, 0xb3, 0xb6, 0x77, 0x83, 0x12, 0x9b, 0x2b,
|
||||
0x7d, 0x3b, 0x70, 0xb6, 0x98, 0x8d, 0x79, 0xcc, 0xd1, 0x95, 0x3e, 0xf1, 0xfb, 0xa8, 0x16, 0x10,
|
||||
0x57, 0xfa, 0x1c, 0x00, 0xd9, 0x9b, 0x94, 0x00, 0x5e, 0x7b, 0xb5, 0x20, 0x68, 0x4f, 0x01, 0x66,
|
||||
0xd6, 0xd5, 0xf6, 0xea, 0xc4, 0x16, 0x5f, 0xc1, 0x33, 0x3a, 0x42, 0x4a, 0xcc, 0xba, 0x6d, 0xca,
|
||||
0x04, 0x83, 0xac, 0xbe, 0xf8, 0xa2, 0xc5, 0x62, 0x3e, 0x8f, 0xcb, 0x15, 0x0a, 0x06, 0x55, 0x4b,
|
||||
0x0b, 0x20, 0x82, 0xc1, 0x0b, 0x9a, 0x28, 0x6f, 0x1e, 0x73, 0x72, 0xb9, 0xc7, 0x4a, 0xb6, 0xe0,
|
||||
0x69, 0x0e, 0xf8, 0xab, 0x06, 0xfa, 0x81, 0xda, 0x0c, 0x11, 0xe5, 0x14, 0x6b, 0xb2, 0x42, 0x41,
|
||||
0xc8, 0xdb, 0x81, 0xe2, 0x4b, 0xa9, 0x15, 0x67, 0x25, 0x3e, 0x1d, 0x94, 0x56, 0x30, 0x44, 0x64,
|
||||
0x85, 0x24, 0x8c, 0xda, 0xfe, 0x38, 0xcd, 0x67, 0xde, 0xb6, 0x3f, 0xb6, 0xbf, 0x33, 0x78, 0x8b,
|
||||
0x06, 0xcc, 0xf8, 0x2e, 0x1f, 0x9a, 0xfc, 0x72, 0x90, 0x7a, 0x4b, 0xd2, 0xfb, 0xd0, 0x6d, 0x82,
|
||||
0x18, 0xdf, 0xfd, 0x24, 0x72, 0xf5, 0xaa, 0x80, 0x1c, 0xa6, 0xcd, 0x1d, 0x38, 0x9f, 0x2b, 0x87,
|
||||
0x08, 0xba, 0xc2, 0xa4, 0x19, 0x55, 0x85, 0xfc, 0x64, 0x91, 0x1f, 0x97, 0xec, 0x3c, 0xcd, 0xa0,
|
||||
0x44, 0xa3, 0xaa, 0x54, 0xb7, 0xe4, 0xc4, 0xa8, 0xea, 0xe3, 0xcc, 0x65, 0x0a, 0x21, 0x75, 0x3e,
|
||||
0xf7, 0x3b, 0x29, 0xe3, 0x04, 0x5f, 0xa6, 0x90, 0x36, 0xda, 0x18, 0xb1, 0x93, 0x16, 0xc0, 0x4d,
|
||||
0xa4, 0x1f, 0x02, 0x2f, 0xd3, 0xa4, 0x1a, 0x03, 0x3f, 0x8e, 0xcb, 0x78, 0x0e, 0x1c, 0x4a, 0x1c,
|
||||
0xe9, 0x0a, 0x19, 0x39, 0x0c, 0x11, 0xe9, 0x14, 0xab, 0x1c, 0xfe, 0x61, 0xf4, 0x7e, 0x3d, 0xd0,
|
||||
0x43, 0xae, 0xbe, 0x4c, 0xff, 0x52, 0xfc, 0x49, 0x8b, 0xe1, 0x07, 0xda, 0xc6, 0x98, 0x97, 0x10,
|
||||
0xcf, 0x1b, 0xdb, 0xef, 0xe9, 0xdf, 0x05, 0xb8, 0x39, 0xa8, 0x1b, 0xe4, 0x88, 0xf1, 0xf4, 0xbc,
|
||||
0x5e, 0x57, 0xa9, 0x53, 0x2c, 0xd4, 0x20, 0xb6, 0x78, 0x14, 0xf8, 0x64, 0x80, 0x8f, 0x33, 0x03,
|
||||
0x8d, 0x2d, 0x3d, 0x81, 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, 0x43, 0x98, 0x9f, 0x41, 0x59, 0x5d, 0xa4, 0xc5, 0x5e, 0x3d, 0xc3, 0xc6, 0x7c, 0x81, 0xdf,
|
||||
0xa2, 0x33, 0xc4, 0x48, 0x23, 0x44, 0x1a, 0x42, 0xa0, 0x66, 0x28, 0x33, 0xc0, 0x7e, 0x75, 0x14,
|
||||
0xcf, 0x41, 0x7c, 0x00, 0x61, 0xb8, 0x46, 0x19, 0xb1, 0x20, 0x62, 0x28, 0x23, 0x61, 0xeb, 0x75,
|
||||
0x23, 0xc3, 0x9c, 0xc0, 0xac, 0x8e, 0xb0, 0xf2, 0x38, 0x5e, 0xcd, 0x21, 0xe7, 0xca, 0x24, 0xda,
|
||||
0x84, 0xb5, 0x4c, 0xfa, 0x79, 0x62, 0x13, 0xb6, 0x8f, 0x9e, 0x95, 0x74, 0x3b, 0x0f, 0xfe, 0x98,
|
||||
0x95, 0x5c, 0xfe, 0xdd, 0x89, 0xd3, 0x32, 0x43, 0x49, 0xb7, 0xfb, 0x50, 0x1d, 0x92, 0x48, 0xba,
|
||||
0xc3, 0x1a, 0xd6, 0x07, 0x9b, 0x9d, 0x32, 0xbc, 0x86, 0x52, 0xc7, 0xc9, 0xcb, 0x79, 0x9c, 0x66,
|
||||
0x2a, 0x1a, 0xbe, 0x08, 0xd8, 0x26, 0x74, 0x88, 0x0f, 0x36, 0xf7, 0xd5, 0xb5, 0x3e, 0x71, 0x1d,
|
||||
0x2e, 0x21, 0xda, 0x13, 0xee, 0xb0, 0x4f, 0xec, 0x09, 0x77, 0x6b, 0x99, 0xa5, 0x9a, 0x61, 0x05,
|
||||
0xb7, 0x12, 0xc4, 0x36, 0x9b, 0xe2, 0x0d, 0x22, 0xcb, 0x26, 0x02, 0x89, 0xa5, 0x5a, 0x50, 0xc1,
|
||||
0xcc, 0x6d, 0x06, 0xdb, 0x4d, 0xf3, 0x38, 0x4b, 0x7f, 0x8a, 0xef, 0x3e, 0x5b, 0x76, 0x1a, 0x82,
|
||||
0x98, 0xdb, 0xfc, 0xa4, 0xcf, 0xd5, 0x1e, 0xf0, 0x49, 0x5a, 0x0f, 0xfd, 0x8f, 0x02, 0xcf, 0x4d,
|
||||
0x10, 0xdd, 0xae, 0x2c, 0x52, 0xb9, 0xfa, 0xd9, 0x20, 0xba, 0x89, 0x1f, 0xeb, 0x56, 0x51, 0x8c,
|
||||
0xeb, 0x94, 0xe4, 0x04, 0x12, 0x48, 0x0b, 0x3e, 0xfc, 0x34, 0xfc, 0xac, 0x10, 0x4e, 0x9c, 0xac,
|
||||
0xf7, 0x50, 0xb3, 0xce, 0x6b, 0xeb, 0xb1, 0x64, 0x2c, 0xff, 0x20, 0xd3, 0x69, 0x05, 0xa5, 0x9a,
|
||||
0x29, 0xf7, 0x80, 0xa3, 0xde, 0x69, 0x71, 0x23, 0x0b, 0xac, 0x2b, 0x4a, 0xf4, 0xce, 0xb0, 0x86,
|
||||
0xd9, 0xdd, 0xb1, 0xb8, 0x13, 0xa8, 0x58, 0xb6, 0x04, 0x71, 0xfd, 0xed, 0x29, 0x69, 0xcc, 0xa2,
|
||||
0x88, 0xdd, 0x1d, 0x9a, 0x36, 0xe9, 0x46, 0xdb, 0xed, 0x56, 0xbe, 0xda, 0xc7, 0x67, 0xe4, 0x1e,
|
||||
0x4b, 0x02, 0x23, 0xd2, 0x8d, 0x00, 0x6e, 0xed, 0x7e, 0x96, 0x2c, 0x9e, 0x26, 0x71, 0xc5, 0x8f,
|
||||
0xe3, 0x55, 0xc6, 0xe2, 0xa9, 0x98, 0xd7, 0xf1, 0xee, 0x67, 0xc3, 0x8c, 0x6c, 0x88, 0xda, 0xfd,
|
||||
0xa4, 0x60, 0xb3, 0xb2, 0x53, 0x7f, 0x67, 0x4a, 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, 0x2a, 0x81, 0xab, 0x4f, 0xd7,
|
||||
0x3e, 0xf5, 0xe9, 0xda, 0xd0, 0xc8, 0xfe, 0x0e, 0xd9, 0x7a, 0x4f, 0x5a, 0x7a, 0x7d, 0x71, 0xfb,
|
||||
0x7f, 0xbf, 0xbe, 0x31, 0xf8, 0xf9, 0xd7, 0x37, 0x06, 0xff, 0xff, 0xf5, 0x8d, 0xc1, 0xcf, 0xbe,
|
||||
0xb9, 0xf1, 0xce, 0xcf, 0xbf, 0xb9, 0xf1, 0xce, 0x2f, 0xbe, 0xb9, 0xf1, 0xce, 0x57, 0xef, 0xaa,
|
||||
0x3f, 0x58, 0x76, 0xf6, 0x2b, 0xe2, 0xcf, 0x8e, 0x3d, 0xff, 0x65, 0x00, 0x00, 0x00, 0xff, 0xff,
|
||||
0xf5, 0x3b, 0x43, 0x25, 0xd4, 0x6c, 0x00, 0x00,
|
||||
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, 0xd7, 0xf0,
|
||||
0x78, 0x12, 0x2f, 0xf0, 0x86, 0x76, 0xff, 0x91, 0x53, 0x65, 0x66, 0xe5, 0x47, 0x54, 0x46, 0x56,
|
||||
0x79, 0x9f, 0x66, 0xd4, 0xf1, 0x8b, 0x88, 0xcc, 0xca, 0xcc, 0xc8, 0xc8, 0x8f, 0x2a, 0x47, 0xd7,
|
||||
0xcb, 0x37, 0x1b, 0x65, 0xc5, 0x38, 0xab, 0x37, 0x6a, 0xa8, 0x96, 0x59, 0x0a, 0xed, 0xbf, 0x63,
|
||||
0xf1, 0x73, 0xfc, 0x6e, 0x52, 0xac, 0xf8, 0xaa, 0x84, 0x8f, 0x3e, 0x34, 0x64, 0xca, 0xe6, 0xf3,
|
||||
0xa4, 0x98, 0xd6, 0x12, 0xf9, 0xe8, 0x03, 0x23, 0x81, 0x25, 0x14, 0x5c, 0xfd, 0xfe, 0xf4, 0x7f,
|
||||
0xfe, 0x6f, 0x14, 0xbd, 0xb7, 0x95, 0x67, 0x50, 0xf0, 0x2d, 0xa5, 0x11, 0x7f, 0x15, 0x7d, 0x77,
|
||||
0xb3, 0x2c, 0x77, 0x81, 0xbf, 0x82, 0xaa, 0xce, 0x58, 0x11, 0xdf, 0x1e, 0x2b, 0x07, 0xe3, 0xe3,
|
||||
0x32, 0x1d, 0x6f, 0x96, 0xe5, 0xd8, 0x08, 0xc7, 0xc7, 0xf0, 0x93, 0x05, 0xd4, 0xfc, 0xa3, 0x3b,
|
||||
0x61, 0xa8, 0x2e, 0x59, 0x51, 0x43, 0x7c, 0x16, 0xfd, 0xc6, 0x66, 0x59, 0x4e, 0x80, 0x6f, 0x43,
|
||||
0x53, 0x81, 0x09, 0x4f, 0x38, 0xc4, 0xf7, 0x3b, 0xaa, 0x2e, 0xa0, 0x7d, 0x3c, 0xe8, 0x07, 0x95,
|
||||
0x9f, 0x93, 0xe8, 0x3b, 0x8d, 0x9f, 0xf3, 0x05, 0x9f, 0xb2, 0xcb, 0x22, 0xbe, 0xd9, 0x55, 0x54,
|
||||
0x22, 0x6d, 0xfb, 0x56, 0x08, 0x51, 0x56, 0x5f, 0x47, 0xbf, 0xfa, 0x3a, 0xc9, 0x73, 0xe0, 0x5b,
|
||||
0x15, 0x34, 0x05, 0x77, 0x75, 0xa4, 0x68, 0x2c, 0x65, 0xda, 0xee, 0xed, 0x20, 0xa3, 0x0c, 0x7f,
|
||||
0x15, 0x7d, 0x57, 0x4a, 0x8e, 0x21, 0x65, 0x4b, 0xa8, 0x62, 0xaf, 0x96, 0x12, 0x12, 0x8f, 0xbc,
|
||||
0x03, 0x61, 0xdb, 0x5b, 0xac, 0x58, 0x42, 0xc5, 0xfd, 0xb6, 0x95, 0x30, 0x6c, 0xdb, 0x40, 0xca,
|
||||
0xf6, 0xdf, 0x8d, 0xa2, 0xef, 0x6f, 0xa6, 0x29, 0x5b, 0x14, 0x7c, 0x9f, 0xa5, 0x49, 0xbe, 0x9f,
|
||||
0x15, 0x17, 0x87, 0x70, 0xb9, 0x75, 0xde, 0xf0, 0xc5, 0x0c, 0xe2, 0x67, 0xee, 0x53, 0x95, 0xe8,
|
||||
0x58, 0xb3, 0x63, 0x1b, 0xd6, 0xbe, 0x3f, 0xb9, 0x9a, 0x92, 0x2a, 0xcb, 0x3f, 0x8d, 0xa2, 0x6b,
|
||||
0xb8, 0x2c, 0x13, 0x96, 0x2f, 0xc1, 0x94, 0xe6, 0xd3, 0x1e, 0xc3, 0x2e, 0xae, 0xcb, 0xf3, 0xd9,
|
||||
0x55, 0xd5, 0x54, 0x89, 0xf2, 0xe8, 0x7d, 0xbb, 0xbb, 0x4c, 0xa0, 0x16, 0xc3, 0xe9, 0x21, 0xdd,
|
||||
0x23, 0x14, 0xa2, 0x3d, 0x3f, 0x1a, 0x82, 0x2a, 0x6f, 0x59, 0x14, 0x2b, 0x6f, 0x39, 0xab, 0xb5,
|
||||
0xb3, 0x07, 0x5e, 0x0b, 0x16, 0xa1, 0x7d, 0x3d, 0x1c, 0x40, 0x2a, 0x57, 0x7f, 0x1c, 0xfd, 0xda,
|
||||
0x6b, 0x56, 0x5d, 0xd4, 0x65, 0x92, 0x82, 0x1a, 0x0a, 0x77, 0x5d, 0xed, 0x56, 0x8a, 0x47, 0xc3,
|
||||
0xbd, 0x3e, 0xcc, 0xea, 0xb4, 0xad, 0xf0, 0x65, 0x09, 0x38, 0x06, 0x19, 0xc5, 0x46, 0x48, 0x75,
|
||||
0x5a, 0x0c, 0x29, 0xdb, 0x17, 0x51, 0x6c, 0x6c, 0xbf, 0xf9, 0x13, 0x48, 0xf9, 0xe6, 0x74, 0x8a,
|
||||
0x5b, 0xc5, 0xe8, 0x0a, 0x62, 0xbc, 0x39, 0x9d, 0x52, 0xad, 0xe2, 0x47, 0x95, 0xb3, 0xcb, 0xe8,
|
||||
0x03, 0xe4, 0x6c, 0x3f, 0xab, 0x85, 0xc3, 0xf5, 0xb0, 0x15, 0x85, 0x69, 0xa7, 0xe3, 0xa1, 0xb8,
|
||||
0x72, 0xfc, 0x17, 0xa3, 0xe8, 0x7b, 0x1e, 0xcf, 0xc7, 0x30, 0x67, 0x4b, 0x88, 0x9f, 0xf4, 0x5b,
|
||||
0x93, 0xa4, 0xf6, 0xff, 0xf1, 0x15, 0x34, 0x3c, 0xdd, 0x64, 0x02, 0x39, 0xa4, 0x9c, 0xec, 0x26,
|
||||
0x52, 0xdc, 0xdb, 0x4d, 0x34, 0x66, 0x8d, 0xb0, 0x56, 0xb8, 0x0b, 0x7c, 0x6b, 0x51, 0x55, 0x50,
|
||||
0x70, 0xb2, 0x2d, 0x0d, 0xd2, 0xdb, 0x96, 0x0e, 0xea, 0xa9, 0xcf, 0x2e, 0xf0, 0xcd, 0x3c, 0x27,
|
||||
0xeb, 0x23, 0xc5, 0xbd, 0xf5, 0xd1, 0x98, 0xf2, 0x90, 0x46, 0xbf, 0x6e, 0x3d, 0x31, 0xbe, 0x57,
|
||||
0x9c, 0xb1, 0x98, 0x7e, 0x16, 0x42, 0xae, 0x7d, 0xdc, 0xef, 0xe5, 0x3c, 0xd5, 0x78, 0xf1, 0xb6,
|
||||
0x64, 0x15, 0xdd, 0x2c, 0x52, 0xdc, 0x5b, 0x0d, 0x8d, 0x29, 0x0f, 0x7f, 0x14, 0xbd, 0xa7, 0xa2,
|
||||
0x64, 0x3b, 0x9f, 0xdd, 0xf1, 0x86, 0x50, 0x3c, 0xa1, 0xdd, 0xed, 0xa1, 0x4c, 0x70, 0x50, 0x32,
|
||||
0x15, 0x7c, 0x6e, 0x7b, 0xf5, 0x50, 0xe8, 0xb9, 0x13, 0x86, 0x3a, 0xb6, 0xb7, 0x21, 0x07, 0xd2,
|
||||
0xb6, 0x14, 0xf6, 0xd8, 0xd6, 0x90, 0xb2, 0x5d, 0x45, 0xbf, 0xa5, 0x1f, 0x4b, 0x33, 0x8f, 0x0a,
|
||||
0x79, 0x13, 0xa4, 0xd7, 0x88, 0x7a, 0xdb, 0x90, 0xf6, 0xf5, 0x78, 0x18, 0xdc, 0xa9, 0x8f, 0x1a,
|
||||
0x81, 0xfe, 0xfa, 0xa0, 0xf1, 0x77, 0x27, 0x0c, 0x29, 0xdb, 0x7f, 0x3f, 0x8a, 0x7e, 0xa0, 0x64,
|
||||
0x2f, 0x8a, 0xe4, 0x4d, 0x0e, 0x62, 0x4a, 0x3c, 0x04, 0x7e, 0xc9, 0xaa, 0x8b, 0xc9, 0xaa, 0x48,
|
||||
0x89, 0xe9, 0xdf, 0x0f, 0xf7, 0x4c, 0xff, 0xa4, 0x92, 0x95, 0xf1, 0xa9, 0x8a, 0x72, 0x56, 0xe2,
|
||||
0x8c, 0xaf, 0xad, 0x01, 0x67, 0x25, 0x95, 0xf1, 0xb9, 0x48, 0xc7, 0xea, 0x41, 0x13, 0x36, 0xfd,
|
||||
0x56, 0x0f, 0xec, 0x38, 0x79, 0x2b, 0x84, 0x98, 0xb0, 0xd5, 0x76, 0x60, 0x56, 0x9c, 0x65, 0xb3,
|
||||
0xd3, 0x72, 0xda, 0x74, 0xe3, 0x87, 0xfe, 0x1e, 0x6a, 0x21, 0x44, 0xd8, 0x22, 0x50, 0xe5, 0xed,
|
||||
0x1f, 0x4d, 0x62, 0xa4, 0x86, 0xd2, 0x4e, 0xc5, 0xe6, 0xfb, 0x30, 0x4b, 0xd2, 0x95, 0x1a, 0xff,
|
||||
0x9f, 0x84, 0x06, 0x1e, 0xa6, 0x75, 0x21, 0x3e, 0xbd, 0xa2, 0x96, 0x2a, 0xcf, 0x7f, 0x8e, 0xa2,
|
||||
0x3b, 0x6d, 0xf5, 0xcf, 0x93, 0x62, 0x06, 0xaa, 0x3d, 0x65, 0xe9, 0x37, 0x8b, 0xe9, 0x31, 0xd4,
|
||||
0x3c, 0xa9, 0x78, 0xfc, 0x85, 0xbf, 0x92, 0x21, 0x1d, 0x5d, 0xb6, 0x1f, 0x7d, 0x2b, 0x5d, 0xd3,
|
||||
0xea, 0x93, 0x26, 0xb0, 0xa9, 0x10, 0xe0, 0xb6, 0xba, 0x90, 0xe0, 0x00, 0x70, 0x2b, 0x84, 0x98,
|
||||
0x56, 0x17, 0x82, 0xbd, 0x62, 0x99, 0x71, 0xd8, 0x85, 0x02, 0xaa, 0x6e, 0xab, 0x4b, 0x55, 0x17,
|
||||
0x21, 0x5a, 0x9d, 0x40, 0x4d, 0xb0, 0x71, 0xbc, 0xe9, 0xc9, 0x71, 0x2d, 0x60, 0xa4, 0x33, 0x3d,
|
||||
0x3e, 0x1e, 0x06, 0x9b, 0xd5, 0x9d, 0xe5, 0xf3, 0x18, 0x96, 0xec, 0x02, 0xaf, 0xee, 0x6c, 0x13,
|
||||
0x12, 0x20, 0x56, 0x77, 0x5e, 0xd0, 0xcc, 0x60, 0x96, 0x9f, 0x57, 0x19, 0x5c, 0xa2, 0x19, 0xcc,
|
||||
0x56, 0x6e, 0xc4, 0xc4, 0x0c, 0xe6, 0xc1, 0x94, 0x87, 0xc3, 0xe8, 0x57, 0x84, 0xf0, 0x0f, 0x58,
|
||||
0x56, 0xc4, 0xd7, 0x3d, 0x4a, 0x8d, 0x40, 0x5b, 0xbd, 0x41, 0x03, 0xa8, 0xc4, 0xcd, 0xaf, 0x5b,
|
||||
0x49, 0x91, 0x42, 0xee, 0x2d, 0xb1, 0x11, 0x07, 0x4b, 0xec, 0x60, 0x26, 0x75, 0x10, 0xc2, 0x26,
|
||||
0x7e, 0x4d, 0xce, 0x93, 0x2a, 0x2b, 0x66, 0xb1, 0x4f, 0xd7, 0x92, 0x13, 0xa9, 0x83, 0x8f, 0x43,
|
||||
0x5d, 0x58, 0x29, 0x6e, 0x96, 0x65, 0xd5, 0x84, 0x45, 0x5f, 0x17, 0x76, 0x91, 0x60, 0x17, 0xee,
|
||||
0xa0, 0x7e, 0x6f, 0xdb, 0x90, 0xe6, 0x59, 0x11, 0xf4, 0xa6, 0x90, 0x21, 0xde, 0x0c, 0x8a, 0x3a,
|
||||
0xef, 0x3e, 0x24, 0x4b, 0x68, 0x6b, 0xe6, 0x7b, 0x32, 0x36, 0x10, 0xec, 0xbc, 0x08, 0x34, 0xeb,
|
||||
0x34, 0x21, 0x3e, 0x48, 0x2e, 0xa0, 0x79, 0xc0, 0xd0, 0xcc, 0x6b, 0xb1, 0x4f, 0xdf, 0x21, 0x88,
|
||||
0x75, 0x9a, 0x9f, 0x54, 0xae, 0x16, 0xd1, 0x07, 0x42, 0x7e, 0x94, 0x54, 0x3c, 0x4b, 0xb3, 0x32,
|
||||
0x29, 0xda, 0xfc, 0xdf, 0x37, 0xae, 0x3b, 0x94, 0x76, 0xb9, 0x3e, 0x90, 0x56, 0x6e, 0xff, 0x7d,
|
||||
0x14, 0xdd, 0xc4, 0x7e, 0x8f, 0xa0, 0x9a, 0x67, 0x62, 0x19, 0x59, 0xcb, 0x20, 0x1c, 0x7f, 0x1e,
|
||||
0x36, 0xda, 0x51, 0xd0, 0xa5, 0xf9, 0xe1, 0xd5, 0x15, 0x55, 0xc1, 0xfe, 0x30, 0x8a, 0xe4, 0x72,
|
||||
0x45, 0x2c, 0x29, 0xdd, 0x51, 0xab, 0xd6, 0x31, 0xce, 0x7a, 0xf2, 0x66, 0x80, 0x30, 0x53, 0x85,
|
||||
0xfc, 0x5d, 0xac, 0x94, 0x63, 0xaf, 0x86, 0x10, 0x11, 0x53, 0x05, 0x42, 0x70, 0x41, 0x27, 0xe7,
|
||||
0xec, 0xd2, 0x5f, 0xd0, 0x46, 0x12, 0x2e, 0xa8, 0x22, 0xcc, 0xde, 0x95, 0x2a, 0xa8, 0x6f, 0xef,
|
||||
0xaa, 0x2d, 0x46, 0x68, 0xef, 0x0a, 0x33, 0xca, 0x30, 0x8b, 0x7e, 0xd3, 0x36, 0xfc, 0x9c, 0xb1,
|
||||
0x8b, 0x79, 0x52, 0x5d, 0xc4, 0x8f, 0x68, 0xe5, 0x96, 0xd1, 0x8e, 0xd6, 0x06, 0xb1, 0x26, 0x2c,
|
||||
0xd8, 0x0e, 0x9b, 0x44, 0xe3, 0xb4, 0xca, 0x51, 0x58, 0x70, 0x6c, 0x28, 0x84, 0x08, 0x0b, 0x04,
|
||||
0x6a, 0x22, 0xb7, 0xed, 0x6d, 0x02, 0x78, 0xb5, 0xe4, 0xa8, 0x4f, 0x80, 0x5a, 0x2d, 0x79, 0x30,
|
||||
0xdc, 0x85, 0x76, 0xab, 0xa4, 0x3c, 0xf7, 0x77, 0x21, 0x21, 0x0a, 0x77, 0xa1, 0x16, 0xc1, 0xed,
|
||||
0x3d, 0x81, 0xa4, 0x4a, 0xcf, 0xfd, 0xed, 0x2d, 0x65, 0xe1, 0xf6, 0xd6, 0x0c, 0x6e, 0x6f, 0x29,
|
||||
0x78, 0x9d, 0xf1, 0xf3, 0x03, 0xe0, 0x89, 0xbf, 0xbd, 0x5d, 0x26, 0xdc, 0xde, 0x1d, 0xd6, 0x64,
|
||||
0x32, 0xb6, 0xc3, 0xc9, 0xe2, 0x4d, 0x9d, 0x56, 0xd9, 0x1b, 0x88, 0x03, 0x56, 0x34, 0x44, 0x64,
|
||||
0x32, 0x24, 0x6c, 0x82, 0xb4, 0xf2, 0xd9, 0xca, 0xf6, 0xa6, 0x35, 0x0a, 0xd2, 0xad, 0x0d, 0x8b,
|
||||
0x20, 0x82, 0xb4, 0x9f, 0xc4, 0xd5, 0xdb, 0xad, 0xd8, 0xa2, 0xac, 0x7b, 0xaa, 0x87, 0xa0, 0x70,
|
||||
0xf5, 0xba, 0xb0, 0xf2, 0xf9, 0x36, 0xfa, 0x6d, 0xfb, 0x91, 0x9e, 0x16, 0xb5, 0xf6, 0xba, 0x4e,
|
||||
0x3f, 0x27, 0x0b, 0x23, 0xb6, 0xa5, 0x02, 0xb8, 0x49, 0x53, 0x5a, 0xcf, 0x7c, 0x1b, 0x78, 0x92,
|
||||
0xe5, 0x75, 0x7c, 0xcf, 0x6f, 0xa3, 0x95, 0x13, 0x69, 0x8a, 0x8f, 0xc3, 0x63, 0x76, 0x7b, 0x51,
|
||||
0xe6, 0x59, 0xda, 0xdd, 0x9f, 0x54, 0xba, 0x5a, 0x1c, 0x1e, 0xb3, 0x36, 0x86, 0x63, 0xd0, 0x04,
|
||||
0xb8, 0xfc, 0xcf, 0xc9, 0xaa, 0x04, 0x7f, 0x0c, 0x72, 0x90, 0x70, 0x0c, 0xc2, 0x28, 0xae, 0xcf,
|
||||
0x04, 0xf8, 0x7e, 0xb2, 0x62, 0x0b, 0x22, 0x06, 0x69, 0x71, 0xb8, 0x3e, 0x36, 0x66, 0x32, 0x05,
|
||||
0xed, 0x61, 0xaf, 0xe0, 0x50, 0x15, 0x49, 0xbe, 0x93, 0x27, 0xb3, 0x3a, 0x26, 0xc6, 0x8d, 0x4b,
|
||||
0x11, 0x99, 0x02, 0x4d, 0x7b, 0x1e, 0xe3, 0x5e, 0xbd, 0x93, 0x2c, 0x59, 0x95, 0x71, 0xfa, 0x31,
|
||||
0x1a, 0xa4, 0xf7, 0x31, 0x3a, 0xa8, 0xd7, 0xdb, 0x66, 0x95, 0x9e, 0x67, 0x4b, 0x98, 0x06, 0xbc,
|
||||
0xb5, 0xc8, 0x00, 0x6f, 0x16, 0xea, 0x69, 0xb4, 0x09, 0x5b, 0x54, 0x29, 0x90, 0x8d, 0x26, 0xc5,
|
||||
0xbd, 0x8d, 0xa6, 0x31, 0xe5, 0xe1, 0xaf, 0x47, 0xd1, 0xef, 0x48, 0xa9, 0xbd, 0x69, 0xb8, 0x9d,
|
||||
0xd4, 0xe7, 0x6f, 0x58, 0x52, 0x4d, 0xe3, 0x8f, 0x7d, 0x76, 0xbc, 0xa8, 0x76, 0xfd, 0xf4, 0x2a,
|
||||
0x2a, 0xf8, 0xb1, 0xee, 0x67, 0xb5, 0x35, 0xe2, 0xbc, 0x8f, 0xd5, 0x41, 0xc2, 0x8f, 0x15, 0xa3,
|
||||
0x38, 0x80, 0x08, 0xb9, 0x5c, 0xa0, 0xdf, 0x23, 0xf5, 0xdd, 0x55, 0xfa, 0xfd, 0x5e, 0x0e, 0xc7,
|
||||
0xc7, 0x46, 0xe8, 0xf6, 0x96, 0x75, 0xca, 0x86, 0xbf, 0xc7, 0x8c, 0x87, 0xe2, 0xa4, 0x67, 0x3d,
|
||||
0x2a, 0xc2, 0x9e, 0x3b, 0x23, 0x63, 0x3c, 0x14, 0x27, 0x3c, 0x5b, 0x61, 0x2d, 0xe4, 0xd9, 0x13,
|
||||
0xda, 0xc6, 0x43, 0x71, 0x9c, 0x51, 0x28, 0xa6, 0x9d, 0x17, 0x1e, 0x05, 0xec, 0xe0, 0xb9, 0x61,
|
||||
0x6d, 0x10, 0xab, 0x1c, 0xfe, 0xed, 0x28, 0xfa, 0xbe, 0xf1, 0x78, 0xc0, 0xa6, 0xd9, 0xd9, 0x4a,
|
||||
0x42, 0xaf, 0x92, 0x7c, 0x01, 0x75, 0xfc, 0x94, 0xb2, 0xd6, 0x65, 0x75, 0x09, 0x9e, 0x5d, 0x49,
|
||||
0x07, 0x8f, 0x9d, 0xcd, 0xb2, 0xcc, 0x57, 0x27, 0x30, 0x2f, 0x73, 0x72, 0xec, 0x38, 0x48, 0x78,
|
||||
0xec, 0x60, 0x14, 0x67, 0x9a, 0x27, 0xac, 0xc9, 0x63, 0xbd, 0x99, 0xa6, 0x10, 0x85, 0x33, 0xcd,
|
||||
0x16, 0xc1, 0xb9, 0xd2, 0x09, 0xdb, 0x62, 0x79, 0x0e, 0x29, 0xef, 0x1e, 0x3c, 0x6a, 0x4d, 0x43,
|
||||
0x84, 0x73, 0x25, 0x44, 0x9a, 0x35, 0x7a, 0xbb, 0x2e, 0x4a, 0x2a, 0x78, 0xbe, 0xda, 0xcf, 0x8a,
|
||||
0x8b, 0xd8, 0x9f, 0x16, 0x18, 0x80, 0x58, 0xa3, 0x7b, 0x41, 0xbc, 0xfe, 0x3a, 0x2d, 0xa6, 0xcc,
|
||||
0xbf, 0xfe, 0x6a, 0x24, 0xe1, 0xf5, 0x97, 0x22, 0xb0, 0xc9, 0x63, 0xa0, 0x4c, 0x36, 0x92, 0xb0,
|
||||
0x49, 0x45, 0xf8, 0x42, 0xa1, 0xda, 0xc9, 0x25, 0x43, 0x21, 0xda, 0xbb, 0xbd, 0xdf, 0xcb, 0xe1,
|
||||
0x1e, 0xda, 0x2e, 0xc4, 0x76, 0x80, 0xa7, 0xe7, 0xfe, 0x1e, 0xea, 0x20, 0xe1, 0x1e, 0x8a, 0x51,
|
||||
0x5c, 0xa5, 0x13, 0xa6, 0x17, 0x92, 0xf7, 0xfc, 0xfd, 0xa3, 0xb3, 0x88, 0xbc, 0xdf, 0xcb, 0xe1,
|
||||
0xa5, 0xd1, 0xde, 0x5c, 0x3c, 0x33, 0x6f, 0x27, 0x97, 0xb2, 0xf0, 0xd2, 0x48, 0x33, 0xb8, 0xf4,
|
||||
0x52, 0xd0, 0x3c, 0x4e, 0x7f, 0xe9, 0x8d, 0x3c, 0x5c, 0x7a, 0x87, 0x53, 0x4e, 0xfe, 0x75, 0x14,
|
||||
0x5d, 0xb7, 0xbd, 0x1c, 0xb2, 0x66, 0x8c, 0xbc, 0x4a, 0xf2, 0x6c, 0x9a, 0x70, 0x38, 0x61, 0x17,
|
||||
0x50, 0xa0, 0xbd, 0x15, 0xb7, 0xb4, 0x92, 0x1f, 0x3b, 0x0a, 0xc4, 0xde, 0xca, 0x20, 0x45, 0xdc,
|
||||
0x4f, 0x24, 0x7d, 0x5a, 0xc3, 0x56, 0x52, 0x13, 0x91, 0xcc, 0x41, 0xc2, 0xfd, 0x04, 0xa3, 0x38,
|
||||
0x5f, 0x95, 0xf2, 0x17, 0x6f, 0x4b, 0xa8, 0x32, 0x28, 0x52, 0xf0, 0xe7, 0xab, 0x98, 0x0a, 0xe7,
|
||||
0xab, 0x1e, 0xba, 0xb3, 0xf5, 0xa0, 0x83, 0x53, 0xf7, 0xee, 0x00, 0x26, 0x02, 0x77, 0x07, 0x08,
|
||||
0x14, 0x57, 0xd2, 0x00, 0xde, 0xed, 0xbb, 0x8e, 0x95, 0xe0, 0xf6, 0x1d, 0x4d, 0x77, 0x36, 0x74,
|
||||
0x34, 0x33, 0x69, 0x86, 0x49, 0x4f, 0xd1, 0x27, 0xf6, 0x70, 0x59, 0x1b, 0xc4, 0xfa, 0x77, 0x90,
|
||||
0x8e, 0x21, 0x4f, 0xc4, 0x14, 0x12, 0xd8, 0xa6, 0x69, 0x99, 0x21, 0x3b, 0x48, 0x16, 0xab, 0x1c,
|
||||
0xfe, 0xe5, 0x28, 0xfa, 0xc8, 0xe7, 0xf1, 0x65, 0x29, 0xfc, 0x3e, 0xe9, 0xb7, 0x25, 0x49, 0xe2,
|
||||
0x72, 0x44, 0x58, 0x43, 0x95, 0xe1, 0x4f, 0xa3, 0x0f, 0x5b, 0x91, 0xb9, 0x3b, 0xa1, 0x0a, 0xe0,
|
||||
0x26, 0x50, 0xba, 0xfc, 0x98, 0xd3, 0xee, 0x37, 0x06, 0xf3, 0x66, 0x6d, 0xe2, 0x96, 0xab, 0x46,
|
||||
0x6b, 0x13, 0x6d, 0x43, 0x89, 0x89, 0xb5, 0x89, 0x07, 0xc3, 0x33, 0x75, 0x8b, 0x34, 0xe3, 0xc4,
|
||||
0x17, 0xe3, 0xb4, 0x09, 0x7b, 0x94, 0x3c, 0xe8, 0x07, 0x71, 0xdf, 0x69, 0xc5, 0x6a, 0x49, 0xf0,
|
||||
0x28, 0x64, 0x01, 0x2d, 0x0b, 0xd6, 0x06, 0xb1, 0xca, 0xe1, 0x9f, 0x47, 0xdf, 0xeb, 0x54, 0x6c,
|
||||
0x07, 0x12, 0xbe, 0xa8, 0x60, 0x1a, 0x6f, 0xf4, 0x94, 0xbb, 0x05, 0xb5, 0xeb, 0x27, 0xc3, 0x15,
|
||||
0x3a, 0xb9, 0x6b, 0xcb, 0xc9, 0x26, 0xd6, 0x65, 0x78, 0x1a, 0x32, 0xe9, 0xb2, 0xc1, 0xdc, 0x95,
|
||||
0xd6, 0xe9, 0x2c, 0x3f, 0xed, 0x8e, 0xbc, 0xb9, 0x4c, 0xb2, 0x5c, 0x1c, 0x69, 0x7c, 0x1c, 0x32,
|
||||
0xea, 0xa0, 0xc1, 0xe5, 0x27, 0xa9, 0xd2, 0x89, 0x92, 0x62, 0xbc, 0x59, 0xcb, 0x96, 0xc7, 0xf4,
|
||||
0xa8, 0xf4, 0xac, 0x5a, 0xd6, 0x07, 0xd2, 0xca, 0x2d, 0x6f, 0xb7, 0xed, 0x9a, 0x9f, 0xed, 0x4e,
|
||||
0xee, 0xf3, 0xaa, 0x54, 0x3d, 0x3d, 0x7d, 0x7d, 0x20, 0xad, 0xbc, 0xfe, 0x59, 0xf4, 0x61, 0xd7,
|
||||
0xab, 0x9a, 0x14, 0x36, 0x7a, 0x4d, 0xa1, 0x79, 0xe1, 0xc9, 0x70, 0x05, 0x93, 0xea, 0x7f, 0x99,
|
||||
0xd5, 0x9c, 0x55, 0xab, 0xc9, 0x39, 0xbb, 0x6c, 0xef, 0x07, 0xbb, 0xa3, 0x55, 0x01, 0x63, 0x8b,
|
||||
0x20, 0x52, 0x7d, 0x3f, 0xd9, 0x71, 0x65, 0xee, 0x11, 0xd7, 0x84, 0x2b, 0x8b, 0xe8, 0x71, 0xe5,
|
||||
0x92, 0x26, 0x56, 0xb5, 0xb5, 0x32, 0x97, 0x9e, 0xef, 0xfb, 0x8b, 0xda, 0xbd, 0xf8, 0xfc, 0xa0,
|
||||
0x1f, 0x34, 0xd9, 0x83, 0x12, 0x6f, 0x67, 0x67, 0x67, 0xba, 0x4e, 0xfe, 0x92, 0xda, 0x08, 0x91,
|
||||
0x3d, 0x10, 0xa8, 0x49, 0x46, 0x77, 0xb2, 0x1c, 0xc4, 0xf9, 0xd8, 0xcb, 0xb3, 0xb3, 0x9c, 0x25,
|
||||
0x53, 0x94, 0x8c, 0x36, 0xe2, 0xb1, 0x2d, 0x27, 0x92, 0x51, 0x1f, 0x67, 0xae, 0x17, 0x35, 0xd2,
|
||||
0x63, 0x48, 0x59, 0x91, 0x66, 0x39, 0xbe, 0x2e, 0x25, 0x34, 0xb5, 0x90, 0xb8, 0x5e, 0xd4, 0x81,
|
||||
0xcc, 0x24, 0xd5, 0x88, 0x9a, 0x61, 0xdf, 0x96, 0xff, 0x6e, 0x57, 0xd1, 0x12, 0x13, 0x93, 0x94,
|
||||
0x07, 0x33, 0x6b, 0xb2, 0x46, 0x78, 0x5a, 0x0a, 0xe3, 0x37, 0xba, 0x5a, 0x52, 0x42, 0xac, 0xc9,
|
||||
0x5c, 0xc2, 0xac, 0x2d, 0x9a, 0xdf, 0xb7, 0xd9, 0x65, 0x21, 0x8c, 0xde, 0xea, 0xaa, 0xb4, 0x32,
|
||||
0x62, 0x6d, 0x81, 0x19, 0x65, 0xf8, 0xc7, 0xd1, 0x2f, 0x0b, 0xc3, 0x15, 0x2b, 0xe3, 0x6b, 0x1e,
|
||||
0x85, 0xca, 0xba, 0xd9, 0x74, 0x9d, 0x94, 0x9b, 0x0b, 0x7a, 0xba, 0x6f, 0x9c, 0xd6, 0xc9, 0x0c,
|
||||
0xe2, 0x3b, 0x44, 0x8b, 0x0b, 0x29, 0x71, 0x41, 0xaf, 0x4b, 0xb9, 0xbd, 0xe2, 0x90, 0x4d, 0x95,
|
||||
0x75, 0x4f, 0x0d, 0xb5, 0x30, 0xd4, 0x2b, 0x6c, 0xc8, 0x1c, 0x97, 0x1c, 0x26, 0xcb, 0x6c, 0xa6,
|
||||
0x27, 0x1c, 0x19, 0xb7, 0x6a, 0x74, 0x5c, 0x62, 0x98, 0xb1, 0x05, 0x11, 0xc7, 0x25, 0x24, 0xac,
|
||||
0x7c, 0xfe, 0xcb, 0x28, 0xba, 0x61, 0x98, 0xdd, 0x76, 0x17, 0x6b, 0xaf, 0x38, 0x63, 0xaf, 0x33,
|
||||
0x7e, 0xbe, 0x9f, 0x15, 0x17, 0x75, 0xfc, 0x19, 0x65, 0xd2, 0xcf, 0xeb, 0xa2, 0x7c, 0x7e, 0x65,
|
||||
0x3d, 0x93, 0x41, 0xb6, 0x5b, 0x3c, 0xe6, 0xec, 0x52, 0x6a, 0xa0, 0x0c, 0x52, 0xef, 0x04, 0x61,
|
||||
0x8e, 0xc8, 0x20, 0x43, 0xbc, 0x69, 0x62, 0xed, 0x3c, 0x67, 0x05, 0x6e, 0x62, 0x63, 0xa1, 0x11,
|
||||
0x12, 0x4d, 0xdc, 0x81, 0x4c, 0x3c, 0x6e, 0x45, 0x72, 0x37, 0x62, 0x33, 0xcf, 0x51, 0x3c, 0xd6,
|
||||
0xaa, 0x1a, 0x20, 0xe2, 0xb1, 0x17, 0x54, 0x7e, 0x8e, 0xa3, 0xef, 0x34, 0x8f, 0xf4, 0xa8, 0x82,
|
||||
0x65, 0x06, 0xf8, 0x98, 0xdd, 0x92, 0x10, 0xe3, 0xdf, 0x25, 0xcc, 0xc8, 0x3a, 0x2d, 0xea, 0x32,
|
||||
0x4f, 0xea, 0x73, 0x75, 0xf0, 0xea, 0xd6, 0xb9, 0x15, 0xe2, 0xa3, 0xd7, 0xbb, 0x3d, 0x94, 0x09,
|
||||
0xea, 0xad, 0x4c, 0x87, 0x98, 0x7b, 0x7e, 0xd5, 0x4e, 0x98, 0xb9, 0xdf, 0xcb, 0x99, 0x9d, 0xe0,
|
||||
0xdd, 0x24, 0xcf, 0xa1, 0x5a, 0xb5, 0xb2, 0x83, 0xa4, 0xc8, 0xce, 0xa0, 0xe6, 0x68, 0x27, 0x58,
|
||||
0x51, 0x63, 0x8c, 0x11, 0x3b, 0xc1, 0x01, 0xdc, 0x64, 0xf3, 0xc8, 0xf3, 0x5e, 0x31, 0x85, 0xb7,
|
||||
0x28, 0x9b, 0xc7, 0x76, 0x04, 0x43, 0x64, 0xf3, 0x14, 0x6b, 0x76, 0x44, 0x9f, 0xe7, 0x2c, 0xbd,
|
||||
0x50, 0x53, 0x80, 0xdb, 0xc0, 0x42, 0x82, 0xe7, 0x80, 0x5b, 0x21, 0xc4, 0x4c, 0x02, 0x42, 0x70,
|
||||
0x0c, 0x65, 0x9e, 0xa4, 0xf8, 0xae, 0x85, 0xd4, 0x51, 0x32, 0x62, 0x12, 0xc0, 0x0c, 0x2a, 0xae,
|
||||
0xba, 0xc3, 0xe1, 0x2b, 0x2e, 0xba, 0xc2, 0x71, 0x2b, 0x84, 0x98, 0x69, 0x50, 0x08, 0x26, 0x65,
|
||||
0x9e, 0x71, 0x34, 0x0c, 0xa4, 0x86, 0x90, 0x10, 0xc3, 0xc0, 0x25, 0x90, 0xc9, 0x03, 0xa8, 0x66,
|
||||
0xe0, 0x35, 0x29, 0x24, 0x41, 0x93, 0x2d, 0x61, 0xae, 0xe4, 0xc9, 0xba, 0xb3, 0x72, 0x85, 0xae,
|
||||
0xe4, 0xa9, 0x6a, 0xb1, 0x72, 0x45, 0x5c, 0xc9, 0x73, 0x00, 0x54, 0xc4, 0xa3, 0xa4, 0xe6, 0xfe,
|
||||
0x22, 0x0a, 0x49, 0xb0, 0x88, 0x2d, 0x61, 0xe6, 0x68, 0x59, 0xc4, 0x05, 0x47, 0x73, 0xb4, 0x2a,
|
||||
0x80, 0x75, 0x32, 0x7b, 0x9d, 0x94, 0x9b, 0x48, 0x22, 0x5b, 0x05, 0xf8, 0x4e, 0x06, 0xf9, 0xb4,
|
||||
0x46, 0x91, 0x44, 0x3d, 0xf7, 0x56, 0x4a, 0x44, 0x92, 0x2e, 0x85, 0xba, 0x92, 0xda, 0x37, 0xf6,
|
||||
0xd5, 0x0e, 0x6d, 0x19, 0xdf, 0x0a, 0x21, 0x26, 0x3e, 0xb5, 0x85, 0xde, 0x4a, 0xaa, 0x2a, 0x6b,
|
||||
0x26, 0xff, 0x7b, 0xfe, 0x02, 0xb5, 0x72, 0x22, 0x3e, 0xf9, 0x38, 0x34, 0xbc, 0xda, 0xc0, 0xed,
|
||||
0x2b, 0x18, 0x0e, 0xdd, 0xb7, 0x83, 0x8c, 0xc9, 0x38, 0x85, 0xc4, 0x3a, 0x5a, 0xf4, 0x3d, 0x4d,
|
||||
0xcf, 0xc9, 0xe2, 0xbd, 0x3e, 0xcc, 0xba, 0x32, 0xaf, 0x5d, 0x1c, 0xb0, 0x25, 0x9c, 0xb0, 0x17,
|
||||
0x6f, 0xb3, 0x9a, 0x67, 0xc5, 0x4c, 0xcd, 0xdc, 0xcf, 0x08, 0x4b, 0x3e, 0x98, 0xb8, 0x32, 0xdf,
|
||||
0xab, 0x64, 0x12, 0x08, 0x54, 0x96, 0x43, 0xb8, 0xf4, 0x26, 0x10, 0xd8, 0xa2, 0xe6, 0x88, 0x04,
|
||||
0x22, 0xc4, 0x9b, 0x7d, 0x14, 0xed, 0x5c, 0xbd, 0x57, 0x78, 0xc2, 0xda, 0x5c, 0x8e, 0xb2, 0x86,
|
||||
0x41, 0x62, 0x29, 0x1b, 0x54, 0x30, 0xeb, 0x4b, 0xed, 0xdf, 0x0c, 0xb1, 0x07, 0x84, 0x9d, 0xee,
|
||||
0x30, 0x7b, 0x38, 0x80, 0xf4, 0xb8, 0x32, 0xe7, 0xe3, 0x94, 0xab, 0xee, 0xf1, 0xf8, 0xc3, 0x01,
|
||||
0xa4, 0xb5, 0x27, 0x63, 0x57, 0xeb, 0x79, 0x92, 0x5e, 0xcc, 0x2a, 0xb6, 0x28, 0xa6, 0x5b, 0x2c,
|
||||
0x67, 0x15, 0xda, 0x93, 0x71, 0x4a, 0x8d, 0x50, 0x62, 0x4f, 0xa6, 0x47, 0xc5, 0x64, 0x70, 0x76,
|
||||
0x29, 0x36, 0xf3, 0x6c, 0x86, 0x57, 0xd4, 0x8e, 0x21, 0x01, 0x10, 0x19, 0x9c, 0x17, 0xf4, 0x74,
|
||||
0x22, 0xb9, 0xe2, 0xe6, 0x59, 0x9a, 0xe4, 0xd2, 0xdf, 0x06, 0x6d, 0xc6, 0x01, 0x7b, 0x3b, 0x91,
|
||||
0x47, 0xc1, 0x53, 0xcf, 0x93, 0x45, 0x55, 0xec, 0x15, 0x9c, 0x91, 0xf5, 0x6c, 0x81, 0xde, 0x7a,
|
||||
0x5a, 0x20, 0x0a, 0xab, 0x27, 0xf0, 0xb6, 0x29, 0x4d, 0xf3, 0x8f, 0x2f, 0xac, 0x36, 0xbf, 0x8f,
|
||||
0x95, 0x3c, 0x14, 0x56, 0x11, 0x87, 0x2a, 0xa3, 0x9c, 0xc8, 0x0e, 0x13, 0xd0, 0x76, 0xbb, 0xc9,
|
||||
0x83, 0x7e, 0xd0, 0xef, 0x67, 0xc2, 0x57, 0x39, 0x84, 0xfc, 0x08, 0x60, 0x88, 0x9f, 0x16, 0x34,
|
||||
0xdb, 0x2d, 0x4e, 0x7d, 0xce, 0x21, 0xbd, 0xe8, 0x5c, 0xf7, 0x71, 0x0b, 0x2a, 0x11, 0x62, 0xbb,
|
||||
0x85, 0x40, 0xfd, 0x4d, 0xb4, 0x97, 0xb2, 0x22, 0xd4, 0x44, 0x8d, 0x7c, 0x48, 0x13, 0x29, 0xce,
|
||||
0x2c, 0x7e, 0xb5, 0x54, 0xf5, 0x4c, 0xd9, 0x4c, 0x6b, 0x84, 0x05, 0x1b, 0x22, 0x16, 0xbf, 0x24,
|
||||
0x6c, 0x72, 0x72, 0xec, 0xf3, 0xa0, 0x7b, 0xbf, 0xb7, 0x63, 0xe5, 0x80, 0xbe, 0xdf, 0x4b, 0xb1,
|
||||
0x74, 0x25, 0x65, 0x1f, 0xe9, 0xb1, 0xe2, 0xf6, 0x93, 0xc7, 0xc3, 0x60, 0xb3, 0xe4, 0x71, 0x7c,
|
||||
0x6e, 0xe5, 0x90, 0x54, 0xd2, 0xeb, 0x7a, 0xc0, 0x90, 0xc1, 0x88, 0x25, 0x4f, 0x00, 0x47, 0x21,
|
||||
0xcc, 0xf1, 0xbc, 0xc5, 0x0a, 0x0e, 0x05, 0xf7, 0x85, 0x30, 0xd7, 0x98, 0x02, 0x43, 0x21, 0x8c,
|
||||
0x52, 0x40, 0xfd, 0x56, 0xec, 0x07, 0x01, 0x3f, 0x4c, 0xe6, 0xde, 0x8c, 0x4d, 0xee, 0xf5, 0x48,
|
||||
0x79, 0xa8, 0xdf, 0x22, 0xce, 0x3a, 0x70, 0xb3, 0xbd, 0x9c, 0x24, 0xd5, 0x4c, 0xef, 0x6e, 0x4c,
|
||||
0xe3, 0x27, 0xb4, 0x1d, 0x97, 0x24, 0x0e, 0xdc, 0xc2, 0x1a, 0x28, 0xec, 0xec, 0xcd, 0x93, 0x99,
|
||||
0xae, 0xa9, 0xa7, 0x06, 0x42, 0xde, 0xa9, 0xea, 0x83, 0x7e, 0x10, 0xf9, 0x79, 0x95, 0x4d, 0x81,
|
||||
0x05, 0xfc, 0x08, 0xf9, 0x10, 0x3f, 0x18, 0x44, 0xd9, 0x5b, 0x53, 0x6f, 0xb9, 0xa2, 0xdb, 0x2c,
|
||||
0xa6, 0x6a, 0x1d, 0x3b, 0x26, 0x1e, 0x0f, 0xe2, 0x42, 0xd9, 0x1b, 0xc1, 0xa3, 0x31, 0xda, 0x6e,
|
||||
0xd0, 0x86, 0xc6, 0xa8, 0xde, 0x7f, 0x1d, 0x32, 0x46, 0x7d, 0xb0, 0xf2, 0xf9, 0x53, 0x35, 0x46,
|
||||
0xb7, 0x13, 0x9e, 0x34, 0x79, 0xfb, 0xab, 0x0c, 0x2e, 0xd5, 0x42, 0xd8, 0x53, 0xdf, 0x96, 0x1a,
|
||||
0x8b, 0x17, 0xbb, 0xd0, 0xaa, 0x78, 0x63, 0x30, 0x1f, 0xf0, 0xad, 0x56, 0x08, 0xbd, 0xbe, 0xd1,
|
||||
0x52, 0x61, 0x63, 0x30, 0x1f, 0xf0, 0xad, 0xde, 0x18, 0xed, 0xf5, 0x8d, 0x5e, 0x1b, 0xdd, 0x18,
|
||||
0xcc, 0x2b, 0xdf, 0x7f, 0xd5, 0x0e, 0x5c, 0xdb, 0x79, 0x93, 0x87, 0xa5, 0x3c, 0x5b, 0x82, 0x2f,
|
||||
0x9d, 0x74, 0xed, 0x69, 0x34, 0x94, 0x4e, 0xd2, 0x2a, 0xd6, 0x67, 0x46, 0x7c, 0xa5, 0x38, 0x62,
|
||||
0x75, 0x26, 0x0e, 0xcc, 0x9f, 0x0d, 0x30, 0xda, 0xc2, 0xa1, 0x45, 0x53, 0x48, 0xc9, 0x1c, 0x37,
|
||||
0x3a, 0xa8, 0xb9, 0xdd, 0xfb, 0x38, 0x60, 0xaf, 0x7b, 0xc9, 0x77, 0x7d, 0x20, 0x6d, 0x0e, 0xfe,
|
||||
0x1c, 0xc6, 0x3e, 0x71, 0x0c, 0xb5, 0xaa, 0xf7, 0xd0, 0xf1, 0xc9, 0x70, 0x05, 0xe5, 0xfe, 0x6f,
|
||||
0xda, 0x75, 0x05, 0xf6, 0xaf, 0x06, 0xc1, 0xd3, 0x21, 0x16, 0xd1, 0x40, 0x78, 0x76, 0x25, 0x1d,
|
||||
0x55, 0x90, 0xff, 0x18, 0x45, 0xb7, 0xbc, 0x05, 0x71, 0xcf, 0x9e, 0x7f, 0x77, 0x88, 0x6d, 0xff,
|
||||
0x19, 0xf4, 0x17, 0xdf, 0x46, 0x55, 0x95, 0xee, 0x1f, 0xda, 0xe5, 0x7d, 0xab, 0x21, 0xde, 0xc0,
|
||||
0x78, 0x59, 0x4d, 0xa1, 0x52, 0x23, 0x36, 0xd4, 0xe9, 0x0c, 0x8c, 0xc7, 0xed, 0xa7, 0x57, 0xd4,
|
||||
0xb2, 0x3e, 0x89, 0xe3, 0xc0, 0xea, 0xed, 0x37, 0xab, 0x3c, 0x21, 0xcb, 0x16, 0x8d, 0x0b, 0xf4,
|
||||
0xd9, 0x55, 0xd5, 0xa8, 0x91, 0x6c, 0xc1, 0xe2, 0x0d, 0xfb, 0x67, 0x03, 0x0d, 0x3b, 0xef, 0xdc,
|
||||
0x7f, 0x72, 0x35, 0x25, 0x55, 0x96, 0xff, 0x1a, 0x45, 0x77, 0x1d, 0xd6, 0x9c, 0x76, 0xa0, 0x3d,
|
||||
0x99, 0x1f, 0x05, 0xec, 0x53, 0x4a, 0xba, 0x70, 0xbf, 0xf7, 0xed, 0x94, 0xcd, 0xf7, 0x63, 0x1c,
|
||||
0x95, 0x9d, 0x2c, 0xe7, 0x50, 0x75, 0xbf, 0x1f, 0xe3, 0xda, 0x95, 0xd4, 0x98, 0xfe, 0x7e, 0x4c,
|
||||
0x00, 0xb7, 0xbe, 0x1f, 0xe3, 0xf1, 0xec, 0xfd, 0x7e, 0x8c, 0xd7, 0x5a, 0xf0, 0xfb, 0x31, 0x61,
|
||||
0x0d, 0x6a, 0xf2, 0x69, 0x8b, 0x20, 0x77, 0xd5, 0x07, 0x59, 0x74, 0x37, 0xd9, 0x9f, 0x5e, 0x45,
|
||||
0x85, 0x98, 0x7e, 0x25, 0x27, 0x6e, 0xc4, 0x0d, 0x78, 0xa6, 0xce, 0xad, 0xb8, 0x8d, 0xc1, 0xbc,
|
||||
0xf2, 0xfd, 0x13, 0xb5, 0xf6, 0xd2, 0x93, 0x0d, 0xab, 0xc4, 0xb7, 0x83, 0xd6, 0x42, 0x93, 0x47,
|
||||
0x63, 0xc1, 0x6e, 0xf9, 0xc7, 0xc3, 0x60, 0xa2, 0xba, 0x0d, 0xa1, 0x1a, 0x7d, 0xdc, 0x67, 0x08,
|
||||
0x35, 0xf9, 0xc6, 0x60, 0x9e, 0x98, 0xe4, 0xa4, 0x6f, 0xd9, 0xda, 0x03, 0x8c, 0xb9, 0x6d, 0xfd,
|
||||
0x64, 0xb8, 0x82, 0x72, 0xbf, 0x54, 0x49, 0xad, 0xed, 0x5e, 0xb4, 0xf3, 0x7a, 0x9f, 0xa9, 0x89,
|
||||
0xd3, 0xcc, 0xe3, 0xa1, 0x78, 0x28, 0xbd, 0xb1, 0x27, 0xf8, 0xbe, 0xf4, 0xc6, 0x3b, 0xc9, 0x7f,
|
||||
0x72, 0x35, 0x25, 0x55, 0x96, 0x7f, 0x1e, 0x45, 0xd7, 0xc9, 0xb2, 0xa8, 0x7e, 0xf0, 0xd9, 0x50,
|
||||
0xcb, 0xa8, 0x3f, 0x7c, 0x7e, 0x65, 0x3d, 0x55, 0xa8, 0x7f, 0x1b, 0x45, 0x37, 0x02, 0x85, 0x92,
|
||||
0x1d, 0xe4, 0x0a, 0xd6, 0xdd, 0x8e, 0xf2, 0xc3, 0xab, 0x2b, 0x52, 0xd3, 0xbd, 0x8d, 0x4f, 0xba,
|
||||
0x1f, 0x56, 0x09, 0xd8, 0x9e, 0xd0, 0x1f, 0x56, 0xe9, 0xd7, 0xc2, 0x5b, 0x50, 0x4d, 0x52, 0xa2,
|
||||
0x56, 0x46, 0xbe, 0x2d, 0x28, 0x91, 0xb3, 0xa0, 0x15, 0xd1, 0xfd, 0x5e, 0xce, 0xe7, 0xe4, 0xc5,
|
||||
0xdb, 0x32, 0x29, 0xa6, 0xb4, 0x13, 0x29, 0xef, 0x77, 0xa2, 0x39, 0xbc, 0x75, 0xd7, 0x48, 0x8f,
|
||||
0x59, 0xbb, 0xcc, 0x7b, 0x48, 0xe9, 0x6b, 0x24, 0xb8, 0x75, 0xd7, 0x41, 0x09, 0x6f, 0x2a, 0xa7,
|
||||
0x0d, 0x79, 0x43, 0xa9, 0xec, 0xa3, 0x21, 0x28, 0x5a, 0x40, 0x68, 0x6f, 0xfa, 0x44, 0xe0, 0x71,
|
||||
0xc8, 0x4a, 0xe7, 0x54, 0x60, 0x7d, 0x20, 0x4d, 0xb8, 0x9d, 0x00, 0xff, 0x12, 0x92, 0x29, 0x54,
|
||||
0x41, 0xb7, 0x9a, 0x1a, 0xe4, 0xd6, 0xa6, 0x7d, 0x6e, 0xb7, 0x58, 0xbe, 0x98, 0x17, 0xaa, 0x31,
|
||||
0x49, 0xb7, 0x36, 0xd5, 0xef, 0x16, 0xd1, 0x78, 0xd3, 0xd2, 0xb8, 0x15, 0xe9, 0xe5, 0xa3, 0xb0,
|
||||
0x19, 0x27, 0xab, 0x5c, 0x1b, 0xc4, 0xd2, 0xf5, 0x54, 0xdd, 0xa8, 0xa7, 0x9e, 0xa8, 0x27, 0xad,
|
||||
0x0f, 0xa4, 0xf1, 0xee, 0xa1, 0xe5, 0x56, 0xf7, 0xa7, 0x8d, 0x1e, 0x5b, 0x9d, 0x2e, 0xf5, 0x64,
|
||||
0xb8, 0x02, 0xde, 0xab, 0x55, 0xbd, 0xaa, 0x59, 0x17, 0xed, 0x64, 0x79, 0x1e, 0xaf, 0x05, 0xba,
|
||||
0x49, 0x0b, 0x05, 0xf7, 0x6a, 0x3d, 0x30, 0xd1, 0x93, 0xdb, 0xbd, 0xcd, 0x22, 0xee, 0xb3, 0x23,
|
||||
0xa8, 0x41, 0x3d, 0xd9, 0xa6, 0xd1, 0x7e, 0x9b, 0xf5, 0xa8, 0x75, 0x6d, 0xc7, 0xe1, 0x07, 0xd7,
|
||||
0xa9, 0xf0, 0xc6, 0x60, 0x1e, 0x5d, 0x06, 0x10, 0x94, 0x98, 0x59, 0xee, 0x50, 0x26, 0x9c, 0x99,
|
||||
0xe4, 0x6e, 0x0f, 0x85, 0xf6, 0x2c, 0xe5, 0x30, 0x7a, 0x9d, 0x4d, 0x67, 0xc0, 0xbd, 0xe7, 0x58,
|
||||
0x36, 0x10, 0x3c, 0xc7, 0x42, 0x20, 0x6a, 0x3a, 0xf9, 0xbb, 0xde, 0xac, 0xdd, 0x9b, 0xfa, 0x9a,
|
||||
0x4e, 0x29, 0x5b, 0x54, 0xa8, 0xe9, 0xbc, 0x34, 0x8a, 0x06, 0xda, 0xad, 0x7a, 0x89, 0xfe, 0x51,
|
||||
0xc8, 0x0c, 0x7a, 0x93, 0x7e, 0x6d, 0x10, 0x8b, 0x66, 0x14, 0xe3, 0x30, 0x9b, 0x67, 0xdc, 0x37,
|
||||
0xa3, 0x58, 0x36, 0x1a, 0x24, 0x34, 0xa3, 0x74, 0x51, 0xaa, 0x7a, 0x4d, 0x8e, 0xb0, 0x37, 0x0d,
|
||||
0x57, 0x4f, 0x32, 0xc3, 0xaa, 0xa7, 0xd9, 0xce, 0xb1, 0x6b, 0xa1, 0xbb, 0x0c, 0x3f, 0x57, 0x8b,
|
||||
0x65, 0x4f, 0xdf, 0x16, 0x2f, 0x57, 0x62, 0x30, 0x14, 0x75, 0x28, 0x05, 0x7c, 0x9c, 0xd0, 0x70,
|
||||
0xed, 0xc9, 0x70, 0x59, 0x42, 0x52, 0x25, 0x45, 0xea, 0x5d, 0x9c, 0x0a, 0x83, 0x1d, 0x32, 0xb4,
|
||||
0x38, 0x25, 0x35, 0xd0, 0xa1, 0xbe, 0xfb, 0x5a, 0xa4, 0x67, 0x28, 0xe8, 0xf7, 0x0f, 0xdd, 0xb7,
|
||||
0x22, 0x1f, 0x0e, 0x20, 0xf1, 0xa1, 0x7e, 0x0b, 0xe8, 0x6d, 0x79, 0xe9, 0xf4, 0xe3, 0x80, 0x29,
|
||||
0x17, 0x0d, 0x2d, 0x84, 0x69, 0x15, 0xd4, 0xa9, 0x75, 0x82, 0x0b, 0xfc, 0xc7, 0xb0, 0xf2, 0x75,
|
||||
0x6a, 0x93, 0x9f, 0x0a, 0x24, 0xd4, 0xa9, 0xbb, 0x28, 0xca, 0x33, 0xed, 0x75, 0xd0, 0xbd, 0x80,
|
||||
0xbe, 0xbd, 0xf4, 0xb9, 0xdf, 0xcb, 0xa1, 0x91, 0xb3, 0x9d, 0x2d, 0x9d, 0x53, 0x0c, 0x4f, 0x41,
|
||||
0xb7, 0xb3, 0xa5, 0xff, 0x10, 0x63, 0x6d, 0x10, 0x8b, 0x2f, 0x0c, 0x24, 0x1c, 0xde, 0xb6, 0x27,
|
||||
0xf9, 0x9e, 0xe2, 0x0a, 0x79, 0xe7, 0x28, 0xff, 0x41, 0x3f, 0x68, 0xae, 0xe7, 0x1e, 0x55, 0x2c,
|
||||
0x85, 0xba, 0x56, 0x5f, 0x9b, 0x73, 0xef, 0x3f, 0x29, 0xd9, 0x18, 0x7d, 0x6b, 0xee, 0x4e, 0x18,
|
||||
0x52, 0xb6, 0xbf, 0x8c, 0xde, 0xdd, 0x67, 0xb3, 0x09, 0x14, 0xd3, 0xf8, 0x07, 0xee, 0x85, 0x58,
|
||||
0x36, 0x1b, 0x37, 0x3f, 0x6b, 0x7b, 0xd7, 0x28, 0xb1, 0xb9, 0xd2, 0xb7, 0x0d, 0x6f, 0x16, 0xb3,
|
||||
0x09, 0x4f, 0x38, 0xba, 0xd2, 0x27, 0x7e, 0x1f, 0x37, 0x02, 0xe2, 0x4a, 0x9f, 0x03, 0x20, 0x7b,
|
||||
0x27, 0x15, 0x80, 0xd7, 0x5e, 0x23, 0x08, 0xda, 0x53, 0x80, 0x99, 0x75, 0xb5, 0xbd, 0x26, 0xb1,
|
||||
0xc5, 0x57, 0xf0, 0x8c, 0x8e, 0x90, 0x12, 0xb3, 0x6e, 0x97, 0x32, 0x9d, 0x41, 0x56, 0x5f, 0x7c,
|
||||
0x5b, 0x63, 0x31, 0x9f, 0x27, 0xd5, 0x0a, 0x75, 0x06, 0x55, 0x4b, 0x0b, 0x20, 0x3a, 0x83, 0x17,
|
||||
0x34, 0xbd, 0xbc, 0x7d, 0xcc, 0xe9, 0xc5, 0x2e, 0xab, 0xd8, 0x82, 0x67, 0x05, 0xe0, 0xef, 0x2b,
|
||||
0xe8, 0x07, 0x6a, 0x33, 0x44, 0x2f, 0xa7, 0x58, 0x93, 0x15, 0x0a, 0x42, 0xde, 0x0e, 0x14, 0xdf,
|
||||
0x6c, 0xad, 0x39, 0xab, 0xf0, 0xe9, 0xa0, 0xb4, 0x82, 0x21, 0x22, 0x2b, 0x24, 0x61, 0xd4, 0xf6,
|
||||
0x47, 0x59, 0x31, 0xf3, 0xb6, 0xfd, 0x91, 0xfd, 0xc5, 0xc3, 0x1b, 0x34, 0x60, 0xe2, 0xbb, 0x7c,
|
||||
0x68, 0xf2, 0x1b, 0x46, 0xea, 0x2d, 0x49, 0xef, 0x43, 0xb7, 0x09, 0x22, 0xbe, 0xfb, 0x49, 0xe4,
|
||||
0xea, 0x65, 0x09, 0x05, 0x4c, 0xdb, 0x3b, 0x70, 0x3e, 0x57, 0x0e, 0x11, 0x74, 0x85, 0x49, 0x13,
|
||||
0x55, 0x85, 0xfc, 0x78, 0x51, 0x1c, 0x55, 0xec, 0x2c, 0xcb, 0xa1, 0x42, 0x51, 0x55, 0xaa, 0x5b,
|
||||
0x72, 0x22, 0xaa, 0xfa, 0x38, 0x73, 0x99, 0x42, 0x48, 0x9d, 0x0f, 0x0f, 0x9f, 0x54, 0x49, 0x8a,
|
||||
0x2f, 0x53, 0x48, 0x1b, 0x5d, 0x8c, 0xd8, 0x49, 0x0b, 0xe0, 0xa6, 0xa7, 0x1f, 0x00, 0xaf, 0xb2,
|
||||
0xb4, 0x9e, 0x00, 0x3f, 0x4a, 0xaa, 0x64, 0x0e, 0x1c, 0x2a, 0xdc, 0xd3, 0x15, 0x32, 0x76, 0x18,
|
||||
0xa2, 0xa7, 0x53, 0xac, 0x72, 0xf8, 0xfb, 0xd1, 0xfb, 0x4d, 0xa0, 0x87, 0x42, 0x7d, 0x23, 0xff,
|
||||
0x85, 0xf8, 0xe3, 0x1a, 0xf1, 0x07, 0xda, 0xc6, 0x84, 0x57, 0x90, 0xcc, 0x5b, 0xdb, 0xef, 0xe9,
|
||||
0xdf, 0x05, 0xf8, 0x64, 0xd4, 0x34, 0xc8, 0x21, 0xe3, 0xd9, 0x59, 0xb3, 0xae, 0x52, 0xa7, 0x58,
|
||||
0xa8, 0x41, 0x6c, 0xf1, 0x38, 0xf0, 0xc9, 0x00, 0x1f, 0x67, 0x02, 0x8d, 0x2d, 0x3d, 0x86, 0x32,
|
||||
0xc7, 0x81, 0xc6, 0xd1, 0x16, 0x00, 0x11, 0x68, 0xbc, 0xa0, 0xe9, 0x5d, 0xb6, 0xf8, 0x04, 0xc2,
|
||||
0x95, 0x39, 0x81, 0x61, 0x95, 0x39, 0x71, 0xde, 0x11, 0xc8, 0xa3, 0xf7, 0x0f, 0x60, 0xfe, 0x06,
|
||||
0xaa, 0xfa, 0x3c, 0x2b, 0x77, 0x9b, 0x19, 0x36, 0xe1, 0x0b, 0xfc, 0x16, 0x9d, 0x21, 0xc6, 0x1a,
|
||||
0x21, 0xd2, 0x10, 0x02, 0x35, 0xa1, 0xcc, 0x00, 0x7b, 0xf5, 0x61, 0x32, 0x07, 0xf1, 0x01, 0x84,
|
||||
0x78, 0x8d, 0x32, 0x62, 0x41, 0x44, 0x28, 0x23, 0x61, 0xeb, 0x75, 0x23, 0xc3, 0x1c, 0xc3, 0xac,
|
||||
0xe9, 0x61, 0xd5, 0x51, 0xb2, 0x9a, 0x43, 0xc1, 0x95, 0x49, 0xb4, 0x09, 0x6b, 0x99, 0xf4, 0xf3,
|
||||
0xc4, 0x26, 0xec, 0x10, 0x3d, 0x2b, 0xe9, 0x76, 0x1e, 0xfc, 0x11, 0xab, 0xb8, 0xfc, 0x0b, 0x18,
|
||||
0xa7, 0x55, 0x8e, 0x92, 0x6e, 0xf7, 0xa1, 0x3a, 0x24, 0x91, 0x74, 0x87, 0x35, 0xac, 0x4f, 0x47,
|
||||
0x3b, 0x65, 0x78, 0x05, 0x95, 0xee, 0x27, 0x2f, 0xe6, 0x49, 0x96, 0xab, 0xde, 0xf0, 0x45, 0xc0,
|
||||
0x36, 0xa1, 0x43, 0x7c, 0x3a, 0x7a, 0xa8, 0xae, 0xf5, 0xb1, 0xed, 0x70, 0x09, 0xd1, 0x9e, 0x70,
|
||||
0x8f, 0x7d, 0x62, 0x4f, 0xb8, 0x5f, 0xcb, 0x2c, 0xd5, 0x0c, 0x2b, 0xb8, 0x95, 0x20, 0xb6, 0xd8,
|
||||
0x14, 0x6f, 0x10, 0x59, 0x36, 0x11, 0x48, 0x2c, 0xd5, 0x82, 0x0a, 0x66, 0x6e, 0x33, 0xd8, 0x4e,
|
||||
0x56, 0x24, 0x79, 0xf6, 0x53, 0x7c, 0xf7, 0xd9, 0xb2, 0xd3, 0x12, 0xc4, 0xdc, 0xe6, 0x27, 0x7d,
|
||||
0xae, 0x76, 0x81, 0x9f, 0x64, 0x4d, 0xe8, 0x7f, 0x10, 0x78, 0x6e, 0x82, 0xe8, 0x77, 0x65, 0x91,
|
||||
0xca, 0xd5, 0xcf, 0x46, 0xd1, 0x75, 0xfc, 0x58, 0x37, 0xcb, 0x72, 0xd2, 0xa4, 0x24, 0xc7, 0x90,
|
||||
0x42, 0x56, 0xf2, 0xf8, 0xd3, 0xf0, 0xb3, 0x42, 0x38, 0x71, 0xb2, 0x3e, 0x40, 0xcd, 0x3a, 0xaf,
|
||||
0x6d, 0x62, 0xc9, 0x44, 0xfe, 0x69, 0xa8, 0xd3, 0x1a, 0x2a, 0x35, 0x53, 0xee, 0x02, 0x47, 0xa3,
|
||||
0xd3, 0xe2, 0xc6, 0x16, 0xd8, 0x54, 0x94, 0x18, 0x9d, 0x61, 0x0d, 0xb3, 0xbb, 0x63, 0x71, 0xc7,
|
||||
0x50, 0xb3, 0x7c, 0x09, 0xe2, 0xfa, 0xdb, 0x63, 0xd2, 0x98, 0x45, 0x11, 0xbb, 0x3b, 0x34, 0x6d,
|
||||
0xd2, 0x8d, 0xae, 0xdb, 0xcd, 0x62, 0xb5, 0x87, 0xcf, 0xc8, 0x3d, 0x96, 0x04, 0x46, 0xa4, 0x1b,
|
||||
0x01, 0xdc, 0xda, 0xfd, 0xac, 0x58, 0x32, 0x4d, 0x93, 0x9a, 0x1f, 0x25, 0xab, 0x9c, 0x25, 0x53,
|
||||
0x31, 0xaf, 0xe3, 0xdd, 0xcf, 0x96, 0x19, 0xdb, 0x10, 0xb5, 0xfb, 0x49, 0xc1, 0x66, 0x65, 0xa7,
|
||||
0xfe, 0xe2, 0x95, 0xba, 0x5a, 0x78, 0x1b, 0xe5, 0x48, 0xa2, 0xbc, 0xf8, 0x5a, 0xe1, 0x9d, 0x30,
|
||||
0x64, 0x5e, 0x89, 0x92, 0x22, 0x91, 0x86, 0xdc, 0xf0, 0xe9, 0x38, 0x09, 0xc8, 0xcd, 0x00, 0x61,
|
||||
0x3e, 0x93, 0x20, 0x7f, 0x6f, 0xff, 0x68, 0x03, 0x57, 0x1f, 0xd1, 0x7d, 0xec, 0xd3, 0xb5, 0xa1,
|
||||
0xb1, 0xfd, 0x1d, 0xb2, 0xf5, 0x81, 0xb4, 0xf4, 0xfa, 0xfc, 0xe6, 0x7f, 0x7f, 0x7d, 0x6d, 0xf4,
|
||||
0xf3, 0xaf, 0xaf, 0x8d, 0xfe, 0xff, 0xeb, 0x6b, 0xa3, 0x9f, 0x7d, 0x73, 0xed, 0x9d, 0x9f, 0x7f,
|
||||
0x73, 0xed, 0x9d, 0xff, 0xfd, 0xe6, 0xda, 0x3b, 0x5f, 0xbd, 0xab, 0xfe, 0x74, 0xda, 0x9b, 0x5f,
|
||||
0x12, 0x7f, 0x00, 0xed, 0xd9, 0x2f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, 0xe4, 0x86, 0x5e,
|
||||
0x6d, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
|
@ -435,6 +437,7 @@ type ClientCommandsClient interface {
|
|||
ObjectListSetIsFavorite(ctx context.Context, in *pb.RpcObjectListSetIsFavoriteRequest, opts ...grpc.CallOption) (*pb.RpcObjectListSetIsFavoriteResponse, error)
|
||||
ObjectListSetObjectType(ctx context.Context, in *pb.RpcObjectListSetObjectTypeRequest, opts ...grpc.CallOption) (*pb.RpcObjectListSetObjectTypeResponse, error)
|
||||
ObjectListSetDetails(ctx context.Context, in *pb.RpcObjectListSetDetailsRequest, opts ...grpc.CallOption) (*pb.RpcObjectListSetDetailsResponse, error)
|
||||
ObjectListModifyDetailValues(ctx context.Context, in *pb.RpcObjectListModifyDetailValuesRequest, opts ...grpc.CallOption) (*pb.RpcObjectListModifyDetailValuesResponse, error)
|
||||
ObjectApplyTemplate(ctx context.Context, in *pb.RpcObjectApplyTemplateRequest, opts ...grpc.CallOption) (*pb.RpcObjectApplyTemplateResponse, error)
|
||||
// ObjectToSet creates new set from given object and removes object
|
||||
ObjectToSet(ctx context.Context, in *pb.RpcObjectToSetRequest, opts ...grpc.CallOption) (*pb.RpcObjectToSetResponse, error)
|
||||
|
@ -1334,6 +1337,15 @@ func (c *clientCommandsClient) ObjectListSetDetails(ctx context.Context, in *pb.
|
|||
return out, nil
|
||||
}
|
||||
|
||||
func (c *clientCommandsClient) ObjectListModifyDetailValues(ctx context.Context, in *pb.RpcObjectListModifyDetailValuesRequest, opts ...grpc.CallOption) (*pb.RpcObjectListModifyDetailValuesResponse, error) {
|
||||
out := new(pb.RpcObjectListModifyDetailValuesResponse)
|
||||
err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ObjectListModifyDetailValues", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *clientCommandsClient) ObjectApplyTemplate(ctx context.Context, in *pb.RpcObjectApplyTemplateRequest, opts ...grpc.CallOption) (*pb.RpcObjectApplyTemplateResponse, error) {
|
||||
out := new(pb.RpcObjectApplyTemplateResponse)
|
||||
err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ObjectApplyTemplate", in, out, opts...)
|
||||
|
@ -3030,6 +3042,7 @@ type ClientCommandsServer interface {
|
|||
ObjectListSetIsFavorite(context.Context, *pb.RpcObjectListSetIsFavoriteRequest) *pb.RpcObjectListSetIsFavoriteResponse
|
||||
ObjectListSetObjectType(context.Context, *pb.RpcObjectListSetObjectTypeRequest) *pb.RpcObjectListSetObjectTypeResponse
|
||||
ObjectListSetDetails(context.Context, *pb.RpcObjectListSetDetailsRequest) *pb.RpcObjectListSetDetailsResponse
|
||||
ObjectListModifyDetailValues(context.Context, *pb.RpcObjectListModifyDetailValuesRequest) *pb.RpcObjectListModifyDetailValuesResponse
|
||||
ObjectApplyTemplate(context.Context, *pb.RpcObjectApplyTemplateRequest) *pb.RpcObjectApplyTemplateResponse
|
||||
// ObjectToSet creates new set from given object and removes object
|
||||
ObjectToSet(context.Context, *pb.RpcObjectToSetRequest) *pb.RpcObjectToSetResponse
|
||||
|
@ -3481,6 +3494,9 @@ func (*UnimplementedClientCommandsServer) ObjectListSetObjectType(ctx context.Co
|
|||
func (*UnimplementedClientCommandsServer) ObjectListSetDetails(ctx context.Context, req *pb.RpcObjectListSetDetailsRequest) *pb.RpcObjectListSetDetailsResponse {
|
||||
return nil
|
||||
}
|
||||
func (*UnimplementedClientCommandsServer) ObjectListModifyDetailValues(ctx context.Context, req *pb.RpcObjectListModifyDetailValuesRequest) *pb.RpcObjectListModifyDetailValuesResponse {
|
||||
return nil
|
||||
}
|
||||
func (*UnimplementedClientCommandsServer) ObjectApplyTemplate(ctx context.Context, req *pb.RpcObjectApplyTemplateRequest) *pb.RpcObjectApplyTemplateResponse {
|
||||
return nil
|
||||
}
|
||||
|
@ -5346,6 +5362,24 @@ func _ClientCommands_ObjectListSetDetails_Handler(srv interface{}, ctx context.C
|
|||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _ClientCommands_ObjectListModifyDetailValues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(pb.RpcObjectListModifyDetailValuesRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(ClientCommandsServer).ObjectListModifyDetailValues(ctx, in), nil
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/anytype.ClientCommands/ObjectListModifyDetailValues",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(ClientCommandsServer).ObjectListModifyDetailValues(ctx, req.(*pb.RpcObjectListModifyDetailValuesRequest)), nil
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _ClientCommands_ObjectApplyTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(pb.RpcObjectApplyTemplateRequest)
|
||||
if err := dec(in); err != nil {
|
||||
|
@ -8818,6 +8852,10 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{
|
|||
MethodName: "ObjectListSetDetails",
|
||||
Handler: _ClientCommands_ObjectListSetDetails_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "ObjectListModifyDetailValues",
|
||||
Handler: _ClientCommands_ObjectListModifyDetailValues_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "ObjectApplyTemplate",
|
||||
Handler: _ClientCommands_ObjectApplyTemplate_Handler,
|
||||
|
|
|
@ -88,7 +88,14 @@ func makeFilter(spaceID string, rawFilter *model.BlockContentDataviewFilter, sto
|
|||
func makeFilterByCondition(spaceID string, rawFilter *model.BlockContentDataviewFilter, store ObjectStore) (Filter, error) {
|
||||
parts := strings.SplitN(rawFilter.RelationKey, ".", 2)
|
||||
if len(parts) == 2 {
|
||||
return makeFilterNestedIn(spaceID, rawFilter, store, parts[0], parts[1])
|
||||
relationKey := parts[0]
|
||||
nestedRelationKey := parts[1]
|
||||
|
||||
if rawFilter.Condition == model.BlockContentDataviewFilter_NotEqual {
|
||||
return makeFilterNestedNotIn(spaceID, rawFilter, store, relationKey, nestedRelationKey)
|
||||
} else {
|
||||
return makeFilterNestedIn(spaceID, rawFilter, store, relationKey, nestedRelationKey)
|
||||
}
|
||||
}
|
||||
|
||||
// replaces "value == false" to "value != true" for expected work with checkboxes
|
||||
|
@ -310,6 +317,12 @@ func negateFilter(filter query.Filter) query.Filter {
|
|||
}
|
||||
return negated
|
||||
case query.Key:
|
||||
if nested, ok := v.Filter.(query.Not); ok {
|
||||
return query.Key{
|
||||
Path: v.Path,
|
||||
Filter: nested.Filter,
|
||||
}
|
||||
}
|
||||
return query.Key{
|
||||
Path: v.Path,
|
||||
Filter: query.Not{
|
||||
|
@ -342,16 +355,7 @@ func (e FilterEq) AnystoreFilter() query.Filter {
|
|||
case model.BlockContentDataviewFilter_LessOrEqual:
|
||||
op = query.CompOpLte
|
||||
case model.BlockContentDataviewFilter_NotEqual:
|
||||
return query.Or{
|
||||
query.Key{
|
||||
Path: path,
|
||||
Filter: query.NewComp(query.CompOpNe, scalarPbValueToAny(e.Value)),
|
||||
},
|
||||
query.Key{
|
||||
Path: path,
|
||||
Filter: query.Not{Filter: query.Exists{}},
|
||||
},
|
||||
}
|
||||
op = query.CompOpNe
|
||||
}
|
||||
return query.Key{
|
||||
Path: path,
|
||||
|
@ -676,18 +680,6 @@ func optionsToMap(spaceID string, key string, store ObjectStore) map[string]stri
|
|||
return result
|
||||
}
|
||||
|
||||
// FilterNestedIn returns true for object that has a relation pointing to any object that matches FilterForNestedObjects.
|
||||
// This filter uses special machinery in able to work: it only functions when IDs field is populated by IDs of objects
|
||||
// that match FilterForNestedObjects. You can't just use FilterNestedIn without populating IDs field
|
||||
type FilterNestedIn struct {
|
||||
Key string
|
||||
FilterForNestedObjects Filter
|
||||
|
||||
IDs []string
|
||||
}
|
||||
|
||||
var _ WithNestedFilter = &FilterNestedIn{}
|
||||
|
||||
func makeFilterNestedIn(spaceID string, rawFilter *model.BlockContentDataviewFilter, store ObjectStore, relationKey string, nestedRelationKey string) (Filter, error) {
|
||||
rawNestedFilter := proto.Clone(rawFilter).(*model.BlockContentDataviewFilter)
|
||||
rawNestedFilter.RelationKey = nestedRelationKey
|
||||
|
@ -711,6 +703,18 @@ func makeFilterNestedIn(spaceID string, rawFilter *model.BlockContentDataviewFil
|
|||
}, nil
|
||||
}
|
||||
|
||||
// FilterNestedIn returns true for object that has a relation pointing to any object that matches FilterForNestedObjects.
|
||||
// This filter uses special machinery in able to work: it only functions when IDs field is populated by IDs of objects
|
||||
// that match FilterForNestedObjects. You can't just use FilterNestedIn without populating IDs field
|
||||
type FilterNestedIn struct {
|
||||
Key string
|
||||
FilterForNestedObjects Filter
|
||||
|
||||
IDs []string
|
||||
}
|
||||
|
||||
var _ WithNestedFilter = &FilterNestedIn{}
|
||||
|
||||
func (i *FilterNestedIn) FilterObject(g *types.Struct) bool {
|
||||
val := pbtypes.Get(g, i.Key)
|
||||
for _, id := range i.IDs {
|
||||
|
@ -737,3 +741,70 @@ func (i *FilterNestedIn) AnystoreFilter() query.Filter {
|
|||
func (i *FilterNestedIn) IterateNestedFilters(fn func(nestedFilter Filter) error) error {
|
||||
return fn(i)
|
||||
}
|
||||
|
||||
// See FilterNestedIn for details
|
||||
type FilterNestedNotIn struct {
|
||||
Key string
|
||||
FilterForNestedObjects Filter
|
||||
|
||||
IDs []string
|
||||
}
|
||||
|
||||
func makeFilterNestedNotIn(spaceID string, rawFilter *model.BlockContentDataviewFilter, store ObjectStore, relationKey string, nestedRelationKey string) (Filter, error) {
|
||||
rawNestedFilter := proto.Clone(rawFilter).(*model.BlockContentDataviewFilter)
|
||||
rawNestedFilter.RelationKey = nestedRelationKey
|
||||
|
||||
subQueryRawFilter := proto.Clone(rawFilter).(*model.BlockContentDataviewFilter)
|
||||
subQueryRawFilter.RelationKey = nestedRelationKey
|
||||
subQueryRawFilter.Condition = model.BlockContentDataviewFilter_Equal
|
||||
|
||||
subQueryFilter, err := MakeFilter(spaceID, subQueryRawFilter, store)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("make nested filter %s -> %s: %w", relationKey, nestedRelationKey, err)
|
||||
}
|
||||
records, err := store.QueryRaw(&Filters{FilterObj: subQueryFilter}, 0, 0)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("enrich nested filter: %w", err)
|
||||
}
|
||||
|
||||
ids := make([]string, 0, len(records))
|
||||
for _, rec := range records {
|
||||
ids = append(ids, pbtypes.GetString(rec.Details, bundle.RelationKeyId.String()))
|
||||
}
|
||||
nestedFilter, err := MakeFilter(spaceID, rawNestedFilter, store)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("make nested filter %s -> %s: %w", relationKey, nestedRelationKey, err)
|
||||
}
|
||||
return &FilterNestedNotIn{
|
||||
Key: relationKey,
|
||||
FilterForNestedObjects: nestedFilter,
|
||||
IDs: ids,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (i *FilterNestedNotIn) FilterObject(g *types.Struct) bool {
|
||||
val := pbtypes.Get(g, i.Key)
|
||||
for _, id := range i.IDs {
|
||||
eq := FilterEq{Value: pbtypes.String(id), Cond: model.BlockContentDataviewFilter_Equal}
|
||||
if eq.filterObject(val) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (i *FilterNestedNotIn) AnystoreFilter() query.Filter {
|
||||
path := []string{i.Key}
|
||||
conds := make([]query.Filter, 0, len(i.IDs))
|
||||
for _, id := range i.IDs {
|
||||
conds = append(conds, query.Key{
|
||||
Path: path,
|
||||
Filter: query.NewComp(query.CompOpNe, id),
|
||||
})
|
||||
}
|
||||
return query.And(conds)
|
||||
}
|
||||
|
||||
func (i *FilterNestedNotIn) IterateNestedFilters(fn func(nestedFilter Filter) error) error {
|
||||
return fn(i)
|
||||
}
|
||||
|
|
|
@ -125,6 +125,23 @@ func TestEq_FilterObject(t *testing.T) {
|
|||
obj = &types.Struct{Fields: map[string]*types.Value{"k": pbtypes.Float64(2)}}
|
||||
assertFilter(t, eq, obj, false)
|
||||
})
|
||||
|
||||
t.Run("not equal true: no key", func(t *testing.T) {
|
||||
eq := FilterEq{Key: "k", Value: pbtypes.Bool(true), Cond: model.BlockContentDataviewFilter_NotEqual}
|
||||
obj := &types.Struct{Fields: map[string]*types.Value{}}
|
||||
assertFilter(t, eq, obj, true)
|
||||
|
||||
obj = &types.Struct{Fields: map[string]*types.Value{"k": pbtypes.Bool(true)}}
|
||||
assertFilter(t, eq, obj, false)
|
||||
})
|
||||
t.Run("not equal false: no key", func(t *testing.T) {
|
||||
eq := FilterEq{Key: "k", Value: pbtypes.Bool(false), Cond: model.BlockContentDataviewFilter_NotEqual}
|
||||
obj := &types.Struct{Fields: map[string]*types.Value{}}
|
||||
assertFilter(t, eq, obj, true)
|
||||
|
||||
obj = &types.Struct{Fields: map[string]*types.Value{"k": pbtypes.Bool(false)}}
|
||||
assertFilter(t, eq, obj, false)
|
||||
})
|
||||
}
|
||||
|
||||
func TestNot_FilterObject(t *testing.T) {
|
||||
|
@ -432,7 +449,7 @@ func TestMakeAndFilter(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestNestedFilters(t *testing.T) {
|
||||
t.Run("simple", func(t *testing.T) {
|
||||
t.Run("equal", func(t *testing.T) {
|
||||
store := NewMockObjectStore(t)
|
||||
// Query will occur while nested filter resolving
|
||||
store.EXPECT().QueryRaw(mock.Anything, 0, 0).Return([]Record{
|
||||
|
@ -467,6 +484,44 @@ func TestNestedFilters(t *testing.T) {
|
|||
assertFilter(t, f, obj2, true)
|
||||
})
|
||||
|
||||
t.Run("not equal", func(t *testing.T) {
|
||||
store := NewMockObjectStore(t)
|
||||
// Query will occur while nested filter resolving
|
||||
store.EXPECT().QueryRaw(mock.Anything, 0, 0).Return([]Record{
|
||||
{
|
||||
Details: &types.Struct{
|
||||
Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyId.String(): pbtypes.String("id1"),
|
||||
bundle.RelationKeyUniqueKey.String(): pbtypes.String("ot-note"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Details: &types.Struct{
|
||||
Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyId.String(): pbtypes.String("id2"),
|
||||
bundle.RelationKeyUniqueKey.String(): pbtypes.String("ot-note"),
|
||||
},
|
||||
},
|
||||
},
|
||||
}, nil)
|
||||
|
||||
f, err := MakeFilter("spaceId", &model.BlockContentDataviewFilter{
|
||||
RelationKey: "type.uniqueKey",
|
||||
Condition: model.BlockContentDataviewFilter_NotEqual,
|
||||
Value: pbtypes.String("ot-note"),
|
||||
}, store)
|
||||
require.NoError(t, err)
|
||||
|
||||
obj1 := &types.Struct{Fields: map[string]*types.Value{bundle.RelationKeyType.String(): pbtypes.StringList([]string{"id1"})}}
|
||||
obj2 := &types.Struct{Fields: map[string]*types.Value{bundle.RelationKeyType.String(): pbtypes.StringList([]string{"id2", "id1"})}}
|
||||
obj3 := &types.Struct{Fields: map[string]*types.Value{bundle.RelationKeyType.String(): pbtypes.StringList([]string{"id3"})}}
|
||||
obj4 := &types.Struct{Fields: map[string]*types.Value{bundle.RelationKeyType.String(): pbtypes.StringList([]string{"id4", "id5"})}}
|
||||
assertFilter(t, f, obj1, false)
|
||||
assertFilter(t, f, obj2, false)
|
||||
assertFilter(t, f, obj3, true)
|
||||
assertFilter(t, f, obj4, true)
|
||||
})
|
||||
}
|
||||
|
||||
func TestFilterExists(t *testing.T) {
|
||||
|
|
|
@ -28,7 +28,7 @@ import (
|
|||
const (
|
||||
CName = "fts"
|
||||
ftsDir = "fts"
|
||||
ftsVer = "4"
|
||||
ftsVer = "5"
|
||||
|
||||
fieldTitle = "Title"
|
||||
fieldText = "Text"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package ftsearch
|
||||
|
||||
/*
|
||||
#cgo windows,amd64 LDFLAGS:-L${SRCDIR}/../../../../deps/libs/windows-amd64 -ltantivy_go -lm -pthread -lws2_32 -lbcrypt -lwsock32 -lntdll -luserenv -lsynchronization
|
||||
#cgo darwin,amd64 LDFLAGS:-L${SRCDIR}/../../../../deps/libs/darwin-amd64 -ltantivy_go -lm -pthread -framework CoreFoundation -framework Security -ldl
|
||||
#cgo windows,amd64 LDFLAGS:-L${SRCDIR}/../../../../deps/libs/windows-amd64 -ltantivy_go -lm -pthread -lws2_32 -lbcrypt -lntdll -luserenv
|
||||
#cgo darwin,amd64 LDFLAGS:-L${SRCDIR}/../../../../deps/libs/darwin-amd64 -ltantivy_go -lm -pthread -ldl
|
||||
#cgo darwin,arm64 LDFLAGS:-L${SRCDIR}/../../../../deps/libs/darwin-arm64 -ltantivy_go -lm -pthread -ldl
|
||||
#cgo ios,arm64 LDFLAGS:-L${SRCDIR}/../../../../deps/libs/ios-arm64 -ltantivy_go -lm -pthread -ldl
|
||||
#cgo ios,amd64 LDFLAGS:-L${SRCDIR}/../../../../deps/libs/ios-amd64 -ltantivy_go -lm -pthread -ldl
|
||||
|
@ -36,8 +36,9 @@ func TantivyNew() FTSearch {
|
|||
}
|
||||
|
||||
var specialChars = map[rune]struct{}{
|
||||
'+': {}, '-': {}, '&': {}, '|': {}, '!': {}, '(': {}, ')': {}, '{': {}, '}': {},
|
||||
'[': {}, ']': {}, '^': {}, '"': {}, '~': {}, '*': {}, '?': {}, ':': {},
|
||||
'+': {}, '^': {}, '`': {}, ':': {}, '{': {},
|
||||
'}': {}, '"': {}, '[': {}, ']': {}, '(': {},
|
||||
')': {}, '~': {}, '!': {}, '\\': {}, '*': {},
|
||||
}
|
||||
|
||||
type ftSearchTantivy struct {
|
||||
|
@ -350,10 +351,11 @@ func escapeQuery(query string) string {
|
|||
|
||||
for _, char := range query {
|
||||
if _, found := specialChars[char]; found {
|
||||
escapedQuery.WriteRune('\\')
|
||||
escapedQuery.WriteRune(' ')
|
||||
}
|
||||
escapedQuery.WriteRune(char)
|
||||
}
|
||||
|
||||
return escapedQuery.String()
|
||||
resultQuery := escapedQuery.String()
|
||||
return "(\"" + resultQuery + "\" OR " + resultQuery + ")"
|
||||
}
|
||||
|
|
|
@ -273,6 +273,14 @@ func (s *dsObjectStore) runDatabase(ctx context.Context, path string) error {
|
|||
Name: "syncStatus",
|
||||
Fields: []string{bundle.RelationKeySyncStatus.String()},
|
||||
},
|
||||
{
|
||||
Name: "isDeleted",
|
||||
Fields: []string{bundle.RelationKeyIsDeleted.String()},
|
||||
},
|
||||
{
|
||||
Name: "isArchived",
|
||||
Fields: []string{bundle.RelationKeyIsArchived.String()},
|
||||
},
|
||||
}
|
||||
err = s.addIndexes(ctx, objects, objectIndexes)
|
||||
if err != nil {
|
||||
|
|
|
@ -130,7 +130,7 @@ func (s *dsObjectStore) queryAnyStore(filter database.Filter, order database.Ord
|
|||
}
|
||||
}
|
||||
}()
|
||||
iter, err := s.objects.Find(anystoreFilter.String()).Sort(sortsArg...).Offset(offset).Limit(limit).Iter(s.componentCtx)
|
||||
iter, err := query.Iter(s.componentCtx)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("find: %w", err)
|
||||
}
|
||||
|
|
|
@ -953,33 +953,83 @@ func TestQueryRaw(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("with nested filter", func(t *testing.T) {
|
||||
s := NewStoreFixture(t)
|
||||
obj1 := TestObject{
|
||||
bundle.RelationKeyId: pbtypes.String("id1"),
|
||||
bundle.RelationKeyType: pbtypes.String("type1"),
|
||||
}
|
||||
type1 := TestObject{
|
||||
bundle.RelationKeyId: pbtypes.String("type1"),
|
||||
bundle.RelationKeyType: pbtypes.String("objectType"),
|
||||
domain.RelationKey("typeKey"): pbtypes.String("note"),
|
||||
}
|
||||
t.Run("equal", func(t *testing.T) {
|
||||
s := NewStoreFixture(t)
|
||||
obj1 := TestObject{
|
||||
bundle.RelationKeyId: pbtypes.String("id1"),
|
||||
bundle.RelationKeyType: pbtypes.String("type1"),
|
||||
}
|
||||
type1 := TestObject{
|
||||
bundle.RelationKeyId: pbtypes.String("type1"),
|
||||
bundle.RelationKeyType: pbtypes.String("objectType"),
|
||||
bundle.RelationKeyUniqueKey: pbtypes.String("ot-note"),
|
||||
}
|
||||
|
||||
s.AddObjects(t, []TestObject{obj1, type1})
|
||||
s.AddObjects(t, []TestObject{obj1, type1})
|
||||
|
||||
flt, err := database.NewFilters(database.Query{
|
||||
Filters: []*model.BlockContentDataviewFilter{
|
||||
{
|
||||
RelationKey: "type.typeKey",
|
||||
Condition: model.BlockContentDataviewFilter_Equal,
|
||||
Value: pbtypes.String("note"),
|
||||
flt, err := database.NewFilters(database.Query{
|
||||
Filters: []*model.BlockContentDataviewFilter{
|
||||
{
|
||||
RelationKey: "type.uniqueKey",
|
||||
Condition: model.BlockContentDataviewFilter_Equal,
|
||||
Value: pbtypes.String("ot-note"),
|
||||
},
|
||||
},
|
||||
},
|
||||
}, s, arena)
|
||||
require.NoError(t, err)
|
||||
}, s, arena)
|
||||
require.NoError(t, err)
|
||||
|
||||
recs, err := s.QueryRaw(flt, 0, 0)
|
||||
require.NoError(t, err)
|
||||
assertRecordsEqual(t, []TestObject{obj1}, recs)
|
||||
})
|
||||
t.Run("not equal", func(t *testing.T) {
|
||||
s := NewStoreFixture(t)
|
||||
obj1 := TestObject{
|
||||
bundle.RelationKeyId: pbtypes.String("id1"),
|
||||
bundle.RelationKeyType: pbtypes.String("type1"),
|
||||
bundle.RelationKeyLayout: pbtypes.Int64(int64(model.ObjectType_basic)),
|
||||
}
|
||||
obj2 := TestObject{
|
||||
bundle.RelationKeyId: pbtypes.String("id2"),
|
||||
bundle.RelationKeyType: pbtypes.String("type2"),
|
||||
bundle.RelationKeyLayout: pbtypes.Int64(int64(model.ObjectType_basic)),
|
||||
}
|
||||
type1 := TestObject{
|
||||
bundle.RelationKeyId: pbtypes.String("type1"),
|
||||
bundle.RelationKeyType: pbtypes.String("objectType"),
|
||||
bundle.RelationKeyUniqueKey: pbtypes.String("ot-template"),
|
||||
bundle.RelationKeyLayout: pbtypes.Int64(int64(model.ObjectType_objectType)),
|
||||
}
|
||||
type2 := TestObject{
|
||||
bundle.RelationKeyId: pbtypes.String("type2"),
|
||||
bundle.RelationKeyType: pbtypes.String("objectType"),
|
||||
bundle.RelationKeyUniqueKey: pbtypes.String("ot-page"),
|
||||
bundle.RelationKeyLayout: pbtypes.Int64(int64(model.ObjectType_objectType)),
|
||||
}
|
||||
|
||||
s.AddObjects(t, []TestObject{obj1, obj2, type1, type2})
|
||||
|
||||
flt, err := database.NewFilters(database.Query{
|
||||
Filters: []*model.BlockContentDataviewFilter{
|
||||
{
|
||||
RelationKey: "type.uniqueKey",
|
||||
Condition: model.BlockContentDataviewFilter_NotEqual,
|
||||
Value: pbtypes.String("ot-template"),
|
||||
},
|
||||
{
|
||||
RelationKey: bundle.RelationKeyLayout.String(),
|
||||
Condition: model.BlockContentDataviewFilter_Equal,
|
||||
Value: pbtypes.Int64(int64(model.ObjectType_basic)),
|
||||
},
|
||||
},
|
||||
}, s, arena)
|
||||
require.NoError(t, err)
|
||||
|
||||
recs, err := s.QueryRaw(flt, 0, 0)
|
||||
require.NoError(t, err)
|
||||
assertRecordsEqual(t, []TestObject{obj2}, recs)
|
||||
})
|
||||
|
||||
recs, err := s.QueryRaw(flt, 0, 0)
|
||||
require.NoError(t, err)
|
||||
assertRecordsEqual(t, []TestObject{obj1}, recs)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -1182,3 +1232,36 @@ func TestGetSpaceIDFromFilters(t *testing.T) {
|
|||
assert.Equal(t, []string{spaceId}, getSpaceIdsFromFilter(f))
|
||||
})
|
||||
}
|
||||
|
||||
func TestIndex(t *testing.T) {
|
||||
s := NewStoreFixture(t)
|
||||
obj1 := TestObject{
|
||||
bundle.RelationKeyId: pbtypes.String("id1"),
|
||||
bundle.RelationKeyName: pbtypes.String("name1"),
|
||||
bundle.RelationKeyIsDeleted: pbtypes.Bool(true),
|
||||
}
|
||||
obj2 := TestObject{
|
||||
bundle.RelationKeyId: pbtypes.String("id2"),
|
||||
bundle.RelationKeyName: pbtypes.String("name2"),
|
||||
}
|
||||
obj3 := TestObject{
|
||||
bundle.RelationKeyId: pbtypes.String("id3"),
|
||||
bundle.RelationKeyName: pbtypes.String("name3"),
|
||||
}
|
||||
s.AddObjects(t, []TestObject{obj1, obj2, obj3})
|
||||
|
||||
recs, err := s.Query(database.Query{
|
||||
Filters: []*model.BlockContentDataviewFilter{
|
||||
{
|
||||
RelationKey: bundle.RelationKeyIsDeleted.String(),
|
||||
Condition: model.BlockContentDataviewFilter_NotEqual,
|
||||
Value: pbtypes.Bool(true),
|
||||
},
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
assertRecordsEqual(t, []TestObject{
|
||||
obj2, obj3,
|
||||
}, recs)
|
||||
}
|
||||
|
|
|
@ -30,13 +30,13 @@ func TestImageExif_Mill(t *testing.T) {
|
|||
}
|
||||
|
||||
if exif.Width != i.Width {
|
||||
t.Errorf("wrong width")
|
||||
t.Errorf("wrong width %v %v", exif.Width, i.Width)
|
||||
}
|
||||
if exif.Height != i.Height {
|
||||
t.Errorf("wrong height")
|
||||
t.Errorf("wrong height %v %v", exif.Height, i.Height)
|
||||
}
|
||||
if exif.Format != i.Format {
|
||||
t.Errorf("wrong format")
|
||||
t.Errorf("wrong format %v %v", exif.Format, i.Format)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
@ -31,12 +31,15 @@ func init() {
|
|||
}
|
||||
|
||||
const (
|
||||
JPEG Format = "jpeg"
|
||||
PNG Format = "png"
|
||||
GIF Format = "gif"
|
||||
ICO Format = "vnd.microsoft.icon"
|
||||
WEBP Format = "webp"
|
||||
HEIC Format = "heic"
|
||||
JPEG Format = "jpeg"
|
||||
PNG Format = "png"
|
||||
GIF Format = "gif"
|
||||
ICO Format = "vnd.microsoft.icon"
|
||||
WEBP Format = "webp"
|
||||
HEIC Format = "heic"
|
||||
PSD Format = "psd"
|
||||
PSD_MIME Format = "vnd.adobe.photoshop"
|
||||
TIFF Format = "tiff"
|
||||
)
|
||||
|
||||
func IsImage(mime string) bool {
|
||||
|
@ -51,7 +54,7 @@ func IsImage(mime string) bool {
|
|||
|
||||
func isImageFormatSupported(format Format) bool {
|
||||
switch format {
|
||||
case JPEG, PNG, GIF, ICO, WEBP, HEIC:
|
||||
case JPEG, PNG, GIF, ICO, WEBP, HEIC, PSD_MIME, PSD, TIFF:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
@ -120,6 +123,10 @@ func (m *ImageResize) Mill(r io.ReadSeeker, name string) (*Result, error) {
|
|||
return m.resizeGIF(&imgConfig, r)
|
||||
case HEIC:
|
||||
return m.resizeHEIC(&imgConfig, r)
|
||||
case TIFF:
|
||||
return m.resizeTIFF(&imgConfig, r)
|
||||
case PSD:
|
||||
return m.resizePSD(&imgConfig, r)
|
||||
}
|
||||
|
||||
return nil, fmt.Errorf("unknown format")
|
||||
|
@ -336,6 +343,47 @@ func (m *ImageResize) resizeGIF(imgConfig *image.Config, r io.ReadSeeker) (*Resu
|
|||
}, nil
|
||||
}
|
||||
|
||||
func (m *ImageResize) resizeTIFF(imgConfig *image.Config, r io.ReadSeeker) (*Result, error) {
|
||||
// tiff resizes to jpeg
|
||||
img, _, err := image.Decode(r)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("decode tiff: %w", err)
|
||||
}
|
||||
var height int
|
||||
width, err := strconv.Atoi(m.Opts.Width)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("invalid width: " + m.Opts.Width)
|
||||
}
|
||||
|
||||
resized := imaging.Resize(img, width, 0, imaging.Lanczos)
|
||||
width, height = resized.Rect.Max.X, resized.Rect.Max.Y
|
||||
|
||||
quality, err := strconv.Atoi(m.Opts.Quality)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("invalid quality: " + m.Opts.Quality)
|
||||
}
|
||||
|
||||
buf := pool.Get()
|
||||
defer func() {
|
||||
_ = buf.Close()
|
||||
}()
|
||||
|
||||
if err = jpeg.Encode(buf, resized, &jpeg.Options{Quality: quality}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
readSeekCloser, err := buf.GetReadSeekCloser()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &Result{
|
||||
File: readSeekCloser,
|
||||
Meta: map[string]interface{}{
|
||||
"width": width,
|
||||
"height": height,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
func getExifData(r io.ReadSeeker) (data []byte, err error) {
|
||||
exifData, err := exif.SearchAndExtractExifWithReader(r)
|
||||
if err != nil {
|
||||
|
|
54
pkg/lib/mill/image_resize_psd.go
Normal file
54
pkg/lib/mill/image_resize_psd.go
Normal file
|
@ -0,0 +1,54 @@
|
|||
package mill
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"image"
|
||||
"image/jpeg"
|
||||
"io"
|
||||
"strconv"
|
||||
|
||||
"github.com/disintegration/imaging"
|
||||
"github.com/oov/psd"
|
||||
)
|
||||
|
||||
func (m *ImageResize) resizePSD(imgConfig *image.Config, r io.ReadSeeker) (res *Result, err error) {
|
||||
img, _, err := psd.Decode(r, &psd.DecodeOptions{SkipLayerImage: true})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var height int
|
||||
width, err := strconv.Atoi(m.Opts.Width)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("invalid width: " + m.Opts.Width)
|
||||
}
|
||||
|
||||
resized := imaging.Resize(img.Picker, width, 0, imaging.Lanczos)
|
||||
width, height = resized.Rect.Max.X, resized.Rect.Max.Y
|
||||
|
||||
quality, err := strconv.Atoi(m.Opts.Quality)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("invalid quality: " + m.Opts.Quality)
|
||||
}
|
||||
|
||||
buf := pool.Get()
|
||||
defer func() {
|
||||
_ = buf.Close()
|
||||
}()
|
||||
|
||||
// encode to jpeg encoding to increase compatibility on mobile devices
|
||||
if err = jpeg.Encode(buf, resized, &jpeg.Options{Quality: quality}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
readSeekCloser, err := buf.GetReadSeekCloser()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &Result{
|
||||
File: readSeekCloser,
|
||||
Meta: map[string]interface{}{
|
||||
"width": width,
|
||||
"height": height,
|
||||
},
|
||||
}, nil
|
||||
}
|
BIN
pkg/lib/mill/testdata/image.tif
vendored
Normal file
BIN
pkg/lib/mill/testdata/image.tif
vendored
Normal file
Binary file not shown.
14
pkg/lib/mill/testdata/images.go
vendored
14
pkg/lib/mill/testdata/images.go
vendored
|
@ -65,4 +65,18 @@ var Images = []TestImage{
|
|||
Width: 102,
|
||||
Height: 79,
|
||||
},
|
||||
{
|
||||
Path: "testdata/text.psd",
|
||||
Format: "psd",
|
||||
HasExif: true,
|
||||
Width: 800,
|
||||
Height: 600,
|
||||
},
|
||||
{
|
||||
Path: "testdata/image.tif",
|
||||
Format: "tiff",
|
||||
HasExif: true,
|
||||
Width: 1728,
|
||||
Height: 2376,
|
||||
},
|
||||
}
|
||||
|
|
BIN
pkg/lib/mill/testdata/text.psd
vendored
Normal file
BIN
pkg/lib/mill/testdata/text.psd
vendored
Normal file
Binary file not shown.
|
@ -11,6 +11,7 @@ import (
|
|||
"github.com/anyproto/any-sync/commonspace/object/acl/syncacl"
|
||||
"github.com/anyproto/any-sync/commonspace/object/acl/syncacl/headupdater"
|
||||
"github.com/anyproto/any-sync/commonspace/spacesyncproto"
|
||||
"github.com/anyproto/any-sync/net/peer"
|
||||
"github.com/stretchr/testify/mock"
|
||||
"github.com/stretchr/testify/require"
|
||||
"go.uber.org/mock/gomock"
|
||||
|
@ -204,6 +205,14 @@ type syncAclStub struct {
|
|||
updater headupdater.AclUpdater
|
||||
}
|
||||
|
||||
func (s *syncAclStub) HandleMessage(ctx context.Context, senderId string, protoVersion uint32, message *spacesyncproto.ObjectSyncMessage) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *syncAclStub) SyncWithPeer(ctx context.Context, p peer.Peer) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *syncAclStub) Init(a *app.App) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
@ -216,10 +225,6 @@ func (s *syncAclStub) Run(ctx context.Context) (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func (s *syncAclStub) HandleMessage(ctx context.Context, senderId string, message *spacesyncproto.ObjectSyncMessage) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *syncAclStub) HandleRequest(ctx context.Context, senderId string, request *spacesyncproto.ObjectSyncMessage) (response *spacesyncproto.ObjectSyncMessage, err error) {
|
||||
return
|
||||
}
|
||||
|
@ -228,10 +233,6 @@ func (s *syncAclStub) SetHeadUpdater(updater headupdater.HeadUpdater) {
|
|||
return
|
||||
}
|
||||
|
||||
func (s *syncAclStub) SyncWithPeer(ctx context.Context, peerId string) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *syncAclStub) SetAclUpdater(updater headupdater.AclUpdater) {
|
||||
s.updater = updater
|
||||
return
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
package dependencies
|
||||
|
||||
import "github.com/gogo/protobuf/types"
|
||||
|
||||
type DetailsModifier interface {
|
||||
ModifyDetails(objectId string, modifier func(current *types.Struct) (*types.Struct, error)) (err error)
|
||||
}
|
|
@ -186,6 +186,7 @@ func newTestPeer(id string) *testPeer {
|
|||
type testPeer struct {
|
||||
id string
|
||||
closed chan struct{}
|
||||
ctx context.Context
|
||||
}
|
||||
|
||||
func (t *testPeer) SetTTL(ttl time.Duration) {
|
||||
|
@ -203,8 +204,7 @@ func (t *testPeer) AcquireDrpcConn(ctx context.Context) (drpc.Conn, error) {
|
|||
func (t *testPeer) ReleaseDrpcConn(conn drpc.Conn) {}
|
||||
|
||||
func (t *testPeer) Context() context.Context {
|
||||
// TODO implement me
|
||||
panic("implement me")
|
||||
return t.ctx
|
||||
}
|
||||
|
||||
func (t *testPeer) Accept() (conn net.Conn, err error) {
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
31eaddb2ce286ff3c8b9fe01781adaa2f8fd7db759d01c5fab2f655cb85202bb deps/libs/android-386.tar.gz
|
||||
011be437ffd1498aa295191f0c5f44d30de5ec7dc293f28f57d3acc311a59168 deps/libs/android-amd64.tar.gz
|
||||
93864215777aba8451ee6ba09a3b2fc2b0582273b166a7f43ecc54e00b37615b deps/libs/android-arm.tar.gz
|
||||
3a7a5ed4b205d4dafe12dc2cac592cf1f37f5a0f6c99a471365db70eda19effb deps/libs/android-arm64.tar.gz
|
||||
d9fcba7ec18aaf6e59d06e0ef8011de45df578b7617a566ce38fbe764ebfa0ed deps/libs/darwin-amd64.tar.gz
|
||||
5d8a1600029c1544bebc6ee0d35098ff8d1242056a23b041da739e5197185557 deps/libs/darwin-arm64.tar.gz
|
||||
0222fa5e850ddc1641ea9138107138ba754254c577f77b43c1b5bfb11c264610 deps/libs/ios-amd64.tar.gz
|
||||
e3adc97753f1b8fa95e4d2e37385da2c710dd40ba7706af34303af5bce69506c deps/libs/ios-arm64.tar.gz
|
||||
f88cff214cc0bb01f2cf7b6e54ca617cce1eac6393decf2d86c6d24f0b903df0 deps/libs/linux-amd64-musl.tar.gz
|
||||
cb29b5328e9b09d99342b936812903410a1864196486d2edd5cc9028bba9c0a2 deps/libs/windows-amd64.tar.gz
|
||||
ae7b1f9899be6b310aaf7678dfb19c5b4a1ad19fff967a525ab6b30e4730bd77 deps/libs/android-386.tar.gz
|
||||
b86d874ba76de4f16d43e86cd2ab1f597f5e4b671f39827c018b18558b5333b7 deps/libs/android-amd64.tar.gz
|
||||
b5796dbcaa501eecb5568ff44bb280099a10e6ec7607383e6fa88dc126c97b11 deps/libs/android-arm.tar.gz
|
||||
096a55e25df9ccae19b026c628fa3b8f21eb76f70b617d0fcaf2a0dbc291f59c deps/libs/android-arm64.tar.gz
|
||||
28ab38b8fd0796c07406a15183a29223057e2193365502e7dfe1e88ae86c90b6 deps/libs/darwin-amd64.tar.gz
|
||||
247e5d6b9eb8d6c5d65f9c44795aaac40499e781715c1d1769151bf8874b7509 deps/libs/darwin-arm64.tar.gz
|
||||
2ea69b27b42b1e0ef08817c778d6f9a890a9900f22bbab10a1c229ec19d08304 deps/libs/ios-amd64.tar.gz
|
||||
553fd2feb0ac055eb8c09f076cfcebc455309ca9f4cc37cf2d76e17654b7471d deps/libs/ios-arm64.tar.gz
|
||||
a1f27b2c55c3fabe16367041706da72dd57ba30f768b227161212a0cf8e50290 deps/libs/ios-arm64-sim.tar.gz
|
||||
63c5384d4034875e4302d5d583ac6ccae64a88fe73de931cb885f9a75c777408 deps/libs/linux-amd64-musl.tar.gz
|
||||
de00e402a6bbdf3f77bd91ddc486c4572a630f4332712c72098ecef931350065 deps/libs/windows-amd64.tar.gz
|
||||
|
|
|
@ -21,6 +21,35 @@ var (
|
|||
addressPattern = regexp.MustCompile(`\+?0x[0-9a-z]*`)
|
||||
)
|
||||
|
||||
func InlineCallStack() string {
|
||||
// Allocate space for the call stack
|
||||
var pcs [32]uintptr
|
||||
|
||||
// Skip 3 frames: runtime.Callers, printStack, and the function calling printStack
|
||||
n := runtime.Callers(2, pcs[:])
|
||||
|
||||
// Get the stack frames
|
||||
frames := runtime.CallersFrames(pcs[:n])
|
||||
|
||||
var sep string
|
||||
buf := &strings.Builder{}
|
||||
// Iterate through the frames and print them
|
||||
for {
|
||||
frame, more := frames.Next()
|
||||
buf.WriteString(sep)
|
||||
sep = " -> "
|
||||
buf.WriteString(frame.Function)
|
||||
buf.WriteString(" ")
|
||||
buf.WriteString(frame.File)
|
||||
buf.WriteString(":")
|
||||
buf.WriteString(fmt.Sprintf("%d", frame.Line))
|
||||
if !more {
|
||||
break
|
||||
}
|
||||
}
|
||||
return buf.String()
|
||||
}
|
||||
|
||||
func ParseGoroutinesDump(trace string, pattern string) string {
|
||||
var sb strings.Builder
|
||||
|
||||
|
|
|
@ -117,16 +117,24 @@ func IsEmptyValueOrAbsent(s *types.Struct, name string) bool {
|
|||
if !exists {
|
||||
return true
|
||||
}
|
||||
if _, ok := value.Kind.(*types.Value_StringValue); ok {
|
||||
return len(GetString(s, name)) == 0
|
||||
return IsEmptyValue(value)
|
||||
}
|
||||
|
||||
func IsEmptyValue(value *types.Value) bool {
|
||||
if value == nil {
|
||||
return true
|
||||
}
|
||||
|
||||
if _, ok := value.Kind.(*types.Value_NumberValue); ok {
|
||||
return GetFloat64(s, name) == 0
|
||||
if v, ok := value.Kind.(*types.Value_StringValue); ok {
|
||||
return len(v.StringValue) == 0
|
||||
}
|
||||
|
||||
if _, ok := value.Kind.(*types.Value_BoolValue); ok {
|
||||
return !GetBool(s, name)
|
||||
if v, ok := value.Kind.(*types.Value_NumberValue); ok {
|
||||
return v.NumberValue == 0
|
||||
}
|
||||
|
||||
if v, ok := value.Kind.(*types.Value_BoolValue); ok {
|
||||
return !v.BoolValue
|
||||
}
|
||||
|
||||
if _, ok := value.Kind.(*types.Value_ListValue); ok {
|
||||
|
@ -187,12 +195,24 @@ func GetStringList(s *types.Struct, name string) []string {
|
|||
return nil
|
||||
}
|
||||
|
||||
if v, ok := s.Fields[name]; !ok {
|
||||
return nil
|
||||
} else {
|
||||
if v, ok := s.Fields[name]; ok {
|
||||
return GetStringListValue(v)
|
||||
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetValueList(s *types.Struct, name string) []*types.Value {
|
||||
if s == nil || s.Fields == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
if v, ok := s.Fields[name]; ok {
|
||||
if list, ok := v.Kind.(*types.Value_ListValue); ok {
|
||||
return list.ListValue.Values
|
||||
}
|
||||
return []*types.Value{v}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// UpdateStringList updates a string list field using modifier function and returns updated value
|
||||
|
@ -256,6 +276,16 @@ func GetStringListValue(v *types.Value) []string {
|
|||
return nil
|
||||
}
|
||||
|
||||
func GetList(v *types.Value) []*types.Value {
|
||||
if v == nil {
|
||||
return nil
|
||||
}
|
||||
if list, ok := v.Kind.(*types.Value_ListValue); ok {
|
||||
return list.ListValue.Values
|
||||
}
|
||||
return []*types.Value{v}
|
||||
}
|
||||
|
||||
func ListValueToStrings(list *types.ListValue) []string {
|
||||
if list == nil {
|
||||
return nil
|
||||
|
|
|
@ -237,3 +237,19 @@ func FilterCID(cids []string) []string {
|
|||
return err == nil
|
||||
})
|
||||
}
|
||||
|
||||
// MergeUniqBy merges two slices with comparator. Resulting slice saves values' order and uniqueness.
|
||||
// Input slices MUST contain only unique values
|
||||
func MergeUniqBy[T comparable](s1, s2 []T, equal func(v1, v2 T) bool) (result []T) {
|
||||
result = make([]T, len(s1))
|
||||
copy(result, s1)
|
||||
for _, v2 := range s2 {
|
||||
if !slices.ContainsFunc(s1, func(v1 T) bool {
|
||||
return equal(v1, v2)
|
||||
}) {
|
||||
result = append(result, v2)
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
|
|
@ -100,3 +100,12 @@ func TestUnsortedEquals(t *testing.T) {
|
|||
assert.False(t, UnsortedEqual([]string{"a", "b", "c"}, []string{"a", "b"}))
|
||||
assert.False(t, UnsortedEqual([]string{"a", "b", "c"}, []string{"a", "b", "c", "d"}))
|
||||
}
|
||||
|
||||
func TestMergeUniqBy(t *testing.T) {
|
||||
strEqual := func(v1, v2 string) bool {
|
||||
return v1 == v2
|
||||
}
|
||||
assert.Equal(t, MergeUniqBy([]string{"a", "b", "c"}, []string{"a", "b"}, strEqual), []string{"a", "b", "c"})
|
||||
assert.Equal(t, MergeUniqBy([]string{}, []string{"a", "b"}, strEqual), []string{"a", "b"})
|
||||
assert.Equal(t, MergeUniqBy([]string{"a", "b", "c"}, []string{"z", "d"}, strEqual), []string{"a", "b", "c", "z", "d"})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue