mirror of
https://github.com/anyproto/anytype-heart.git
synced 2025-06-09 09:35:00 +09:00
GO-4231 Merge main
This commit is contained in:
commit
f397e77509
54 changed files with 3724 additions and 2392 deletions
14
.github/workflows/build.yml
vendored
14
.github/workflows/build.yml
vendored
|
@ -109,12 +109,12 @@ jobs:
|
|||
echo $FLAGS
|
||||
mkdir -p .release
|
||||
echo $SDKROOT
|
||||
GOEXPERIMENT=rangefunc GOOS="darwin" CGO_CFLAGS="-mmacosx-version-min=11" MACOSX_DEPLOYMENT_TARGET=11.0 GOARCH="amd64" CGO_ENABLED="1" go build -tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector" -ldflags="$FLAGS" -o darwin-amd64 github.com/anyproto/anytype-heart/cmd/grpcserver
|
||||
GOOS="darwin" CGO_CFLAGS="-mmacosx-version-min=11" MACOSX_DEPLOYMENT_TARGET=11.0 GOARCH="amd64" CGO_ENABLED="1" go build -tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector" -ldflags="$FLAGS" -o darwin-amd64 github.com/anyproto/anytype-heart/cmd/grpcserver
|
||||
export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
|
||||
echo $SDKROOT
|
||||
GOEXPERIMENT=rangefunc GOOS="darwin" CGO_CFLAGS="-mmacosx-version-min=11" MACOSX_DEPLOYMENT_TARGET=11.0 GOARCH="arm64" CGO_ENABLED="1" go build -tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector" -ldflags="$FLAGS" -o darwin-arm64 github.com/anyproto/anytype-heart/cmd/grpcserver
|
||||
GOEXPERIMENT=rangefunc GOOS="windows" GOARCH="amd64" CGO_ENABLED="1" CC="x86_64-w64-mingw32-gcc" CXX="x86_64-w64-mingw32-g++" go build -tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector noheic" -ldflags="$FLAGS -linkmode external -extldflags=-static" -o windows-amd64 github.com/anyproto/anytype-heart/cmd/grpcserver
|
||||
GOEXPERIMENT=rangefunc GOOS="linux" GOARCH="amd64" CGO_ENABLED="1" CC="x86_64-linux-musl-gcc" go build -tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector noheic" -ldflags="$FLAGS -linkmode external -extldflags '-static -Wl,-z stack-size=1000000'" -o linux-amd64 github.com/anyproto/anytype-heart/cmd/grpcserver
|
||||
GOOS="darwin" CGO_CFLAGS="-mmacosx-version-min=11" MACOSX_DEPLOYMENT_TARGET=11.0 GOARCH="arm64" CGO_ENABLED="1" go build -tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector" -ldflags="$FLAGS" -o darwin-arm64 github.com/anyproto/anytype-heart/cmd/grpcserver
|
||||
GOOS="windows" GOARCH="amd64" CGO_ENABLED="1" CC="x86_64-w64-mingw32-gcc" CXX="x86_64-w64-mingw32-g++" go build -tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector noheic" -ldflags="$FLAGS -linkmode external -extldflags=-static" -o windows-amd64 github.com/anyproto/anytype-heart/cmd/grpcserver
|
||||
GOOS="linux" GOARCH="amd64" CGO_ENABLED="1" CC="x86_64-linux-musl-gcc" go build -tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector noheic" -ldflags="$FLAGS -linkmode external -extldflags '-static -Wl,-z stack-size=1000000'" -o linux-amd64 github.com/anyproto/anytype-heart/cmd/grpcserver
|
||||
ls -lha .
|
||||
- name: run perf tests
|
||||
run: |
|
||||
|
@ -216,10 +216,10 @@ jobs:
|
|||
cp pkg/lib/bundle/internalTypes.json ./json
|
||||
- name: Compile ios lib
|
||||
run: |
|
||||
go install github.com/vektra/mockery/v2@v2.46.0
|
||||
go install github.com/vektra/mockery/v2@v2.47.0
|
||||
go install go.uber.org/mock/mockgen@v0.5.0
|
||||
make test-deps
|
||||
GOEXPERIMENT=rangefunc gomobile bind -tags "envproduction nogrpcserver gomobile nowatchdog nosigar nomutexdeadlockdetector timetzdata rasterizesvg" -ldflags "$FLAGS" -v -target=ios -o Lib.xcframework github.com/anyproto/anytype-heart/clientlibrary/service github.com/anyproto/anytype-heart/core || true
|
||||
gomobile bind -tags "envproduction nogrpcserver gomobile nowatchdog nosigar nomutexdeadlockdetector timetzdata rasterizesvg" -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 .
|
||||
|
@ -249,7 +249,7 @@ jobs:
|
|||
cp pkg/lib/bundle/internalTypes.json ./json
|
||||
- name: Compile android lib
|
||||
run: |
|
||||
GOEXPERIMENT=rangefunc gomobile bind -tags "envproduction nogrpcserver gomobile nowatchdog nosigar nomutexdeadlockdetector timetzdata rasterizesvg" -ldflags "$FLAGS" -v -target=android -androidapi 26 -o lib.aar github.com/anyproto/anytype-heart/clientlibrary/service github.com/anyproto/anytype-heart/core || true
|
||||
gomobile bind -tags "envproduction nogrpcserver gomobile nowatchdog nosigar nomutexdeadlockdetector timetzdata rasterizesvg" -ldflags "$FLAGS" -v -target=android -androidapi 26 -o lib.aar github.com/anyproto/anytype-heart/clientlibrary/service github.com/anyproto/anytype-heart/core || true
|
||||
gtar --exclude ".*" -czvf android_lib_${VERSION}.tar.gz lib.aar protobuf json
|
||||
mv android_lib_${VERSION}.tar.gz .release/
|
||||
- name: Publish android lib to maven
|
||||
|
|
|
@ -10,9 +10,8 @@
|
|||
<env name="ANYTYPE_GRPC_ADDR" value="127.0.0.1:31007" />
|
||||
<env name="ANYTYPE_GRPCWEB_ADDR" value="127.0.0.1:31008" />
|
||||
<env name="CC" value="/usr/bin/cc" />
|
||||
<env name="CGO_CFLAGS" value="-Wno-deprecated-declarations -Wno-deprecated-non-prototype -Wno-xor-used-as-pow" />
|
||||
<env name="CXX" value="/usr/bin/c++" />
|
||||
<env name="GOEXPERIMENT" value="rangefunc" />
|
||||
<env name="CGO_CFLAGS" value="-Wno-deprecated-declarations -Wno-deprecated-non-prototype -Wno-xor-used-as-pow" />
|
||||
</envs>
|
||||
<EXTENSION ID="net.ashald.envfile">
|
||||
<option name="IS_ENABLED" value="false" />
|
||||
|
|
1
Makefile
1
Makefile
|
@ -7,7 +7,6 @@ BUILD_FLAGS ?=
|
|||
TANTIVY_VERSION := $(shell cat go.mod | grep github.com/anyproto/tantivy-go | cut -d' ' -f2)
|
||||
|
||||
export GOLANGCI_LINT_VERSION=1.58.1
|
||||
export GOEXPERIMENT=rangefunc
|
||||
export CGO_CFLAGS=-Wno-deprecated-non-prototype -Wno-unknown-warning-option -Wno-deprecated-declarations -Wno-xor-used-as-pow -Wno-single-bit-bitfield-constant-conversion
|
||||
|
||||
ifndef $(GOPATH)
|
||||
|
|
|
@ -25,338 +25,339 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
|
|||
func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) }
|
||||
|
||||
var fileDescriptor_93a29dc403579097 = []byte{
|
||||
// 5285 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x9d, 0x5f, 0x6f, 0x24, 0x49,
|
||||
0x52, 0xc0, 0xaf, 0x5f, 0x58, 0xa8, 0xe3, 0x16, 0xe8, 0x85, 0x65, 0x6f, 0xb9, 0x9b, 0x99, 0x9d,
|
||||
0x9d, 0xb1, 0x3d, 0x63, 0xbb, 0x3d, 0x3b, 0xb3, 0xff, 0xb8, 0x43, 0x02, 0x8f, 0x3d, 0xf6, 0x9a,
|
||||
0xb3, 0x3d, 0xc6, 0x6d, 0xcf, 0x48, 0x2b, 0x21, 0x51, 0xee, 0x4a, 0xb7, 0x0b, 0x57, 0x57, 0xd6,
|
||||
0x55, 0x65, 0xb7, 0xa7, 0x0f, 0x81, 0x38, 0x81, 0x40, 0x20, 0x10, 0x27, 0xfe, 0x89, 0x37, 0x24,
|
||||
0x3e, 0x01, 0x1f, 0x83, 0xc7, 0x7b, 0xe4, 0x11, 0xed, 0xbe, 0xf1, 0x29, 0x50, 0x65, 0x66, 0xe5,
|
||||
0x9f, 0xa8, 0x88, 0xac, 0xf2, 0xf2, 0x34, 0xa3, 0x8e, 0x5f, 0x44, 0x64, 0x56, 0x66, 0x46, 0x46,
|
||||
0x66, 0x65, 0xa5, 0xa3, 0xbb, 0xc5, 0xc5, 0x56, 0x51, 0x72, 0xc1, 0xab, 0xad, 0x8a, 0x95, 0x8b,
|
||||
0x74, 0xc2, 0x9a, 0x7f, 0x47, 0xf2, 0xe7, 0xe1, 0x5b, 0x71, 0xbe, 0x14, 0xcb, 0x82, 0xbd, 0xff,
|
||||
0x9e, 0x25, 0x27, 0x7c, 0x36, 0x8b, 0xf3, 0xa4, 0x52, 0xc8, 0xfb, 0xef, 0x5a, 0x09, 0x5b, 0xb0,
|
||||
0x5c, 0xe8, 0xdf, 0x9f, 0xfe, 0xf4, 0x7f, 0x07, 0xd1, 0xdb, 0x3b, 0x59, 0xca, 0x72, 0xb1, 0xa3,
|
||||
0x35, 0x86, 0x5f, 0x46, 0xdf, 0xd9, 0x2e, 0x8a, 0x7d, 0x26, 0x5e, 0xb1, 0xb2, 0x4a, 0x79, 0x3e,
|
||||
0xfc, 0x70, 0xa4, 0x1d, 0x8c, 0x4e, 0x8b, 0xc9, 0x68, 0xbb, 0x28, 0x46, 0x56, 0x38, 0x3a, 0x65,
|
||||
0x3f, 0x9e, 0xb3, 0x4a, 0xbc, 0xff, 0x20, 0x0c, 0x55, 0x05, 0xcf, 0x2b, 0x36, 0xbc, 0x8c, 0x7e,
|
||||
0x6d, 0xbb, 0x28, 0xc6, 0x4c, 0xec, 0xb2, 0xba, 0x02, 0x63, 0x11, 0x0b, 0x36, 0x5c, 0x6d, 0xa9,
|
||||
0xfa, 0x80, 0xf1, 0xb1, 0xd6, 0x0d, 0x6a, 0x3f, 0x67, 0xd1, 0xb7, 0x6b, 0x3f, 0x57, 0x73, 0x91,
|
||||
0xf0, 0x9b, 0x7c, 0xf8, 0x41, 0x5b, 0x51, 0x8b, 0x8c, 0xed, 0xfb, 0x21, 0x44, 0x5b, 0x7d, 0x1d,
|
||||
0xfd, 0xf2, 0xeb, 0x38, 0xcb, 0x98, 0xd8, 0x29, 0x59, 0x5d, 0x70, 0x5f, 0x47, 0x89, 0x46, 0x4a,
|
||||
0x66, 0xec, 0x7e, 0x18, 0x64, 0xb4, 0xe1, 0x2f, 0xa3, 0xef, 0x28, 0xc9, 0x29, 0x9b, 0xf0, 0x05,
|
||||
0x2b, 0x87, 0xa8, 0x96, 0x16, 0x12, 0x8f, 0xbc, 0x05, 0x41, 0xdb, 0x3b, 0x3c, 0x5f, 0xb0, 0x52,
|
||||
0xe0, 0xb6, 0xb5, 0x30, 0x6c, 0xdb, 0x42, 0xda, 0xf6, 0xdf, 0x0c, 0xa2, 0xef, 0x6d, 0x4f, 0x26,
|
||||
0x7c, 0x9e, 0x8b, 0x43, 0x3e, 0x89, 0xb3, 0xc3, 0x34, 0xbf, 0x3e, 0x66, 0x37, 0x3b, 0x57, 0x35,
|
||||
0x9f, 0x4f, 0xd9, 0xf0, 0x99, 0xff, 0x54, 0x15, 0x3a, 0x32, 0xec, 0xc8, 0x85, 0x8d, 0xef, 0x8f,
|
||||
0x6f, 0xa7, 0xa4, 0xcb, 0xf2, 0x0f, 0x83, 0xe8, 0x0e, 0x2c, 0xcb, 0x98, 0x67, 0x0b, 0x66, 0x4b,
|
||||
0xf3, 0x49, 0x87, 0x61, 0x1f, 0x37, 0xe5, 0xf9, 0xf4, 0xb6, 0x6a, 0xba, 0x44, 0x59, 0xf4, 0x8e,
|
||||
0xdb, 0x5d, 0xc6, 0xac, 0x92, 0xc3, 0xe9, 0x11, 0xdd, 0x23, 0x34, 0x62, 0x3c, 0x3f, 0xee, 0x83,
|
||||
0x6a, 0x6f, 0x69, 0x34, 0xd4, 0xde, 0x32, 0x5e, 0x19, 0x67, 0x6b, 0xa8, 0x05, 0x87, 0x30, 0xbe,
|
||||
0x1e, 0xf5, 0x20, 0xb5, 0xab, 0x3f, 0x8a, 0x7e, 0xe5, 0x35, 0x2f, 0xaf, 0xab, 0x22, 0x9e, 0x30,
|
||||
0x3d, 0x14, 0x1e, 0xfa, 0xda, 0x8d, 0x14, 0x8e, 0x86, 0x95, 0x2e, 0xcc, 0xe9, 0xb4, 0x8d, 0xf0,
|
||||
0x65, 0xc1, 0x60, 0x0c, 0xb2, 0x8a, 0xb5, 0x90, 0xea, 0xb4, 0x10, 0xd2, 0xb6, 0xaf, 0xa3, 0xa1,
|
||||
0xb5, 0x7d, 0xf1, 0xc7, 0x6c, 0x22, 0xb6, 0x93, 0x04, 0xb6, 0x8a, 0xd5, 0x95, 0xc4, 0x68, 0x3b,
|
||||
0x49, 0xa8, 0x56, 0xc1, 0x51, 0xed, 0xec, 0x26, 0x7a, 0x17, 0x38, 0x3b, 0x4c, 0x2b, 0xe9, 0x70,
|
||||
0x33, 0x6c, 0x45, 0x63, 0xc6, 0xe9, 0xa8, 0x2f, 0xae, 0x1d, 0xff, 0xf9, 0x20, 0xfa, 0x2e, 0xe2,
|
||||
0xf9, 0x94, 0xcd, 0xf8, 0x82, 0x0d, 0x9f, 0x74, 0x5b, 0x53, 0xa4, 0xf1, 0xff, 0xd1, 0x2d, 0x34,
|
||||
0x90, 0x6e, 0x32, 0x66, 0x19, 0x9b, 0x08, 0xb2, 0x9b, 0x28, 0x71, 0x67, 0x37, 0x31, 0x98, 0x33,
|
||||
0xc2, 0x1a, 0xe1, 0x3e, 0x13, 0x3b, 0xf3, 0xb2, 0x64, 0xb9, 0x20, 0xdb, 0xd2, 0x22, 0x9d, 0x6d,
|
||||
0xe9, 0xa1, 0x48, 0x7d, 0xf6, 0x99, 0xd8, 0xce, 0x32, 0xb2, 0x3e, 0x4a, 0xdc, 0x59, 0x1f, 0x83,
|
||||
0x69, 0x0f, 0x93, 0xe8, 0x57, 0x9d, 0x27, 0x26, 0x0e, 0xf2, 0x4b, 0x3e, 0xa4, 0x9f, 0x85, 0x94,
|
||||
0x1b, 0x1f, 0xab, 0x9d, 0x1c, 0x52, 0x8d, 0x17, 0x6f, 0x0a, 0x5e, 0xd2, 0xcd, 0xa2, 0xc4, 0x9d,
|
||||
0xd5, 0x30, 0x98, 0xf6, 0xf0, 0x87, 0xd1, 0xdb, 0x3a, 0x4a, 0x36, 0xf3, 0xd9, 0x03, 0x34, 0x84,
|
||||
0xc2, 0x09, 0xed, 0x61, 0x07, 0x65, 0x83, 0x83, 0x96, 0xe9, 0xe0, 0xf3, 0x21, 0xaa, 0x07, 0x42,
|
||||
0xcf, 0x83, 0x30, 0xd4, 0xb2, 0xbd, 0xcb, 0x32, 0x46, 0xda, 0x56, 0xc2, 0x0e, 0xdb, 0x06, 0xd2,
|
||||
0xb6, 0xcb, 0xe8, 0x37, 0xcc, 0x63, 0xa9, 0xe7, 0x51, 0x29, 0xaf, 0x83, 0xf4, 0x3a, 0x51, 0x6f,
|
||||
0x17, 0x32, 0xbe, 0x36, 0xfa, 0xc1, 0xad, 0xfa, 0xe8, 0x11, 0x88, 0xd7, 0x07, 0x8c, 0xbf, 0x07,
|
||||
0x61, 0x48, 0xdb, 0xfe, 0xdb, 0x41, 0xf4, 0x7d, 0x2d, 0x7b, 0x91, 0xc7, 0x17, 0x19, 0x93, 0x53,
|
||||
0xe2, 0x31, 0x13, 0x37, 0xbc, 0xbc, 0x1e, 0x2f, 0xf3, 0x09, 0x31, 0xfd, 0xe3, 0x70, 0xc7, 0xf4,
|
||||
0x4f, 0x2a, 0x39, 0x19, 0x9f, 0xae, 0xa8, 0xe0, 0x05, 0xcc, 0xf8, 0x9a, 0x1a, 0x08, 0x5e, 0x50,
|
||||
0x19, 0x9f, 0x8f, 0xb4, 0xac, 0x1e, 0xd5, 0x61, 0x13, 0xb7, 0x7a, 0xe4, 0xc6, 0xc9, 0xfb, 0x21,
|
||||
0xc4, 0x86, 0xad, 0xa6, 0x03, 0xf3, 0xfc, 0x32, 0x9d, 0x9e, 0x17, 0x49, 0xdd, 0x8d, 0x1f, 0xe1,
|
||||
0x3d, 0xd4, 0x41, 0x88, 0xb0, 0x45, 0xa0, 0xda, 0xdb, 0xdf, 0xdb, 0xc4, 0x48, 0x0f, 0xa5, 0xbd,
|
||||
0x92, 0xcf, 0x0e, 0xd9, 0x34, 0x9e, 0x2c, 0xf5, 0xf8, 0xff, 0x38, 0x34, 0xf0, 0x20, 0x6d, 0x0a,
|
||||
0xf1, 0xc9, 0x2d, 0xb5, 0x74, 0x79, 0xfe, 0x7d, 0x10, 0x3d, 0x68, 0xaa, 0x7f, 0x15, 0xe7, 0x53,
|
||||
0xa6, 0xdb, 0x53, 0x95, 0x7e, 0x3b, 0x4f, 0x4e, 0x59, 0x25, 0xe2, 0x52, 0x0c, 0x7f, 0x80, 0x57,
|
||||
0x32, 0xa4, 0x63, 0xca, 0xf6, 0xc3, 0x6f, 0xa4, 0x6b, 0x5b, 0x7d, 0x5c, 0x07, 0x36, 0x1d, 0x02,
|
||||
0xfc, 0x56, 0x97, 0x12, 0x18, 0x00, 0xee, 0x87, 0x10, 0xdb, 0xea, 0x52, 0x70, 0x90, 0x2f, 0x52,
|
||||
0xc1, 0xf6, 0x59, 0xce, 0xca, 0x76, 0xab, 0x2b, 0x55, 0x1f, 0x21, 0x5a, 0x9d, 0x40, 0x6d, 0xb0,
|
||||
0xf1, 0xbc, 0x99, 0xc9, 0x71, 0x3d, 0x60, 0xa4, 0x35, 0x3d, 0x6e, 0xf4, 0x83, 0xed, 0xea, 0xce,
|
||||
0xf1, 0x79, 0xca, 0x16, 0xfc, 0x1a, 0xae, 0xee, 0x5c, 0x13, 0x0a, 0x20, 0x56, 0x77, 0x28, 0x68,
|
||||
0x67, 0x30, 0xc7, 0xcf, 0xab, 0x94, 0xdd, 0x80, 0x19, 0xcc, 0x55, 0xae, 0xc5, 0xc4, 0x0c, 0x86,
|
||||
0x60, 0xda, 0xc3, 0x71, 0xf4, 0x4b, 0x52, 0xf8, 0xfb, 0x3c, 0xcd, 0x87, 0x77, 0x11, 0xa5, 0x5a,
|
||||
0x60, 0xac, 0xde, 0xa3, 0x01, 0x50, 0xe2, 0xfa, 0xd7, 0x9d, 0x38, 0x9f, 0xb0, 0x0c, 0x2d, 0xb1,
|
||||
0x15, 0x07, 0x4b, 0xec, 0x61, 0x36, 0x75, 0x90, 0xc2, 0x3a, 0x7e, 0x8d, 0xaf, 0xe2, 0x32, 0xcd,
|
||||
0xa7, 0x43, 0x4c, 0xd7, 0x91, 0x13, 0xa9, 0x03, 0xc6, 0x81, 0x2e, 0xac, 0x15, 0xb7, 0x8b, 0xa2,
|
||||
0xac, 0xc3, 0x22, 0xd6, 0x85, 0x7d, 0x24, 0xd8, 0x85, 0x5b, 0x28, 0xee, 0x6d, 0x97, 0x4d, 0xb2,
|
||||
0x34, 0x0f, 0x7a, 0xd3, 0x48, 0x1f, 0x6f, 0x16, 0x05, 0x9d, 0xf7, 0x90, 0xc5, 0x0b, 0xd6, 0xd4,
|
||||
0x0c, 0x7b, 0x32, 0x2e, 0x10, 0xec, 0xbc, 0x00, 0xb4, 0xeb, 0x34, 0x29, 0x3e, 0x8a, 0xaf, 0x59,
|
||||
0xfd, 0x80, 0x59, 0x3d, 0xaf, 0x0d, 0x31, 0x7d, 0x8f, 0x20, 0xd6, 0x69, 0x38, 0xa9, 0x5d, 0xcd,
|
||||
0xa3, 0x77, 0xa5, 0xfc, 0x24, 0x2e, 0x45, 0x3a, 0x49, 0x8b, 0x38, 0x6f, 0xf2, 0x7f, 0x6c, 0x5c,
|
||||
0xb7, 0x28, 0xe3, 0x72, 0xb3, 0x27, 0xad, 0xdd, 0xfe, 0xeb, 0x20, 0xfa, 0x00, 0xfa, 0x3d, 0x61,
|
||||
0xe5, 0x2c, 0x95, 0xcb, 0xc8, 0x4a, 0x05, 0xe1, 0xe1, 0x67, 0x61, 0xa3, 0x2d, 0x05, 0x53, 0x9a,
|
||||
0xcf, 0x6f, 0xaf, 0xa8, 0x0b, 0xf6, 0x07, 0x51, 0xa4, 0x96, 0x2b, 0x72, 0x49, 0xe9, 0x8f, 0x5a,
|
||||
0xbd, 0x8e, 0xf1, 0xd6, 0x93, 0x1f, 0x04, 0x08, 0x3b, 0x55, 0xa8, 0xdf, 0xe5, 0x4a, 0x79, 0x88,
|
||||
0x6a, 0x48, 0x11, 0x31, 0x55, 0x00, 0x04, 0x16, 0x74, 0x7c, 0xc5, 0x6f, 0xf0, 0x82, 0xd6, 0x92,
|
||||
0x70, 0x41, 0x35, 0x61, 0xf7, 0xae, 0x74, 0x41, 0xb1, 0xbd, 0xab, 0xa6, 0x18, 0xa1, 0xbd, 0x2b,
|
||||
0xc8, 0x68, 0xc3, 0x3c, 0xfa, 0x75, 0xd7, 0xf0, 0x73, 0xce, 0xaf, 0x67, 0x71, 0x79, 0x3d, 0x7c,
|
||||
0x4c, 0x2b, 0x37, 0x8c, 0x71, 0xb4, 0xde, 0x8b, 0xb5, 0x61, 0xc1, 0x75, 0x58, 0x27, 0x1a, 0xe7,
|
||||
0x65, 0x06, 0xc2, 0x82, 0x67, 0x43, 0x23, 0x44, 0x58, 0x20, 0x50, 0x1b, 0xb9, 0x5d, 0x6f, 0x63,
|
||||
0x06, 0x57, 0x4b, 0x9e, 0xfa, 0x98, 0x51, 0xab, 0x25, 0x04, 0x83, 0x5d, 0x68, 0xbf, 0x8c, 0x8b,
|
||||
0x2b, 0xbc, 0x0b, 0x49, 0x51, 0xb8, 0x0b, 0x35, 0x08, 0x6c, 0xef, 0x31, 0x8b, 0xcb, 0xc9, 0x15,
|
||||
0xde, 0xde, 0x4a, 0x16, 0x6e, 0x6f, 0xc3, 0xc0, 0xf6, 0x56, 0x82, 0xd7, 0xa9, 0xb8, 0x3a, 0x62,
|
||||
0x22, 0xc6, 0xdb, 0xdb, 0x67, 0xc2, 0xed, 0xdd, 0x62, 0x6d, 0x26, 0xe3, 0x3a, 0x1c, 0xcf, 0x2f,
|
||||
0xaa, 0x49, 0x99, 0x5e, 0xb0, 0x61, 0xc0, 0x8a, 0x81, 0x88, 0x4c, 0x86, 0x84, 0xb5, 0xcf, 0x9f,
|
||||
0x0d, 0xa2, 0xbb, 0x4d, 0xb3, 0xf3, 0xaa, 0x52, 0x33, 0x2b, 0x70, 0xff, 0x09, 0xde, 0xbe, 0x04,
|
||||
0x4e, 0xec, 0x26, 0xf6, 0x50, 0x73, 0xa2, 0x2a, 0x5e, 0xa4, 0xf3, 0xbc, 0x32, 0x85, 0xfa, 0xac,
|
||||
0x8f, 0x75, 0x47, 0x81, 0x88, 0xaa, 0xbd, 0x14, 0xed, 0x84, 0xa6, 0xdb, 0xa7, 0x91, 0x1d, 0x24,
|
||||
0x15, 0x98, 0xd0, 0x9a, 0xe7, 0xed, 0x10, 0xc4, 0x84, 0x86, 0x93, 0xb0, 0x2b, 0xec, 0x97, 0x7c,
|
||||
0x5e, 0x54, 0x1d, 0x5d, 0x01, 0x40, 0xe1, 0xae, 0xd0, 0x86, 0xb5, 0xcf, 0x37, 0xd1, 0x6f, 0xba,
|
||||
0xdd, 0xcf, 0x7d, 0xd8, 0x9b, 0x74, 0x9f, 0xc2, 0x1e, 0xf1, 0xa8, 0x2f, 0x6e, 0x53, 0xba, 0xc6,
|
||||
0xb3, 0xd8, 0x65, 0x22, 0x4e, 0xb3, 0x6a, 0xb8, 0x82, 0xdb, 0x68, 0xe4, 0x44, 0x4a, 0x87, 0x71,
|
||||
0x30, 0xbe, 0xed, 0xce, 0x8b, 0x2c, 0x9d, 0xb4, 0xf7, 0x72, 0xb5, 0xae, 0x11, 0x87, 0xe3, 0x9b,
|
||||
0x8b, 0xc1, 0x78, 0x3d, 0x66, 0x42, 0xfd, 0xe7, 0x6c, 0x59, 0x30, 0x3c, 0x5e, 0x7b, 0x48, 0x38,
|
||||
0x5e, 0x43, 0x14, 0xd6, 0x67, 0xcc, 0xc4, 0x61, 0xbc, 0xe4, 0x73, 0x22, 0x5e, 0x1b, 0x71, 0xb8,
|
||||
0x3e, 0x2e, 0x66, 0xb3, 0x2a, 0xe3, 0xe1, 0x20, 0x17, 0xac, 0xcc, 0xe3, 0x6c, 0x2f, 0x8b, 0xa7,
|
||||
0xd5, 0x90, 0x88, 0x31, 0x3e, 0x45, 0x64, 0x55, 0x34, 0x8d, 0x3c, 0xc6, 0x83, 0x6a, 0x2f, 0x5e,
|
||||
0xf0, 0x32, 0x15, 0xf4, 0x63, 0xb4, 0x48, 0xe7, 0x63, 0xf4, 0x50, 0xd4, 0xdb, 0x76, 0x39, 0xb9,
|
||||
0x4a, 0x17, 0x2c, 0x09, 0x78, 0x6b, 0x90, 0x1e, 0xde, 0x1c, 0x14, 0x69, 0xb4, 0x31, 0x9f, 0x97,
|
||||
0x13, 0x46, 0x36, 0x9a, 0x12, 0x77, 0x36, 0x9a, 0xc1, 0xb4, 0x87, 0xbf, 0x1c, 0x44, 0xbf, 0xa5,
|
||||
0xa4, 0xee, 0x06, 0xeb, 0x6e, 0x5c, 0x5d, 0x5d, 0xf0, 0xb8, 0x4c, 0x86, 0x1f, 0x61, 0x76, 0x50,
|
||||
0xd4, 0xb8, 0x7e, 0x7a, 0x1b, 0x15, 0xf8, 0x58, 0x0f, 0xd3, 0xca, 0x19, 0x71, 0xe8, 0x63, 0xf5,
|
||||
0x90, 0xf0, 0x63, 0x85, 0x28, 0x0c, 0x20, 0x52, 0xae, 0x36, 0x33, 0x56, 0x48, 0x7d, 0x7f, 0x47,
|
||||
0x63, 0xb5, 0x93, 0x83, 0xf1, 0xb1, 0x16, 0xfa, 0xbd, 0x65, 0x93, 0xb2, 0x81, 0xf7, 0x98, 0x51,
|
||||
0x5f, 0x9c, 0xf4, 0x6c, 0x46, 0x45, 0xd8, 0x73, 0x6b, 0x64, 0x8c, 0xfa, 0xe2, 0x84, 0x67, 0x27,
|
||||
0xac, 0x85, 0x3c, 0x23, 0xa1, 0x6d, 0xd4, 0x17, 0x87, 0xd9, 0x97, 0x66, 0x9a, 0x79, 0xe1, 0x71,
|
||||
0xc0, 0x0e, 0x9c, 0x1b, 0xd6, 0x7b, 0xb1, 0xda, 0xe1, 0x5f, 0x0f, 0xa2, 0xef, 0x59, 0x8f, 0x47,
|
||||
0x3c, 0x49, 0x2f, 0x97, 0x0a, 0x7a, 0x15, 0x67, 0x73, 0x56, 0x0d, 0x9f, 0x52, 0xd6, 0xda, 0xac,
|
||||
0x29, 0xc1, 0xb3, 0x5b, 0xe9, 0xc0, 0xb1, 0xb3, 0x5d, 0x14, 0xd9, 0xf2, 0x8c, 0xcd, 0x8a, 0x8c,
|
||||
0x1c, 0x3b, 0x1e, 0x12, 0x1e, 0x3b, 0x10, 0x85, 0x59, 0xf9, 0x19, 0xaf, 0x73, 0x7e, 0x34, 0x2b,
|
||||
0x97, 0xa2, 0x70, 0x56, 0xde, 0x20, 0x30, 0x57, 0x3a, 0xe3, 0x3b, 0x3c, 0xcb, 0xd8, 0x44, 0xb4,
|
||||
0x5f, 0xd2, 0x1a, 0x4d, 0x4b, 0x84, 0x73, 0x25, 0x40, 0xda, 0xfd, 0x8c, 0x66, 0x0d, 0x19, 0x97,
|
||||
0xec, 0xf9, 0xf2, 0x30, 0xcd, 0xaf, 0x87, 0x78, 0x5a, 0x60, 0x01, 0x62, 0x3f, 0x03, 0x05, 0xe1,
|
||||
0x5a, 0xf5, 0x3c, 0x4f, 0x38, 0xbe, 0x56, 0xad, 0x25, 0xe1, 0xb5, 0xaa, 0x26, 0xa0, 0xc9, 0x53,
|
||||
0x46, 0x99, 0xac, 0x25, 0x61, 0x93, 0x9a, 0xc0, 0x42, 0xa1, 0xde, 0xf5, 0x26, 0x43, 0x21, 0xd8,
|
||||
0xe7, 0x5e, 0xed, 0xe4, 0x60, 0x0f, 0x6d, 0x16, 0xad, 0x7b, 0x4c, 0x4c, 0xae, 0xf0, 0x1e, 0xea,
|
||||
0x21, 0xe1, 0x1e, 0x0a, 0x51, 0x58, 0xa5, 0x33, 0x6e, 0x16, 0xdd, 0x2b, 0x78, 0xff, 0x68, 0x2d,
|
||||
0xb8, 0x57, 0x3b, 0x39, 0xb8, 0x8c, 0x3c, 0x98, 0xc9, 0x67, 0x86, 0x76, 0x72, 0x25, 0x0b, 0x2f,
|
||||
0x23, 0x0d, 0x03, 0x4b, 0xaf, 0x04, 0xf5, 0xe3, 0xc4, 0x4b, 0x6f, 0xe5, 0xe1, 0xd2, 0x7b, 0x9c,
|
||||
0x76, 0xf2, 0xcf, 0x66, 0x19, 0xa7, 0xa4, 0xc7, 0xbc, 0x1e, 0x23, 0xaf, 0xe2, 0x2c, 0x4d, 0x62,
|
||||
0xc1, 0xce, 0xf8, 0x35, 0xcb, 0xf1, 0x15, 0x93, 0x2e, 0xad, 0xe2, 0x47, 0x9e, 0x42, 0x78, 0xc5,
|
||||
0x14, 0x56, 0x84, 0xfd, 0x44, 0xd1, 0xe7, 0x15, 0xdb, 0x89, 0x2b, 0x22, 0x92, 0x79, 0x48, 0xb8,
|
||||
0x9f, 0x40, 0x14, 0xe6, 0xab, 0x4a, 0xfe, 0xe2, 0x4d, 0xc1, 0xca, 0x94, 0xe5, 0x13, 0x86, 0xe7,
|
||||
0xab, 0x90, 0x0a, 0xe7, 0xab, 0x08, 0xdd, 0xda, 0xa6, 0x31, 0xc1, 0xa9, 0x7d, 0xce, 0x02, 0x12,
|
||||
0x81, 0x73, 0x16, 0x04, 0x0a, 0x2b, 0x69, 0x01, 0x74, 0xab, 0xb3, 0x65, 0x25, 0xb8, 0xd5, 0x49,
|
||||
0xd3, 0xad, 0xcd, 0x2f, 0xc3, 0x8c, 0xeb, 0x61, 0xd2, 0x51, 0xf4, 0xb1, 0x3b, 0x5c, 0xd6, 0x7b,
|
||||
0xb1, 0xf8, 0x6e, 0xdb, 0x29, 0xcb, 0x62, 0x39, 0x85, 0x04, 0xb6, 0xb4, 0x1a, 0xa6, 0xcf, 0x6e,
|
||||
0x9b, 0xc3, 0x6a, 0x87, 0x3f, 0x1d, 0x44, 0xef, 0x63, 0x1e, 0x5f, 0x16, 0xd2, 0xef, 0x93, 0x6e,
|
||||
0x5b, 0x8a, 0x24, 0x0e, 0x92, 0x84, 0x35, 0x74, 0x19, 0xfe, 0x24, 0x7a, 0xaf, 0x11, 0xd9, 0x73,
|
||||
0x26, 0xba, 0x00, 0x7e, 0x02, 0x65, 0xca, 0x0f, 0x39, 0xe3, 0x7e, 0xab, 0x37, 0x6f, 0xd7, 0x26,
|
||||
0x7e, 0xb9, 0x2a, 0xb0, 0x36, 0x31, 0x36, 0xb4, 0x98, 0x58, 0x9b, 0x20, 0x98, 0xdd, 0xd5, 0x70,
|
||||
0xab, 0xf7, 0x3a, 0x15, 0x57, 0x32, 0xf7, 0x01, 0xbb, 0x1a, 0x5e, 0x59, 0x0d, 0x44, 0xec, 0x6a,
|
||||
0x90, 0x30, 0xcc, 0x0e, 0x1a, 0xb0, 0x1e, 0x9b, 0x58, 0x5c, 0x35, 0x86, 0xdc, 0x91, 0xb9, 0xd6,
|
||||
0x0d, 0xc2, 0xfe, 0xda, 0x88, 0xf5, 0x32, 0xe4, 0x71, 0xc8, 0x02, 0x58, 0x8a, 0xac, 0xf7, 0x62,
|
||||
0xb5, 0xc3, 0x3f, 0x8b, 0xbe, 0xdb, 0xaa, 0xd8, 0x1e, 0x8b, 0xc5, 0xbc, 0x64, 0xc9, 0x70, 0xab,
|
||||
0xa3, 0xdc, 0x0d, 0x68, 0x5c, 0x3f, 0xe9, 0xaf, 0xd0, 0xca, 0x97, 0x1b, 0x4e, 0x75, 0x2b, 0x53,
|
||||
0x86, 0xa7, 0x21, 0x93, 0x3e, 0x1b, 0xcc, 0x97, 0x69, 0x9d, 0xd6, 0x92, 0xd7, 0xed, 0x5d, 0xdb,
|
||||
0x8b, 0x38, 0xcd, 0xe4, 0x2b, 0xa7, 0x8f, 0x42, 0x46, 0x3d, 0x34, 0xb8, 0xe4, 0x25, 0x55, 0x5a,
|
||||
0x91, 0x59, 0x8e, 0x71, 0x67, 0xa9, 0xb4, 0x41, 0x47, 0x02, 0x64, 0xa5, 0xb4, 0xd9, 0x93, 0xd6,
|
||||
0x6e, 0x45, 0xb3, 0x55, 0x58, 0xff, 0xec, 0x76, 0x72, 0xcc, 0xab, 0x56, 0x45, 0x7a, 0xfa, 0x66,
|
||||
0x4f, 0x5a, 0x7b, 0xfd, 0xd3, 0xe8, 0xbd, 0xb6, 0x57, 0x3d, 0x11, 0x6d, 0x75, 0x9a, 0x02, 0x73,
|
||||
0xd1, 0x93, 0xfe, 0x0a, 0xda, 0xfd, 0xbf, 0x99, 0x3d, 0x62, 0xe5, 0x7f, 0xc2, 0x67, 0x33, 0x96,
|
||||
0x27, 0x2c, 0x69, 0x34, 0xaa, 0x7a, 0x2d, 0xf3, 0x39, 0x6d, 0xd7, 0x28, 0x8c, 0x5c, 0x0d, 0x53,
|
||||
0xa2, 0xdf, 0xfe, 0x06, 0x9a, 0xba, 0x68, 0xff, 0x39, 0x88, 0x1e, 0xa1, 0x45, 0x6b, 0x3a, 0xae,
|
||||
0x57, 0xc4, 0xdf, 0xeb, 0xe3, 0x08, 0xd3, 0x34, 0x45, 0xdd, 0xfe, 0x7f, 0x58, 0xb0, 0x8b, 0xb5,
|
||||
0x2f, 0xd2, 0x4a, 0xf0, 0x72, 0x39, 0xbe, 0xe2, 0x37, 0xcd, 0x69, 0x78, 0x3f, 0xf6, 0x69, 0x60,
|
||||
0xe4, 0x10, 0xc4, 0x62, 0x0d, 0x27, 0x5b, 0xae, 0xec, 0xa9, 0xf9, 0x8a, 0x70, 0xe5, 0x10, 0x1d,
|
||||
0xae, 0x7c, 0xd2, 0x46, 0xfe, 0xa6, 0x56, 0xf6, 0x88, 0xff, 0x2a, 0x5e, 0xd4, 0xf6, 0x31, 0xff,
|
||||
0xb5, 0x6e, 0xd0, 0xe6, 0x7f, 0x5a, 0xbc, 0x9b, 0x5e, 0x5e, 0x9a, 0x3a, 0xe1, 0x25, 0x75, 0x11,
|
||||
0x22, 0xff, 0x23, 0x50, 0xbb, 0x9c, 0xd8, 0x4b, 0x33, 0x26, 0xdf, 0x55, 0xbc, 0xbc, 0xbc, 0xcc,
|
||||
0x78, 0x9c, 0x80, 0xe5, 0x44, 0x2d, 0x1e, 0xb9, 0x72, 0x62, 0x39, 0x81, 0x71, 0xf6, 0x30, 0x5d,
|
||||
0x2d, 0xad, 0x7b, 0x50, 0x3e, 0x49, 0x33, 0x78, 0x38, 0x50, 0x6a, 0x1a, 0x21, 0x71, 0x98, 0xae,
|
||||
0x05, 0xd9, 0x34, 0xa3, 0x16, 0xd5, 0x41, 0xb4, 0x29, 0xff, 0xc3, 0xb6, 0xa2, 0x23, 0x26, 0xd2,
|
||||
0x0c, 0x04, 0xb3, 0xab, 0xea, 0x5a, 0x78, 0x5e, 0x48, 0xe3, 0xf7, 0xda, 0x5a, 0x4a, 0x42, 0xac,
|
||||
0xaa, 0x7d, 0xc2, 0xae, 0x0e, 0xeb, 0xdf, 0x77, 0xf9, 0x4d, 0x2e, 0x8d, 0xde, 0x6f, 0xab, 0x34,
|
||||
0x32, 0x62, 0x75, 0x08, 0x19, 0x6d, 0xf8, 0x47, 0xd1, 0x2f, 0x4a, 0xc3, 0x25, 0x2f, 0x86, 0x77,
|
||||
0x10, 0x85, 0xd2, 0x39, 0xc7, 0x77, 0x97, 0x94, 0xdb, 0xe3, 0xa8, 0xa6, 0x6f, 0x9c, 0x57, 0xf1,
|
||||
0x94, 0x0d, 0x1f, 0x10, 0x2d, 0x2e, 0xa5, 0xc4, 0x71, 0xd4, 0x36, 0xe5, 0xf7, 0x8a, 0x63, 0x9e,
|
||||
0x68, 0xeb, 0x48, 0x0d, 0x8d, 0x30, 0xd4, 0x2b, 0x5c, 0xc8, 0xa6, 0x86, 0xc7, 0xf1, 0x22, 0x9d,
|
||||
0x9a, 0xe9, 0x5b, 0x05, 0xb2, 0x0a, 0xa4, 0x86, 0x96, 0x19, 0x39, 0x10, 0x91, 0x1a, 0x92, 0xb0,
|
||||
0xf6, 0xf9, 0x4f, 0x83, 0xe8, 0x9e, 0x65, 0xf6, 0x9b, 0x7d, 0xc8, 0x83, 0xfc, 0x92, 0xd7, 0x89,
|
||||
0xe4, 0x61, 0x9a, 0x5f, 0x57, 0xc3, 0x4f, 0x29, 0x93, 0x38, 0x6f, 0x8a, 0xf2, 0xd9, 0xad, 0xf5,
|
||||
0xec, 0x1a, 0xa0, 0xd9, 0xa4, 0xb3, 0x6f, 0xea, 0x95, 0x06, 0x58, 0x03, 0x98, 0xbd, 0x3c, 0xc8,
|
||||
0x11, 0x6b, 0x80, 0x10, 0x6f, 0x9b, 0xd8, 0x38, 0xcf, 0x78, 0x0e, 0x9b, 0xd8, 0x5a, 0xa8, 0x85,
|
||||
0x44, 0x13, 0xb7, 0x20, 0x1b, 0x8f, 0x1b, 0x91, 0xda, 0x4f, 0xda, 0xce, 0x32, 0x10, 0x8f, 0x8d,
|
||||
0xaa, 0x01, 0x88, 0x78, 0x8c, 0x82, 0xda, 0xcf, 0x69, 0xf4, 0xed, 0xfa, 0x91, 0x9e, 0x94, 0x6c,
|
||||
0x91, 0x32, 0x78, 0xa8, 0xc4, 0x91, 0x10, 0xe3, 0xdf, 0x27, 0xec, 0xc8, 0x3a, 0xcf, 0xab, 0x22,
|
||||
0x8b, 0xab, 0x2b, 0x7d, 0xcc, 0xc0, 0xaf, 0x73, 0x23, 0x84, 0x07, 0x0d, 0x1e, 0x76, 0x50, 0x36,
|
||||
0xa8, 0x37, 0x32, 0x13, 0x62, 0x56, 0x70, 0xd5, 0x56, 0x98, 0x59, 0xed, 0xe4, 0xec, 0x5e, 0xfe,
|
||||
0x7e, 0x9c, 0x65, 0xac, 0x5c, 0x36, 0xb2, 0xa3, 0x38, 0x4f, 0x2f, 0x59, 0x25, 0xc0, 0x5e, 0xbe,
|
||||
0xa6, 0x46, 0x10, 0x23, 0xf6, 0xf2, 0x03, 0xb8, 0x5d, 0x1b, 0x01, 0xcf, 0x07, 0x79, 0xc2, 0xde,
|
||||
0x80, 0xb5, 0x11, 0xb4, 0x23, 0x19, 0x62, 0x6d, 0x44, 0xb1, 0x76, 0x4f, 0xfb, 0x79, 0xc6, 0x27,
|
||||
0xd7, 0x7a, 0x0a, 0xf0, 0x1b, 0x58, 0x4a, 0xe0, 0x1c, 0x70, 0x3f, 0x84, 0xd8, 0x49, 0x40, 0x0a,
|
||||
0x4e, 0x59, 0x91, 0xc5, 0x13, 0x78, 0xb2, 0x48, 0xe9, 0x68, 0x19, 0x31, 0x09, 0x40, 0x06, 0x14,
|
||||
0x57, 0x9f, 0x58, 0xc2, 0x8a, 0x0b, 0x0e, 0x2c, 0xdd, 0x0f, 0x21, 0x76, 0x1a, 0x94, 0x82, 0x71,
|
||||
0x91, 0xa5, 0x02, 0x0c, 0x03, 0xa5, 0x21, 0x25, 0xc4, 0x30, 0xf0, 0x09, 0x60, 0xf2, 0x88, 0x95,
|
||||
0x53, 0x86, 0x9a, 0x94, 0x92, 0xa0, 0xc9, 0x86, 0xb0, 0x07, 0x50, 0x55, 0xdd, 0x79, 0xb1, 0x04,
|
||||
0x07, 0x50, 0x75, 0xb5, 0x78, 0xb1, 0x24, 0x0e, 0xa0, 0x7a, 0x00, 0x28, 0xe2, 0x49, 0x5c, 0x09,
|
||||
0xbc, 0x88, 0x52, 0x12, 0x2c, 0x62, 0x43, 0xd8, 0x39, 0x5a, 0x15, 0x71, 0x2e, 0xc0, 0x1c, 0xad,
|
||||
0x0b, 0xe0, 0xbc, 0x5b, 0xbf, 0x4b, 0xca, 0x6d, 0x24, 0x51, 0xad, 0xc2, 0xc4, 0x5e, 0xca, 0xb2,
|
||||
0xa4, 0x02, 0x91, 0x44, 0x3f, 0xf7, 0x46, 0x4a, 0x44, 0x92, 0x36, 0x05, 0xba, 0x92, 0xde, 0xf9,
|
||||
0xc7, 0x6a, 0x07, 0x36, 0xfd, 0xef, 0x87, 0x10, 0x1b, 0x9f, 0x9a, 0x42, 0xef, 0xc4, 0x65, 0x99,
|
||||
0xd6, 0x93, 0xff, 0x0a, 0x5e, 0xa0, 0x46, 0x4e, 0xc4, 0x27, 0x8c, 0x03, 0xc3, 0xab, 0x09, 0xdc,
|
||||
0x58, 0xc1, 0x60, 0xe8, 0xfe, 0x30, 0xc8, 0xd8, 0x8c, 0x53, 0x4a, 0x9c, 0x97, 0xc3, 0xd8, 0xd3,
|
||||
0x44, 0xde, 0x0d, 0xaf, 0x74, 0x61, 0xce, 0x07, 0x22, 0xc6, 0xc5, 0x11, 0x5f, 0xb0, 0x33, 0xfe,
|
||||
0xe2, 0x4d, 0x5a, 0x89, 0x34, 0x9f, 0xea, 0x99, 0xfb, 0x19, 0x61, 0x09, 0x83, 0x89, 0x0f, 0x44,
|
||||
0x3a, 0x95, 0x6c, 0x02, 0x01, 0xca, 0x72, 0xcc, 0x6e, 0xd0, 0x04, 0x02, 0x5a, 0x34, 0x1c, 0x91,
|
||||
0x40, 0x84, 0x78, 0xbb, 0x2b, 0x65, 0x9c, 0xeb, 0xaf, 0x68, 0xcf, 0x78, 0x93, 0xcb, 0x51, 0xd6,
|
||||
0x20, 0x48, 0x6c, 0x0c, 0x04, 0x15, 0xec, 0xfa, 0xd2, 0xf8, 0xb7, 0x43, 0x6c, 0x8d, 0xb0, 0xd3,
|
||||
0x1e, 0x66, 0x8f, 0x7a, 0x90, 0x88, 0x2b, 0x7b, 0xc2, 0x81, 0x72, 0xd5, 0x3e, 0xe0, 0xf0, 0xa8,
|
||||
0x07, 0xe9, 0xec, 0x70, 0xb9, 0xd5, 0x7a, 0x1e, 0x4f, 0xae, 0xa7, 0x25, 0x9f, 0xe7, 0xc9, 0x0e,
|
||||
0xcf, 0x78, 0x09, 0x76, 0xb8, 0xbc, 0x52, 0x03, 0x94, 0xd8, 0xe1, 0xea, 0x50, 0xb1, 0x19, 0x9c,
|
||||
0x5b, 0x8a, 0xed, 0x2c, 0x9d, 0xc2, 0x15, 0xb5, 0x67, 0x48, 0x02, 0x44, 0x06, 0x87, 0x82, 0x48,
|
||||
0x27, 0x52, 0x2b, 0x6e, 0x91, 0x4e, 0xe2, 0x4c, 0xf9, 0xdb, 0xa2, 0xcd, 0x78, 0x60, 0x67, 0x27,
|
||||
0x42, 0x14, 0x90, 0x7a, 0x9e, 0xcd, 0xcb, 0xfc, 0x20, 0x17, 0x9c, 0xac, 0x67, 0x03, 0x74, 0xd6,
|
||||
0xd3, 0x01, 0x41, 0x58, 0x3d, 0x63, 0x6f, 0xea, 0xd2, 0xd4, 0xff, 0x60, 0x61, 0xb5, 0xfe, 0x7d,
|
||||
0xa4, 0xe5, 0xa1, 0xb0, 0x0a, 0x38, 0x50, 0x19, 0xed, 0x44, 0x75, 0x98, 0x80, 0xb6, 0xdf, 0x4d,
|
||||
0xd6, 0xba, 0x41, 0xdc, 0xcf, 0x58, 0x2c, 0x33, 0x16, 0xf2, 0x23, 0x81, 0x3e, 0x7e, 0x1a, 0xd0,
|
||||
0x6e, 0xb7, 0x78, 0xf5, 0xb9, 0x62, 0x93, 0xeb, 0xd6, 0x81, 0x2d, 0xbf, 0xa0, 0x0a, 0x21, 0xb6,
|
||||
0x5b, 0x08, 0x14, 0x6f, 0xa2, 0x83, 0x09, 0xcf, 0x43, 0x4d, 0x54, 0xcb, 0xfb, 0x34, 0x91, 0xe6,
|
||||
0xec, 0xe2, 0xd7, 0x48, 0x75, 0xcf, 0x54, 0xcd, 0xb4, 0x4e, 0x58, 0x70, 0x21, 0x62, 0xf1, 0x4b,
|
||||
0xc2, 0x36, 0x27, 0x87, 0x3e, 0x8f, 0xda, 0xa7, 0xd9, 0x5b, 0x56, 0x8e, 0xe8, 0xd3, 0xec, 0x14,
|
||||
0x4b, 0x57, 0x52, 0xf5, 0x91, 0x0e, 0x2b, 0x7e, 0x3f, 0xd9, 0xe8, 0x07, 0xdb, 0x25, 0x8f, 0xe7,
|
||||
0x73, 0x27, 0x63, 0x71, 0xa9, 0xbc, 0x6e, 0x06, 0x0c, 0x59, 0x8c, 0x58, 0xf2, 0x04, 0x70, 0x10,
|
||||
0xc2, 0x3c, 0xcf, 0x3b, 0x3c, 0x17, 0x2c, 0x17, 0x58, 0x08, 0xf3, 0x8d, 0x69, 0x30, 0x14, 0xc2,
|
||||
0x28, 0x05, 0xd0, 0x6f, 0xe5, 0x7e, 0x10, 0x13, 0xc7, 0xf1, 0x0c, 0xcd, 0xd8, 0xd4, 0x5e, 0x8f,
|
||||
0x92, 0x87, 0xfa, 0x2d, 0xe0, 0x9c, 0x57, 0xa6, 0xae, 0x97, 0xb3, 0xb8, 0x9c, 0x9a, 0xdd, 0x8d,
|
||||
0x64, 0xf8, 0x84, 0xb6, 0xe3, 0x93, 0xc4, 0x2b, 0xd3, 0xb0, 0x06, 0x08, 0x3b, 0x07, 0xb3, 0x78,
|
||||
0x6a, 0x6a, 0x8a, 0xd4, 0x40, 0xca, 0x5b, 0x55, 0x5d, 0xeb, 0x06, 0x81, 0x9f, 0x57, 0x69, 0xc2,
|
||||
0x78, 0xc0, 0x8f, 0x94, 0xf7, 0xf1, 0x03, 0x41, 0x90, 0xbd, 0xd5, 0xf5, 0x56, 0x2b, 0xba, 0xed,
|
||||
0x3c, 0xd1, 0xeb, 0xd8, 0x11, 0xf1, 0x78, 0x00, 0x17, 0xca, 0xde, 0x08, 0x1e, 0x8c, 0xd1, 0x66,
|
||||
0x83, 0x36, 0x34, 0x46, 0xcd, 0xfe, 0x6b, 0x9f, 0x31, 0x8a, 0xc1, 0xda, 0xe7, 0x4f, 0xf4, 0x18,
|
||||
0xdd, 0x8d, 0x45, 0x5c, 0xe7, 0xed, 0xaf, 0x52, 0x76, 0xa3, 0x17, 0xc2, 0x48, 0x7d, 0x1b, 0x6a,
|
||||
0x24, 0x3f, 0x63, 0x04, 0xab, 0xe2, 0xad, 0xde, 0x7c, 0xc0, 0xb7, 0x5e, 0x21, 0x74, 0xfa, 0x06,
|
||||
0x4b, 0x85, 0xad, 0xde, 0x7c, 0xc0, 0xb7, 0xfe, 0x3e, 0xba, 0xd3, 0x37, 0xf8, 0x48, 0x7a, 0xab,
|
||||
0x37, 0xaf, 0x7d, 0xff, 0x45, 0x33, 0x70, 0x5d, 0xe7, 0x75, 0x1e, 0x36, 0x11, 0xe9, 0x82, 0x61,
|
||||
0xe9, 0xa4, 0x6f, 0xcf, 0xa0, 0xa1, 0x74, 0x92, 0x56, 0x71, 0x2e, 0xd5, 0xc1, 0x4a, 0x71, 0xc2,
|
||||
0xab, 0x54, 0x1e, 0x79, 0x78, 0xd6, 0xc3, 0x68, 0x03, 0x87, 0x16, 0x4d, 0x21, 0x25, 0xfb, 0xf2,
|
||||
0xd6, 0x43, 0xed, 0xf9, 0xec, 0x8d, 0x80, 0xbd, 0xf6, 0x31, 0xed, 0xcd, 0x9e, 0xb4, 0x7d, 0x8d,
|
||||
0xea, 0x31, 0xee, 0xfb, 0xdb, 0x50, 0xab, 0xa2, 0xaf, 0x70, 0x9f, 0xf4, 0x57, 0xd0, 0xee, 0xff,
|
||||
0xaa, 0x59, 0x57, 0x40, 0xff, 0x7a, 0x10, 0x3c, 0xed, 0x63, 0x11, 0x0c, 0x84, 0x67, 0xb7, 0xd2,
|
||||
0xd1, 0x05, 0xf9, 0xbb, 0x66, 0x01, 0xdd, 0xa0, 0xf2, 0x2b, 0x95, 0x97, 0x65, 0xc2, 0x4a, 0x3d,
|
||||
0x26, 0x42, 0xcd, 0x6a, 0x61, 0x38, 0x32, 0x3e, 0xb9, 0xa5, 0x96, 0x73, 0xc5, 0x92, 0x07, 0xeb,
|
||||
0xaf, 0x29, 0x9d, 0xf2, 0x84, 0x2c, 0x3b, 0x34, 0x2c, 0xd0, 0xa7, 0xb7, 0x55, 0xa3, 0xc6, 0x8a,
|
||||
0x03, 0xcb, 0x1b, 0x1b, 0x9e, 0xf5, 0x34, 0xec, 0xdd, 0xe1, 0xf0, 0xf1, 0xed, 0x94, 0x74, 0x59,
|
||||
0xfe, 0x63, 0x10, 0x3d, 0xf4, 0x58, 0xfb, 0x3e, 0x01, 0xec, 0x7a, 0xfc, 0x30, 0x60, 0x9f, 0x52,
|
||||
0x32, 0x85, 0xfb, 0x9d, 0x6f, 0xa6, 0x6c, 0xef, 0x23, 0xf2, 0x54, 0xf6, 0xd2, 0x4c, 0xb0, 0xb2,
|
||||
0x7d, 0x1f, 0x91, 0x6f, 0x57, 0x51, 0x23, 0xfa, 0x3e, 0xa2, 0x00, 0xee, 0xdc, 0x47, 0x84, 0x78,
|
||||
0x46, 0xef, 0x23, 0x42, 0xad, 0x05, 0xef, 0x23, 0x0a, 0x6b, 0x50, 0xe1, 0xbd, 0x29, 0x82, 0xda,
|
||||
0xb7, 0xee, 0x65, 0xd1, 0xdf, 0xc6, 0x7e, 0x7a, 0x1b, 0x15, 0x62, 0x82, 0x53, 0x9c, 0x3c, 0x35,
|
||||
0xd8, 0xe3, 0x99, 0x7a, 0x27, 0x07, 0xb7, 0x7a, 0xf3, 0xda, 0xf7, 0x8f, 0xf5, 0xea, 0xc6, 0x84,
|
||||
0x73, 0x5e, 0xca, 0xbb, 0xa8, 0xd6, 0x43, 0xe1, 0xb9, 0xb6, 0xe0, 0xb6, 0xfc, 0x46, 0x3f, 0x98,
|
||||
0xa8, 0x6e, 0x4d, 0xe8, 0x46, 0x1f, 0x75, 0x19, 0x02, 0x4d, 0xbe, 0xd5, 0x9b, 0x27, 0xa6, 0x11,
|
||||
0xe5, 0x5b, 0xb5, 0x76, 0x0f, 0x63, 0x7e, 0x5b, 0x3f, 0xe9, 0xaf, 0xa0, 0xdd, 0x2f, 0x74, 0xda,
|
||||
0xe8, 0xba, 0x97, 0xed, 0xbc, 0xd9, 0x65, 0x6a, 0xec, 0x35, 0xf3, 0xa8, 0x2f, 0x1e, 0x4a, 0x20,
|
||||
0xdc, 0x29, 0xb4, 0x2b, 0x81, 0x40, 0xa7, 0xd1, 0x8f, 0x6f, 0xa7, 0xa4, 0xcb, 0xf2, 0x8f, 0x83,
|
||||
0xe8, 0x2e, 0x59, 0x16, 0xdd, 0x0f, 0x3e, 0xed, 0x6b, 0x19, 0xf4, 0x87, 0xcf, 0x6e, 0xad, 0xa7,
|
||||
0x0b, 0xf5, 0x2f, 0x83, 0xe8, 0x5e, 0xa0, 0x50, 0xaa, 0x83, 0xdc, 0xc2, 0xba, 0xdf, 0x51, 0x3e,
|
||||
0xbf, 0xbd, 0x22, 0x35, 0xdd, 0xbb, 0xf8, 0xb8, 0x7d, 0x51, 0x4f, 0xc0, 0xf6, 0x98, 0xbe, 0xa8,
|
||||
0xa7, 0x5b, 0x0b, 0x6e, 0xf2, 0xc4, 0x17, 0xcd, 0xa2, 0x0b, 0xdd, 0xe4, 0x91, 0xe7, 0xfd, 0xc0,
|
||||
0x9a, 0x63, 0xb5, 0x93, 0xc3, 0x9c, 0xbc, 0x78, 0x53, 0xc4, 0x79, 0x42, 0x3b, 0x51, 0xf2, 0x6e,
|
||||
0x27, 0x86, 0x83, 0x9b, 0x63, 0xb5, 0xf4, 0x94, 0x37, 0x0b, 0xa9, 0x47, 0x94, 0xbe, 0x41, 0x82,
|
||||
0x9b, 0x63, 0x2d, 0x94, 0xf0, 0xa6, 0xb3, 0xc6, 0x90, 0x37, 0x90, 0x2c, 0x3e, 0xee, 0x83, 0x82,
|
||||
0x14, 0xdd, 0x78, 0x33, 0x7b, 0xee, 0x1b, 0x21, 0x2b, 0xad, 0x7d, 0xf7, 0xcd, 0x9e, 0x34, 0xe1,
|
||||
0x76, 0xcc, 0xc4, 0x17, 0x2c, 0x4e, 0x58, 0x19, 0x74, 0x6b, 0xa8, 0x5e, 0x6e, 0x5d, 0x1a, 0x73,
|
||||
0xbb, 0xc3, 0xb3, 0xf9, 0x2c, 0xd7, 0x8d, 0x49, 0xba, 0x75, 0xa9, 0x6e, 0xb7, 0x80, 0x86, 0xdb,
|
||||
0x82, 0xd6, 0xad, 0x4c, 0x2f, 0x1f, 0x87, 0xcd, 0x78, 0x59, 0xe5, 0x7a, 0x2f, 0x96, 0xae, 0xa7,
|
||||
0xee, 0x46, 0x1d, 0xf5, 0x04, 0x3d, 0x69, 0xb3, 0x27, 0x0d, 0xf7, 0xe7, 0x1c, 0xb7, 0xa6, 0x3f,
|
||||
0x6d, 0x75, 0xd8, 0x6a, 0x75, 0xa9, 0x27, 0xfd, 0x15, 0xe0, 0x6e, 0xa8, 0xee, 0x55, 0x87, 0x69,
|
||||
0x25, 0xf6, 0xd2, 0x2c, 0x1b, 0xae, 0x07, 0xba, 0x49, 0x03, 0x05, 0x77, 0x43, 0x11, 0x98, 0xe8,
|
||||
0xc9, 0xcd, 0xee, 0x61, 0x3e, 0xec, 0xb2, 0x23, 0xa9, 0x5e, 0x3d, 0xd9, 0xa5, 0xc1, 0x8e, 0x96,
|
||||
0xf3, 0xa8, 0x4d, 0x6d, 0x47, 0xe1, 0x07, 0xd7, 0xaa, 0xf0, 0x56, 0x6f, 0x1e, 0xbc, 0x6e, 0x97,
|
||||
0x94, 0x9c, 0x59, 0x1e, 0x50, 0x26, 0xbc, 0x99, 0xe4, 0x61, 0x07, 0x05, 0x76, 0x05, 0xd5, 0x30,
|
||||
0x7a, 0x9d, 0x26, 0x53, 0x26, 0xd0, 0x37, 0x45, 0x2e, 0x10, 0x7c, 0x53, 0x04, 0x40, 0xd0, 0x74,
|
||||
0xea, 0x77, 0xb3, 0x1d, 0x7a, 0x90, 0x60, 0x4d, 0xa7, 0x95, 0x1d, 0x2a, 0xd4, 0x74, 0x28, 0x0d,
|
||||
0xa2, 0x81, 0x71, 0xab, 0x2f, 0x1a, 0x78, 0x1c, 0x32, 0x03, 0x6e, 0x1b, 0x58, 0xef, 0xc5, 0x82,
|
||||
0x19, 0xc5, 0x3a, 0x4c, 0x67, 0xa9, 0xc0, 0x66, 0x14, 0xc7, 0x46, 0x8d, 0x84, 0x66, 0x94, 0x36,
|
||||
0x4a, 0x55, 0xaf, 0xce, 0x11, 0x0e, 0x92, 0x70, 0xf5, 0x14, 0xd3, 0xaf, 0x7a, 0x86, 0x6d, 0xbd,
|
||||
0xd8, 0xcc, 0x4d, 0x97, 0x11, 0x57, 0x7a, 0xb1, 0x8c, 0xf4, 0x6d, 0xf9, 0x01, 0x2a, 0x04, 0x43,
|
||||
0x51, 0x87, 0x52, 0x80, 0x1b, 0xf6, 0x35, 0xd7, 0xbc, 0x7b, 0x2d, 0x0a, 0x16, 0x97, 0x71, 0x3e,
|
||||
0x41, 0x17, 0xa7, 0xd2, 0x60, 0x8b, 0x0c, 0x2d, 0x4e, 0x49, 0x0d, 0xf0, 0xda, 0xdc, 0xff, 0x74,
|
||||
0x14, 0x19, 0x0a, 0xe6, 0x1b, 0x4d, 0xff, 0xcb, 0xd1, 0x47, 0x3d, 0x48, 0xf8, 0xda, 0xbc, 0x01,
|
||||
0xcc, 0xc6, 0xb7, 0x72, 0xfa, 0x51, 0xc0, 0x94, 0x8f, 0x86, 0x16, 0xc2, 0xb4, 0x0a, 0xe8, 0xd4,
|
||||
0x26, 0xc1, 0x65, 0xe2, 0x47, 0x6c, 0x89, 0x75, 0x6a, 0x9b, 0x9f, 0x4a, 0x24, 0xd4, 0xa9, 0xdb,
|
||||
0x28, 0xc8, 0x33, 0xdd, 0x75, 0xd0, 0x4a, 0x40, 0xdf, 0x5d, 0xfa, 0xac, 0x76, 0x72, 0x60, 0xe4,
|
||||
0xec, 0xa6, 0x0b, 0xef, 0x3d, 0x01, 0x52, 0xd0, 0xdd, 0x74, 0x81, 0xbf, 0x26, 0x58, 0xef, 0xc5,
|
||||
0xc2, 0x57, 0xf2, 0xb1, 0x60, 0x6f, 0x9a, 0x77, 0xe5, 0x48, 0x71, 0xa5, 0xbc, 0xf5, 0xb2, 0x7c,
|
||||
0xad, 0x1b, 0xb4, 0x07, 0x60, 0x4f, 0x4a, 0x3e, 0x61, 0x55, 0xa5, 0x6f, 0x2f, 0xf4, 0x4f, 0x18,
|
||||
0x69, 0xd9, 0x08, 0xdc, 0x5d, 0xf8, 0x20, 0x0c, 0xd9, 0x96, 0xd1, 0x22, 0x7b, 0x9f, 0xcf, 0x0a,
|
||||
0xaa, 0xd9, 0xbe, 0xca, 0x67, 0xb5, 0x93, 0xb3, 0xc3, 0x4b, 0x4b, 0xdd, 0x0b, 0x7c, 0xd6, 0x50,
|
||||
0x75, 0xec, 0xee, 0x9e, 0x47, 0x3d, 0x48, 0xed, 0xea, 0x8b, 0xe8, 0xad, 0x43, 0x3e, 0x1d, 0xb3,
|
||||
0x3c, 0x19, 0x7e, 0xdf, 0x3f, 0x42, 0xcb, 0xa7, 0xa3, 0xfa, 0x67, 0x63, 0xf4, 0x0e, 0x25, 0xb6,
|
||||
0x87, 0x00, 0x77, 0xd9, 0xc5, 0x7c, 0x3a, 0x16, 0xb1, 0x00, 0x87, 0x00, 0xe5, 0xef, 0xa3, 0x5a,
|
||||
0x40, 0x1c, 0x02, 0xf4, 0x00, 0x60, 0xef, 0xac, 0x64, 0x0c, 0xb5, 0x57, 0x0b, 0x82, 0xf6, 0x34,
|
||||
0x60, 0xb3, 0x08, 0x63, 0xaf, 0x4e, 0xd4, 0xe1, 0xa1, 0x3d, 0xab, 0x23, 0xa5, 0x44, 0x16, 0xd1,
|
||||
0xa6, 0x6c, 0xe7, 0x56, 0xd5, 0x97, 0xf7, 0xa9, 0xcc, 0x67, 0xb3, 0xb8, 0x5c, 0x82, 0xce, 0xad,
|
||||
0x6b, 0xe9, 0x00, 0x44, 0xe7, 0x46, 0x41, 0x3b, 0x6a, 0x9b, 0xc7, 0x3c, 0xb9, 0xde, 0xe7, 0x25,
|
||||
0x9f, 0x8b, 0x34, 0x67, 0xf0, 0x4e, 0x0d, 0xf3, 0x40, 0x5d, 0x86, 0x18, 0xb5, 0x14, 0x6b, 0xb3,
|
||||
0x5c, 0x49, 0xa8, 0xf3, 0x84, 0xf2, 0x4e, 0xe3, 0x4a, 0xf0, 0x12, 0xbe, 0x4f, 0x54, 0x56, 0x20,
|
||||
0x44, 0x64, 0xb9, 0x24, 0x0c, 0xda, 0xfe, 0x24, 0xcd, 0xa7, 0x68, 0xdb, 0x9f, 0xb8, 0x37, 0x82,
|
||||
0xde, 0xa3, 0x01, 0x3b, 0xa0, 0xd4, 0x43, 0x53, 0x03, 0x40, 0x7f, 0x19, 0x8b, 0x3e, 0x74, 0x97,
|
||||
0x20, 0x06, 0x14, 0x4e, 0x02, 0x57, 0x2f, 0x0b, 0x96, 0xb3, 0xa4, 0x39, 0x35, 0x87, 0xb9, 0xf2,
|
||||
0x88, 0xa0, 0x2b, 0x48, 0xda, 0x58, 0x24, 0xe5, 0xa7, 0xf3, 0xfc, 0xa4, 0xe4, 0x97, 0x69, 0xc6,
|
||||
0x4a, 0x10, 0x8b, 0x94, 0xba, 0x23, 0x27, 0x62, 0x11, 0xc6, 0xd9, 0xe3, 0x17, 0x52, 0xea, 0x5d,
|
||||
0xcc, 0x7d, 0x56, 0xc6, 0x13, 0x78, 0xfc, 0x42, 0xd9, 0x68, 0x63, 0xc4, 0xce, 0x60, 0x00, 0x77,
|
||||
0x12, 0x1d, 0xe5, 0x3a, 0x5f, 0xca, 0xfe, 0xa1, 0xbf, 0xcc, 0x94, 0xf7, 0x64, 0x56, 0x20, 0xd1,
|
||||
0xd1, 0xe6, 0x30, 0x92, 0x48, 0x74, 0xc2, 0x1a, 0x76, 0x2a, 0x91, 0xdc, 0xb1, 0x3e, 0x56, 0x04,
|
||||
0xa6, 0x12, 0x65, 0xa3, 0x11, 0x12, 0x53, 0x49, 0x0b, 0x02, 0x01, 0xa9, 0x19, 0x06, 0x53, 0x34,
|
||||
0x20, 0x19, 0x69, 0x30, 0x20, 0xb9, 0x94, 0x0d, 0x14, 0x07, 0x79, 0x2a, 0xd2, 0x38, 0x1b, 0x33,
|
||||
0x71, 0x12, 0x97, 0xf1, 0x8c, 0x09, 0x56, 0xc2, 0x40, 0xa1, 0x91, 0x91, 0xc7, 0x10, 0x81, 0x82,
|
||||
0x62, 0xb5, 0xc3, 0xdf, 0x8d, 0xde, 0xa9, 0xe7, 0x7d, 0x96, 0xeb, 0x3f, 0xc1, 0xf1, 0x42, 0xfe,
|
||||
0xed, 0x9e, 0xe1, 0xbb, 0xc6, 0xc6, 0x58, 0x94, 0x2c, 0x9e, 0x35, 0xb6, 0xdf, 0x36, 0xbf, 0x4b,
|
||||
0xf0, 0xc9, 0xa0, 0xee, 0xcf, 0xc7, 0x5c, 0xa4, 0x97, 0xf5, 0x32, 0x5b, 0x7f, 0x41, 0x04, 0xfa,
|
||||
0xb3, 0x2b, 0x1e, 0x05, 0x6e, 0xd9, 0xc0, 0x38, 0x1b, 0xa7, 0x5d, 0xe9, 0x29, 0x2b, 0x32, 0x18,
|
||||
0xa7, 0x3d, 0x6d, 0x09, 0x10, 0x71, 0x1a, 0x05, 0xed, 0xe0, 0x74, 0xc5, 0x67, 0x2c, 0x5c, 0x99,
|
||||
0x33, 0xd6, 0xaf, 0x32, 0x67, 0xde, 0x47, 0x19, 0x59, 0xf4, 0xce, 0x11, 0x9b, 0x5d, 0xb0, 0xb2,
|
||||
0xba, 0x4a, 0x8b, 0xfd, 0x3a, 0xe1, 0x8a, 0xc5, 0x1c, 0x7e, 0xb6, 0x68, 0x89, 0x91, 0x41, 0x88,
|
||||
0xac, 0x94, 0x40, 0xed, 0x4c, 0x60, 0x81, 0x83, 0xea, 0x38, 0x9e, 0x31, 0x79, 0x67, 0x08, 0x98,
|
||||
0x09, 0x1c, 0x23, 0x0e, 0x44, 0xcc, 0x04, 0x24, 0xec, 0x7c, 0xdf, 0x65, 0x99, 0x53, 0x36, 0xad,
|
||||
0x7b, 0x58, 0x79, 0x12, 0x2f, 0x67, 0x2c, 0x17, 0xda, 0x24, 0xd8, 0x93, 0x77, 0x4c, 0xe2, 0x3c,
|
||||
0xb1, 0x27, 0xdf, 0x47, 0xcf, 0x09, 0x4d, 0xde, 0x83, 0x3f, 0xe1, 0xa5, 0x50, 0x7f, 0x60, 0xe7,
|
||||
0xbc, 0xcc, 0x40, 0x68, 0xf2, 0x1f, 0xaa, 0x47, 0x12, 0xa1, 0x29, 0xac, 0xe1, 0xdc, 0x4c, 0xef,
|
||||
0x95, 0xe1, 0x15, 0x2b, 0x4d, 0x3f, 0x79, 0x31, 0x8b, 0xd3, 0x4c, 0xf7, 0x86, 0x1f, 0x04, 0x6c,
|
||||
0x13, 0x3a, 0xc4, 0xcd, 0xf4, 0x7d, 0x75, 0x9d, 0xbb, 0xfc, 0xc3, 0x25, 0x04, 0xaf, 0x08, 0x3a,
|
||||
0xec, 0x13, 0xaf, 0x08, 0xba, 0xb5, 0xec, 0xca, 0xdd, 0xb2, 0x92, 0x5b, 0x4a, 0x62, 0x87, 0x27,
|
||||
0x70, 0xbf, 0xd0, 0xb1, 0x09, 0x40, 0x62, 0xe5, 0x1e, 0x54, 0xb0, 0xa9, 0x81, 0xc5, 0xf6, 0xd2,
|
||||
0x3c, 0xce, 0xd2, 0x9f, 0xc0, 0xb4, 0xde, 0xb1, 0xd3, 0x10, 0x44, 0x6a, 0x80, 0x93, 0x98, 0xab,
|
||||
0x7d, 0x26, 0xce, 0xd2, 0x3a, 0xf4, 0xaf, 0x05, 0x9e, 0x9b, 0x24, 0xba, 0x5d, 0x39, 0xa4, 0x73,
|
||||
0xfb, 0x2c, 0x7c, 0xac, 0xdb, 0x45, 0x31, 0xae, 0x67, 0xd5, 0x53, 0x36, 0x61, 0x69, 0x21, 0x86,
|
||||
0x9f, 0x84, 0x9f, 0x15, 0xc0, 0x89, 0x83, 0x16, 0x3d, 0xd4, 0x9c, 0xd7, 0xf7, 0x75, 0x2c, 0x19,
|
||||
0xab, 0xbf, 0x3c, 0x77, 0x5e, 0xb1, 0x52, 0x27, 0x1a, 0xfb, 0x4c, 0x80, 0xd1, 0xe9, 0x70, 0x23,
|
||||
0x07, 0xac, 0x2b, 0x4a, 0x8c, 0xce, 0xb0, 0x86, 0xdd, 0xec, 0x73, 0xb8, 0x53, 0x56, 0xf1, 0x6c,
|
||||
0xc1, 0xe4, 0x79, 0xc3, 0x0d, 0xd2, 0x98, 0x43, 0x11, 0x9b, 0x7d, 0x34, 0x6d, 0xb3, 0xb5, 0xb6,
|
||||
0xdb, 0xed, 0x7c, 0x79, 0x00, 0x8f, 0x4c, 0x20, 0x96, 0x24, 0x46, 0x64, 0x6b, 0x01, 0xdc, 0xd9,
|
||||
0x0c, 0x2f, 0x79, 0x9c, 0x4c, 0xe2, 0x4a, 0x9c, 0xc4, 0xcb, 0x8c, 0xc7, 0x89, 0x9c, 0xd7, 0xe1,
|
||||
0x66, 0x78, 0xc3, 0x8c, 0x5c, 0x88, 0xda, 0x0c, 0xa7, 0x60, 0x37, 0x3b, 0x93, 0x7f, 0x50, 0x4f,
|
||||
0x9f, 0xe5, 0x84, 0xd9, 0x99, 0x2c, 0x2f, 0x3c, 0xc7, 0xf9, 0x20, 0x0c, 0xd9, 0x6f, 0xd0, 0x94,
|
||||
0x48, 0xa6, 0x21, 0xf7, 0x30, 0x1d, 0x2f, 0x01, 0xf9, 0x20, 0x40, 0xd8, 0x5b, 0x3e, 0xd4, 0xef,
|
||||
0xcd, 0xdf, 0x84, 0x11, 0xfa, 0x8e, 0xee, 0x0d, 0x4c, 0xd7, 0x85, 0x46, 0xee, 0x65, 0x11, 0x9b,
|
||||
0x3d, 0x69, 0x9b, 0x66, 0xee, 0x5c, 0xc5, 0x62, 0x3b, 0x49, 0x8e, 0x58, 0x85, 0x7c, 0x50, 0x5e,
|
||||
0x0b, 0x47, 0x56, 0x4a, 0xa4, 0x99, 0x6d, 0xca, 0x76, 0xf4, 0x5a, 0xf6, 0x22, 0x49, 0x85, 0x96,
|
||||
0x35, 0x27, 0xa4, 0x37, 0xda, 0x06, 0xda, 0x14, 0x51, 0x2b, 0x9a, 0xb6, 0xb1, 0xbc, 0x66, 0xce,
|
||||
0xf8, 0x74, 0x9a, 0x31, 0x0d, 0x9d, 0xb2, 0x58, 0x5d, 0x51, 0xb8, 0xd5, 0xb6, 0x85, 0x82, 0x44,
|
||||
0x2c, 0x0f, 0x2a, 0xd8, 0x34, 0xb2, 0xc6, 0xd4, 0x2b, 0xa9, 0xe6, 0xc1, 0xae, 0xb6, 0xcd, 0x78,
|
||||
0x00, 0x91, 0x46, 0xa2, 0xa0, 0xfd, 0xee, 0xad, 0x16, 0xef, 0xb3, 0xe6, 0x49, 0xc0, 0x0b, 0x9d,
|
||||
0xa4, 0xb2, 0x23, 0x26, 0xbe, 0x7b, 0x43, 0x30, 0xbb, 0x4e, 0x00, 0x1e, 0x9e, 0x2f, 0x0f, 0x12,
|
||||
0xb8, 0x4e, 0x80, 0xfa, 0x92, 0x21, 0xd6, 0x09, 0x14, 0xeb, 0x37, 0x9d, 0xd9, 0xf7, 0x3a, 0x8c,
|
||||
0x2b, 0x5b, 0x39, 0xa4, 0xe9, 0x50, 0x30, 0xd4, 0x74, 0x94, 0x82, 0xff, 0x48, 0xdd, 0xad, 0x35,
|
||||
0xe4, 0x91, 0x62, 0xfb, 0x6a, 0x2b, 0x5d, 0x98, 0x8d, 0x4b, 0x66, 0x3d, 0x29, 0x8f, 0x2c, 0xe1,
|
||||
0x7f, 0x9b, 0x40, 0x09, 0x89, 0xb8, 0xd4, 0x82, 0x94, 0xed, 0xe7, 0x1f, 0xfc, 0xd7, 0x57, 0x77,
|
||||
0x06, 0x3f, 0xff, 0xea, 0xce, 0xe0, 0x7f, 0xbe, 0xba, 0x33, 0xf8, 0xd9, 0xd7, 0x77, 0xbe, 0xf5,
|
||||
0xf3, 0xaf, 0xef, 0x7c, 0xeb, 0xbf, 0xbf, 0xbe, 0xf3, 0xad, 0x2f, 0xdf, 0xd2, 0x7f, 0x68, 0xf5,
|
||||
0xe2, 0x17, 0xe4, 0x9f, 0x4b, 0x7d, 0xf6, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xab, 0xf4, 0x52,
|
||||
0x6c, 0x8c, 0x75, 0x00, 0x00,
|
||||
// 5307 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x9d, 0xdd, 0x6f, 0x1d, 0x49,
|
||||
0x56, 0xc0, 0xf7, 0xbe, 0x30, 0xd0, 0xcb, 0x0e, 0x70, 0x07, 0x86, 0xd9, 0x61, 0x37, 0xc9, 0x64,
|
||||
0x92, 0x38, 0x89, 0xed, 0xeb, 0x4c, 0x32, 0x5f, 0xec, 0x22, 0x81, 0x63, 0xc7, 0x1e, 0xb3, 0xb6,
|
||||
0x63, 0x7c, 0xaf, 0x13, 0x69, 0x24, 0x24, 0xda, 0xb7, 0xcb, 0xd7, 0x8d, 0xfb, 0x76, 0xf5, 0x76,
|
||||
0xd7, 0xbd, 0xce, 0x5d, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2b, 0xbe, 0xc4, 0x1b, 0x12, 0x7f,
|
||||
0x01, 0x7f, 0x06, 0x8f, 0xfb, 0xc8, 0x23, 0x9a, 0x79, 0xe3, 0x9d, 0x77, 0xd4, 0x55, 0xd5, 0xf5,
|
||||
0x71, 0xfa, 0x9c, 0xea, 0xf6, 0xf0, 0x94, 0xe8, 0x9e, 0xdf, 0x39, 0xa7, 0x3e, 0x4f, 0x9d, 0xaa,
|
||||
0xae, 0x6e, 0x47, 0xb7, 0x8b, 0xf3, 0xad, 0xa2, 0xe4, 0x82, 0x57, 0x5b, 0x15, 0x2b, 0x97, 0xe9,
|
||||
0x94, 0x35, 0xff, 0x8e, 0xe4, 0xcf, 0xc3, 0xb7, 0xe2, 0x7c, 0x25, 0x56, 0x05, 0x7b, 0xff, 0x3d,
|
||||
0x4b, 0x4e, 0xf9, 0x7c, 0x1e, 0xe7, 0x49, 0xa5, 0x90, 0xf7, 0xdf, 0xb5, 0x12, 0xb6, 0x64, 0xb9,
|
||||
0xd0, 0xbf, 0x3f, 0xfd, 0xdf, 0xff, 0x19, 0x44, 0x6f, 0xef, 0x64, 0x29, 0xcb, 0xc5, 0x8e, 0xd6,
|
||||
0x18, 0x7e, 0x19, 0x7d, 0x67, 0xbb, 0x28, 0xf6, 0x99, 0x78, 0xc5, 0xca, 0x2a, 0xe5, 0xf9, 0xf0,
|
||||
0xc3, 0x91, 0x76, 0x30, 0x3a, 0x2d, 0xa6, 0xa3, 0xed, 0xa2, 0x18, 0x59, 0xe1, 0xe8, 0x94, 0xfd,
|
||||
0x78, 0xc1, 0x2a, 0xf1, 0xfe, 0xbd, 0x30, 0x54, 0x15, 0x3c, 0xaf, 0xd8, 0xf0, 0x22, 0xfa, 0x95,
|
||||
0xed, 0xa2, 0x18, 0x33, 0xb1, 0xcb, 0xea, 0x0a, 0x8c, 0x45, 0x2c, 0xd8, 0x70, 0xad, 0xa5, 0xea,
|
||||
0x03, 0xc6, 0xc7, 0xc3, 0x6e, 0x50, 0xfb, 0x99, 0x44, 0xdf, 0xae, 0xfd, 0x5c, 0x2e, 0x44, 0xc2,
|
||||
0xaf, 0xf3, 0xe1, 0x07, 0x6d, 0x45, 0x2d, 0x32, 0xb6, 0xef, 0x86, 0x10, 0x6d, 0xf5, 0x75, 0xf4,
|
||||
0x8b, 0xaf, 0xe3, 0x2c, 0x63, 0x62, 0xa7, 0x64, 0x75, 0xc1, 0x7d, 0x1d, 0x25, 0x1a, 0x29, 0x99,
|
||||
0xb1, 0xfb, 0x61, 0x90, 0xd1, 0x86, 0xbf, 0x8c, 0xbe, 0xa3, 0x24, 0xa7, 0x6c, 0xca, 0x97, 0xac,
|
||||
0x1c, 0xa2, 0x5a, 0x5a, 0x48, 0x34, 0x79, 0x0b, 0x82, 0xb6, 0x77, 0x78, 0xbe, 0x64, 0xa5, 0xc0,
|
||||
0x6d, 0x6b, 0x61, 0xd8, 0xb6, 0x85, 0xb4, 0xed, 0xbf, 0x1e, 0x44, 0xdf, 0xdb, 0x9e, 0x4e, 0xf9,
|
||||
0x22, 0x17, 0x87, 0x7c, 0x1a, 0x67, 0x87, 0x69, 0x7e, 0x75, 0xcc, 0xae, 0x77, 0x2e, 0x6b, 0x3e,
|
||||
0x9f, 0xb1, 0xe1, 0x33, 0xbf, 0x55, 0x15, 0x3a, 0x32, 0xec, 0xc8, 0x85, 0x8d, 0xef, 0x8f, 0x6f,
|
||||
0xa6, 0xa4, 0xcb, 0xf2, 0xf7, 0x83, 0xe8, 0x16, 0x2c, 0xcb, 0x98, 0x67, 0x4b, 0x66, 0x4b, 0xf3,
|
||||
0x49, 0x87, 0x61, 0x1f, 0x37, 0xe5, 0xf9, 0xf4, 0xa6, 0x6a, 0xba, 0x44, 0x59, 0xf4, 0x8e, 0x3b,
|
||||
0x5c, 0xc6, 0xac, 0x92, 0xd3, 0xe9, 0x11, 0x3d, 0x22, 0x34, 0x62, 0x3c, 0x3f, 0xee, 0x83, 0x6a,
|
||||
0x6f, 0x69, 0x34, 0xd4, 0xde, 0x32, 0x5e, 0x19, 0x67, 0x0f, 0x51, 0x0b, 0x0e, 0x61, 0x7c, 0x3d,
|
||||
0xea, 0x41, 0x6a, 0x57, 0x7f, 0x10, 0xfd, 0xd2, 0x6b, 0x5e, 0x5e, 0x55, 0x45, 0x3c, 0x65, 0x7a,
|
||||
0x2a, 0xdc, 0xf7, 0xb5, 0x1b, 0x29, 0x9c, 0x0d, 0x0f, 0xba, 0x30, 0x67, 0xd0, 0x36, 0xc2, 0x97,
|
||||
0x05, 0x83, 0x31, 0xc8, 0x2a, 0xd6, 0x42, 0x6a, 0xd0, 0x42, 0x48, 0xdb, 0xbe, 0x8a, 0x86, 0xd6,
|
||||
0xf6, 0xf9, 0x1f, 0xb2, 0xa9, 0xd8, 0x4e, 0x12, 0xd8, 0x2b, 0x56, 0x57, 0x12, 0xa3, 0xed, 0x24,
|
||||
0xa1, 0x7a, 0x05, 0x47, 0xb5, 0xb3, 0xeb, 0xe8, 0x5d, 0xe0, 0xec, 0x30, 0xad, 0xa4, 0xc3, 0xcd,
|
||||
0xb0, 0x15, 0x8d, 0x19, 0xa7, 0xa3, 0xbe, 0xb8, 0x76, 0xfc, 0xa7, 0x83, 0xe8, 0xbb, 0x88, 0xe7,
|
||||
0x53, 0x36, 0xe7, 0x4b, 0x36, 0x7c, 0xd2, 0x6d, 0x4d, 0x91, 0xc6, 0xff, 0x47, 0x37, 0xd0, 0x40,
|
||||
0x86, 0xc9, 0x98, 0x65, 0x6c, 0x2a, 0xc8, 0x61, 0xa2, 0xc4, 0x9d, 0xc3, 0xc4, 0x60, 0xce, 0x0c,
|
||||
0x6b, 0x84, 0xfb, 0x4c, 0xec, 0x2c, 0xca, 0x92, 0xe5, 0x82, 0xec, 0x4b, 0x8b, 0x74, 0xf6, 0xa5,
|
||||
0x87, 0x22, 0xf5, 0xd9, 0x67, 0x62, 0x3b, 0xcb, 0xc8, 0xfa, 0x28, 0x71, 0x67, 0x7d, 0x0c, 0xa6,
|
||||
0x3d, 0x4c, 0xa3, 0x5f, 0x76, 0x5a, 0x4c, 0x1c, 0xe4, 0x17, 0x7c, 0x48, 0xb7, 0x85, 0x94, 0x1b,
|
||||
0x1f, 0x6b, 0x9d, 0x1c, 0x52, 0x8d, 0x17, 0x6f, 0x0a, 0x5e, 0xd2, 0xdd, 0xa2, 0xc4, 0x9d, 0xd5,
|
||||
0x30, 0x98, 0xf6, 0xf0, 0xfb, 0xd1, 0xdb, 0x3a, 0x4a, 0x36, 0xeb, 0xd9, 0x3d, 0x34, 0x84, 0xc2,
|
||||
0x05, 0xed, 0x7e, 0x07, 0x65, 0x83, 0x83, 0x96, 0xe9, 0xe0, 0xf3, 0x21, 0xaa, 0x07, 0x42, 0xcf,
|
||||
0xbd, 0x30, 0xd4, 0xb2, 0xbd, 0xcb, 0x32, 0x46, 0xda, 0x56, 0xc2, 0x0e, 0xdb, 0x06, 0xd2, 0xb6,
|
||||
0xcb, 0xe8, 0xd7, 0x4c, 0xb3, 0xd4, 0xeb, 0xa8, 0x94, 0xd7, 0x41, 0x7a, 0x9d, 0xa8, 0xb7, 0x0b,
|
||||
0x19, 0x5f, 0x1b, 0xfd, 0xe0, 0x56, 0x7d, 0xf4, 0x0c, 0xc4, 0xeb, 0x03, 0xe6, 0xdf, 0xbd, 0x30,
|
||||
0xa4, 0x6d, 0xff, 0xcd, 0x20, 0xfa, 0xbe, 0x96, 0xbd, 0xc8, 0xe3, 0xf3, 0x8c, 0xc9, 0x25, 0xf1,
|
||||
0x98, 0x89, 0x6b, 0x5e, 0x5e, 0x8d, 0x57, 0xf9, 0x94, 0x58, 0xfe, 0x71, 0xb8, 0x63, 0xf9, 0x27,
|
||||
0x95, 0x9c, 0x8c, 0x4f, 0x57, 0x54, 0xf0, 0x02, 0x66, 0x7c, 0x4d, 0x0d, 0x04, 0x2f, 0xa8, 0x8c,
|
||||
0xcf, 0x47, 0x5a, 0x56, 0x8f, 0xea, 0xb0, 0x89, 0x5b, 0x3d, 0x72, 0xe3, 0xe4, 0xdd, 0x10, 0x62,
|
||||
0xc3, 0x56, 0x33, 0x80, 0x79, 0x7e, 0x91, 0xce, 0xce, 0x8a, 0xa4, 0x1e, 0xc6, 0x8f, 0xf0, 0x11,
|
||||
0xea, 0x20, 0x44, 0xd8, 0x22, 0x50, 0xed, 0xed, 0xef, 0x6c, 0x62, 0xa4, 0xa7, 0xd2, 0x5e, 0xc9,
|
||||
0xe7, 0x87, 0x6c, 0x16, 0x4f, 0x57, 0x7a, 0xfe, 0x7f, 0x1c, 0x9a, 0x78, 0x90, 0x36, 0x85, 0xf8,
|
||||
0xe4, 0x86, 0x5a, 0xba, 0x3c, 0xff, 0x36, 0x88, 0xee, 0x35, 0xd5, 0xbf, 0x8c, 0xf3, 0x19, 0xd3,
|
||||
0xfd, 0xa9, 0x4a, 0xbf, 0x9d, 0x27, 0xa7, 0xac, 0x12, 0x71, 0x29, 0x86, 0x3f, 0xc0, 0x2b, 0x19,
|
||||
0xd2, 0x31, 0x65, 0xfb, 0xe1, 0x37, 0xd2, 0xb5, 0xbd, 0x3e, 0xae, 0x03, 0x9b, 0x0e, 0x01, 0x7e,
|
||||
0xaf, 0x4b, 0x09, 0x0c, 0x00, 0x77, 0x43, 0x88, 0xed, 0x75, 0x29, 0x38, 0xc8, 0x97, 0xa9, 0x60,
|
||||
0xfb, 0x2c, 0x67, 0x65, 0xbb, 0xd7, 0x95, 0xaa, 0x8f, 0x10, 0xbd, 0x4e, 0xa0, 0x36, 0xd8, 0x78,
|
||||
0xde, 0xcc, 0xe2, 0xb8, 0x1e, 0x30, 0xd2, 0x5a, 0x1e, 0x37, 0xfa, 0xc1, 0x76, 0x77, 0xe7, 0xf8,
|
||||
0x3c, 0x65, 0x4b, 0x7e, 0x05, 0x77, 0x77, 0xae, 0x09, 0x05, 0x10, 0xbb, 0x3b, 0x14, 0xb4, 0x2b,
|
||||
0x98, 0xe3, 0xe7, 0x55, 0xca, 0xae, 0xc1, 0x0a, 0xe6, 0x2a, 0xd7, 0x62, 0x62, 0x05, 0x43, 0x30,
|
||||
0xed, 0xe1, 0x38, 0xfa, 0x05, 0x29, 0xfc, 0x5d, 0x9e, 0xe6, 0xc3, 0xdb, 0x88, 0x52, 0x2d, 0x30,
|
||||
0x56, 0xef, 0xd0, 0x00, 0x28, 0x71, 0xfd, 0xeb, 0x4e, 0x9c, 0x4f, 0x59, 0x86, 0x96, 0xd8, 0x8a,
|
||||
0x83, 0x25, 0xf6, 0x30, 0x9b, 0x3a, 0x48, 0x61, 0x1d, 0xbf, 0xc6, 0x97, 0x71, 0x99, 0xe6, 0xb3,
|
||||
0x21, 0xa6, 0xeb, 0xc8, 0x89, 0xd4, 0x01, 0xe3, 0xc0, 0x10, 0xd6, 0x8a, 0xdb, 0x45, 0x51, 0xd6,
|
||||
0x61, 0x11, 0x1b, 0xc2, 0x3e, 0x12, 0x1c, 0xc2, 0x2d, 0x14, 0xf7, 0xb6, 0xcb, 0xa6, 0x59, 0x9a,
|
||||
0x07, 0xbd, 0x69, 0xa4, 0x8f, 0x37, 0x8b, 0x82, 0xc1, 0x7b, 0xc8, 0xe2, 0x25, 0x6b, 0x6a, 0x86,
|
||||
0xb5, 0x8c, 0x0b, 0x04, 0x07, 0x2f, 0x00, 0xed, 0x3e, 0x4d, 0x8a, 0x8f, 0xe2, 0x2b, 0x56, 0x37,
|
||||
0x30, 0xab, 0xd7, 0xb5, 0x21, 0xa6, 0xef, 0x11, 0xc4, 0x3e, 0x0d, 0x27, 0xb5, 0xab, 0x45, 0xf4,
|
||||
0xae, 0x94, 0x9f, 0xc4, 0xa5, 0x48, 0xa7, 0x69, 0x11, 0xe7, 0x4d, 0xfe, 0x8f, 0xcd, 0xeb, 0x16,
|
||||
0x65, 0x5c, 0x6e, 0xf6, 0xa4, 0xb5, 0xdb, 0x7f, 0x19, 0x44, 0x1f, 0x40, 0xbf, 0x27, 0xac, 0x9c,
|
||||
0xa7, 0x72, 0x1b, 0x59, 0xa9, 0x20, 0x3c, 0xfc, 0x2c, 0x6c, 0xb4, 0xa5, 0x60, 0x4a, 0xf3, 0xf9,
|
||||
0xcd, 0x15, 0x75, 0xc1, 0x7e, 0x2f, 0x8a, 0xd4, 0x76, 0x45, 0x6e, 0x29, 0xfd, 0x59, 0xab, 0xf7,
|
||||
0x31, 0xde, 0x7e, 0xf2, 0x83, 0x00, 0x61, 0x97, 0x0a, 0xf5, 0xbb, 0xdc, 0x29, 0x0f, 0x51, 0x0d,
|
||||
0x29, 0x22, 0x96, 0x0a, 0x80, 0xc0, 0x82, 0x8e, 0x2f, 0xf9, 0x35, 0x5e, 0xd0, 0x5a, 0x12, 0x2e,
|
||||
0xa8, 0x26, 0xec, 0xd9, 0x95, 0x2e, 0x28, 0x76, 0x76, 0xd5, 0x14, 0x23, 0x74, 0x76, 0x05, 0x19,
|
||||
0x6d, 0x98, 0x47, 0xbf, 0xea, 0x1a, 0x7e, 0xce, 0xf9, 0xd5, 0x3c, 0x2e, 0xaf, 0x86, 0x8f, 0x69,
|
||||
0xe5, 0x86, 0x31, 0x8e, 0xd6, 0x7b, 0xb1, 0x36, 0x2c, 0xb8, 0x0e, 0xeb, 0x44, 0xe3, 0xac, 0xcc,
|
||||
0x40, 0x58, 0xf0, 0x6c, 0x68, 0x84, 0x08, 0x0b, 0x04, 0x6a, 0x23, 0xb7, 0xeb, 0x6d, 0xcc, 0xe0,
|
||||
0x6e, 0xc9, 0x53, 0x1f, 0x33, 0x6a, 0xb7, 0x84, 0x60, 0x70, 0x08, 0xed, 0x97, 0x71, 0x71, 0x89,
|
||||
0x0f, 0x21, 0x29, 0x0a, 0x0f, 0xa1, 0x06, 0x81, 0xfd, 0x3d, 0x66, 0x71, 0x39, 0xbd, 0xc4, 0xfb,
|
||||
0x5b, 0xc9, 0xc2, 0xfd, 0x6d, 0x18, 0xd8, 0xdf, 0x4a, 0xf0, 0x3a, 0x15, 0x97, 0x47, 0x4c, 0xc4,
|
||||
0x78, 0x7f, 0xfb, 0x4c, 0xb8, 0xbf, 0x5b, 0xac, 0xcd, 0x64, 0x5c, 0x87, 0xe3, 0xc5, 0x79, 0x35,
|
||||
0x2d, 0xd3, 0x73, 0x36, 0x0c, 0x58, 0x31, 0x10, 0x91, 0xc9, 0x90, 0xb0, 0xf6, 0xf9, 0xd3, 0x41,
|
||||
0x74, 0xbb, 0xe9, 0x76, 0x5e, 0x55, 0x6a, 0x65, 0x05, 0xee, 0x3f, 0xc1, 0xfb, 0x97, 0xc0, 0x89,
|
||||
0xd3, 0xc4, 0x1e, 0x6a, 0x4e, 0x54, 0xc5, 0x8b, 0x74, 0x96, 0x57, 0xa6, 0x50, 0x9f, 0xf5, 0xb1,
|
||||
0xee, 0x28, 0x10, 0x51, 0xb5, 0x97, 0xa2, 0x5d, 0xd0, 0x74, 0xff, 0x34, 0xb2, 0x83, 0xa4, 0x02,
|
||||
0x0b, 0x5a, 0xd3, 0xde, 0x0e, 0x41, 0x2c, 0x68, 0x38, 0x09, 0x87, 0xc2, 0x7e, 0xc9, 0x17, 0x45,
|
||||
0xd5, 0x31, 0x14, 0x00, 0x14, 0x1e, 0x0a, 0x6d, 0x58, 0xfb, 0x7c, 0x13, 0xfd, 0xba, 0x3b, 0xfc,
|
||||
0xdc, 0xc6, 0xde, 0xa4, 0xc7, 0x14, 0xd6, 0xc4, 0xa3, 0xbe, 0xb8, 0x4d, 0xe9, 0x1a, 0xcf, 0x62,
|
||||
0x97, 0x89, 0x38, 0xcd, 0xaa, 0xe1, 0x03, 0xdc, 0x46, 0x23, 0x27, 0x52, 0x3a, 0x8c, 0x83, 0xf1,
|
||||
0x6d, 0x77, 0x51, 0x64, 0xe9, 0xb4, 0x7d, 0x96, 0xab, 0x75, 0x8d, 0x38, 0x1c, 0xdf, 0x5c, 0x0c,
|
||||
0xc6, 0xeb, 0x31, 0x13, 0xea, 0x3f, 0x93, 0x55, 0xc1, 0xf0, 0x78, 0xed, 0x21, 0xe1, 0x78, 0x0d,
|
||||
0x51, 0x58, 0x9f, 0x31, 0x13, 0x87, 0xf1, 0x8a, 0x2f, 0x88, 0x78, 0x6d, 0xc4, 0xe1, 0xfa, 0xb8,
|
||||
0x98, 0xcd, 0xaa, 0x8c, 0x87, 0x83, 0x5c, 0xb0, 0x32, 0x8f, 0xb3, 0xbd, 0x2c, 0x9e, 0x55, 0x43,
|
||||
0x22, 0xc6, 0xf8, 0x14, 0x91, 0x55, 0xd1, 0x34, 0xd2, 0x8c, 0x07, 0xd5, 0x5e, 0xbc, 0xe4, 0x65,
|
||||
0x2a, 0xe8, 0x66, 0xb4, 0x48, 0x67, 0x33, 0x7a, 0x28, 0xea, 0x6d, 0xbb, 0x9c, 0x5e, 0xa6, 0x4b,
|
||||
0x96, 0x04, 0xbc, 0x35, 0x48, 0x0f, 0x6f, 0x0e, 0x8a, 0x74, 0xda, 0x98, 0x2f, 0xca, 0x29, 0x23,
|
||||
0x3b, 0x4d, 0x89, 0x3b, 0x3b, 0xcd, 0x60, 0xda, 0xc3, 0x5f, 0x0c, 0xa2, 0xdf, 0x50, 0x52, 0xf7,
|
||||
0x80, 0x75, 0x37, 0xae, 0x2e, 0xcf, 0x79, 0x5c, 0x26, 0xc3, 0x8f, 0x30, 0x3b, 0x28, 0x6a, 0x5c,
|
||||
0x3f, 0xbd, 0x89, 0x0a, 0x6c, 0xd6, 0xc3, 0xb4, 0x72, 0x66, 0x1c, 0xda, 0xac, 0x1e, 0x12, 0x6e,
|
||||
0x56, 0x88, 0xc2, 0x00, 0x22, 0xe5, 0xea, 0x30, 0xe3, 0x01, 0xa9, 0xef, 0x9f, 0x68, 0xac, 0x75,
|
||||
0x72, 0x30, 0x3e, 0xd6, 0x42, 0x7f, 0xb4, 0x6c, 0x52, 0x36, 0xf0, 0x11, 0x33, 0xea, 0x8b, 0x93,
|
||||
0x9e, 0xcd, 0xac, 0x08, 0x7b, 0x6e, 0xcd, 0x8c, 0x51, 0x5f, 0x9c, 0xf0, 0xec, 0x84, 0xb5, 0x90,
|
||||
0x67, 0x24, 0xb4, 0x8d, 0xfa, 0xe2, 0x30, 0xfb, 0xd2, 0x4c, 0xb3, 0x2e, 0x3c, 0x0e, 0xd8, 0x81,
|
||||
0x6b, 0xc3, 0x7a, 0x2f, 0x56, 0x3b, 0xfc, 0xab, 0x41, 0xf4, 0x3d, 0xeb, 0xf1, 0x88, 0x27, 0xe9,
|
||||
0xc5, 0x4a, 0x41, 0xaf, 0xe2, 0x6c, 0xc1, 0xaa, 0xe1, 0x53, 0xca, 0x5a, 0x9b, 0x35, 0x25, 0x78,
|
||||
0x76, 0x23, 0x1d, 0x38, 0x77, 0xb6, 0x8b, 0x22, 0x5b, 0x4d, 0xd8, 0xbc, 0xc8, 0xc8, 0xb9, 0xe3,
|
||||
0x21, 0xe1, 0xb9, 0x03, 0x51, 0x98, 0x95, 0x4f, 0x78, 0x9d, 0xf3, 0xa3, 0x59, 0xb9, 0x14, 0x85,
|
||||
0xb3, 0xf2, 0x06, 0x81, 0xb9, 0xd2, 0x84, 0xef, 0xf0, 0x2c, 0x63, 0x53, 0xd1, 0x7e, 0x48, 0x6b,
|
||||
0x34, 0x2d, 0x11, 0xce, 0x95, 0x00, 0x69, 0xcf, 0x33, 0x9a, 0x3d, 0x64, 0x5c, 0xb2, 0xe7, 0xab,
|
||||
0xc3, 0x34, 0xbf, 0x1a, 0xe2, 0x69, 0x81, 0x05, 0x88, 0xf3, 0x0c, 0x14, 0x84, 0x7b, 0xd5, 0xb3,
|
||||
0x3c, 0xe1, 0xf8, 0x5e, 0xb5, 0x96, 0x84, 0xf7, 0xaa, 0x9a, 0x80, 0x26, 0x4f, 0x19, 0x65, 0xb2,
|
||||
0x96, 0x84, 0x4d, 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xd4, 0x9b, 0x0c, 0x85, 0xe0, 0x9c, 0x7b, 0xad,
|
||||
0x93, 0x83, 0x23, 0xb4, 0xd9, 0xb4, 0xee, 0x31, 0x31, 0xbd, 0xc4, 0x47, 0xa8, 0x87, 0x84, 0x47,
|
||||
0x28, 0x44, 0x61, 0x95, 0x26, 0xdc, 0x6c, 0xba, 0x1f, 0xe0, 0xe3, 0xa3, 0xb5, 0xe1, 0x5e, 0xeb,
|
||||
0xe4, 0xe0, 0x36, 0xf2, 0x60, 0x2e, 0xdb, 0x0c, 0x1d, 0xe4, 0x4a, 0x16, 0xde, 0x46, 0x1a, 0x06,
|
||||
0x96, 0x5e, 0x09, 0xea, 0xe6, 0xc4, 0x4b, 0x6f, 0xe5, 0xe1, 0xd2, 0x7b, 0x9c, 0x76, 0xf2, 0x4f,
|
||||
0x66, 0x1b, 0xa7, 0xa4, 0xc7, 0xbc, 0x9e, 0x23, 0xaf, 0xe2, 0x2c, 0x4d, 0x62, 0xc1, 0x26, 0xfc,
|
||||
0x8a, 0xe5, 0xf8, 0x8e, 0x49, 0x97, 0x56, 0xf1, 0x23, 0x4f, 0x21, 0xbc, 0x63, 0x0a, 0x2b, 0xc2,
|
||||
0x71, 0xa2, 0xe8, 0xb3, 0x8a, 0xed, 0xc4, 0x15, 0x11, 0xc9, 0x3c, 0x24, 0x3c, 0x4e, 0x20, 0x0a,
|
||||
0xf3, 0x55, 0x25, 0x7f, 0xf1, 0xa6, 0x60, 0x65, 0xca, 0xf2, 0x29, 0xc3, 0xf3, 0x55, 0x48, 0x85,
|
||||
0xf3, 0x55, 0x84, 0x86, 0x7b, 0xb5, 0xdd, 0x58, 0xb0, 0xe7, 0xab, 0x49, 0x3a, 0x67, 0x95, 0x88,
|
||||
0xe7, 0x05, 0xbe, 0x57, 0x03, 0x50, 0x78, 0xaf, 0xd6, 0x86, 0x5b, 0x47, 0x43, 0x26, 0x20, 0xb6,
|
||||
0xef, 0x76, 0x40, 0x22, 0x70, 0xb7, 0x83, 0x40, 0x61, 0xc3, 0x5a, 0x00, 0x3d, 0x5e, 0x6d, 0x59,
|
||||
0x09, 0x1e, 0xaf, 0xd2, 0x74, 0xeb, 0xc0, 0xcd, 0x30, 0xe3, 0x7a, 0x6a, 0x76, 0x14, 0x7d, 0xec,
|
||||
0x4e, 0xd1, 0xf5, 0x5e, 0x2c, 0x7e, 0xc2, 0x77, 0xca, 0xb2, 0x58, 0x2e, 0x5b, 0x81, 0x63, 0xb4,
|
||||
0x86, 0xe9, 0x73, 0xc2, 0xe7, 0xb0, 0xda, 0xe1, 0x9f, 0x0d, 0xa2, 0xf7, 0x31, 0x8f, 0x2f, 0x0b,
|
||||
0xe9, 0xf7, 0x49, 0xb7, 0x2d, 0x45, 0x12, 0x97, 0x57, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x14, 0xbd,
|
||||
0xd7, 0x88, 0xec, 0xdd, 0x16, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xd5,
|
||||
0x9b, 0xb7, 0xfb, 0x21, 0xbf, 0x5c, 0x15, 0xd8, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xec, 0x87, 0x10,
|
||||
0xcc, 0xce, 0x4e, 0xb7, 0x7a, 0xaf, 0x53, 0x71, 0x29, 0xf3, 0x2d, 0x30, 0x3b, 0xbd, 0xb2, 0x1a,
|
||||
0x88, 0x98, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xe7, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77,
|
||||
0x66, 0x3e, 0xec, 0x06, 0xe1, 0x78, 0x6d, 0xc4, 0x7a, 0xeb, 0xf3, 0x38, 0x64, 0x01, 0x6c, 0x7f,
|
||||
0xd6, 0x7b, 0xb1, 0xda, 0xe1, 0x9f, 0x44, 0xdf, 0x6d, 0x55, 0x6c, 0x8f, 0xc5, 0x62, 0x51, 0xb2,
|
||||
0x64, 0xb8, 0xd5, 0x51, 0xee, 0x06, 0x34, 0xae, 0x9f, 0xf4, 0x57, 0x68, 0xe5, 0xe8, 0x0d, 0xa7,
|
||||
0x86, 0x95, 0x29, 0xc3, 0xd3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x9b, 0xed,
|
||||
0x8e, 0xae, 0xed, 0x65, 0x9c, 0x66, 0xf2, 0x31, 0xd7, 0x47, 0x21, 0xa3, 0x1e, 0x1a, 0xdc, 0x66,
|
||||
0x93, 0x2a, 0xad, 0xc8, 0x2c, 0xe7, 0xb8, 0xb3, 0x3d, 0xdb, 0xa0, 0x23, 0x01, 0xb2, 0x3b, 0xdb,
|
||||
0xec, 0x49, 0x6b, 0xb7, 0xa2, 0x59, 0xf2, 0xea, 0x9f, 0xdd, 0x41, 0x8e, 0x79, 0xd5, 0xaa, 0xc8,
|
||||
0x48, 0xdf, 0xec, 0x49, 0x6b, 0xaf, 0x7f, 0x1c, 0xbd, 0xd7, 0xf6, 0xaa, 0x17, 0xa2, 0xad, 0x4e,
|
||||
0x53, 0x60, 0x2d, 0x7a, 0xd2, 0x5f, 0x41, 0xbb, 0xff, 0x57, 0x73, 0x2e, 0xad, 0xfc, 0x4f, 0xf9,
|
||||
0x7c, 0xce, 0xf2, 0x84, 0x25, 0x8d, 0x46, 0x55, 0xef, 0x9f, 0x3e, 0xa7, 0xed, 0x1a, 0x85, 0x91,
|
||||
0xab, 0x61, 0x4a, 0xf4, 0x9b, 0xdf, 0x40, 0x53, 0x17, 0xed, 0x3f, 0x06, 0xd1, 0x23, 0xb4, 0x68,
|
||||
0xcd, 0xc0, 0xf5, 0x8a, 0xf8, 0x3b, 0x7d, 0x1c, 0x61, 0x9a, 0xa6, 0xa8, 0xdb, 0xff, 0x0f, 0x0b,
|
||||
0x76, 0x83, 0xf8, 0x45, 0x5a, 0x09, 0x5e, 0xae, 0xc6, 0x97, 0xfc, 0xba, 0xb9, 0x81, 0xef, 0xc7,
|
||||
0x3e, 0x0d, 0x8c, 0x1c, 0x82, 0xd8, 0x20, 0xe2, 0x64, 0xcb, 0x95, 0xbd, 0xa9, 0x5f, 0x11, 0xae,
|
||||
0x1c, 0xa2, 0xc3, 0x95, 0x4f, 0xda, 0xc8, 0xdf, 0xd4, 0xca, 0xbe, 0x56, 0xb0, 0x86, 0x17, 0xb5,
|
||||
0xfd, 0x6a, 0xc1, 0xc3, 0x6e, 0xd0, 0xe6, 0x7f, 0x5a, 0xbc, 0x9b, 0x5e, 0x5c, 0x98, 0x3a, 0xe1,
|
||||
0x25, 0x75, 0x11, 0x22, 0xff, 0x23, 0x50, 0xbb, 0x85, 0xd9, 0x4b, 0x33, 0x26, 0x9f, 0x8f, 0xbc,
|
||||
0xbc, 0xb8, 0xc8, 0x78, 0x9c, 0x80, 0x2d, 0x4c, 0x2d, 0x1e, 0xb9, 0x72, 0x62, 0x0b, 0x83, 0x71,
|
||||
0xf6, 0x02, 0x5f, 0x2d, 0xad, 0x47, 0x50, 0x3e, 0x4d, 0x33, 0x78, 0x21, 0x51, 0x6a, 0x1a, 0x21,
|
||||
0x71, 0x81, 0xaf, 0x05, 0xd9, 0x34, 0xa3, 0x16, 0xd5, 0x41, 0xb4, 0x29, 0xff, 0xfd, 0xb6, 0xa2,
|
||||
0x23, 0x26, 0xd2, 0x0c, 0x04, 0xb3, 0x3b, 0xf9, 0x5a, 0x78, 0x56, 0x48, 0xe3, 0x77, 0xda, 0x5a,
|
||||
0x4a, 0x42, 0xec, 0xe4, 0x7d, 0xc2, 0xee, 0x48, 0xeb, 0xdf, 0x77, 0xf9, 0x75, 0x2e, 0x8d, 0xde,
|
||||
0x6d, 0xab, 0x34, 0x32, 0x62, 0x47, 0x0a, 0x19, 0x6d, 0xf8, 0x47, 0xd1, 0xcf, 0x4b, 0xc3, 0x25,
|
||||
0x2f, 0x86, 0xb7, 0x10, 0x85, 0xd2, 0xb9, 0x3b, 0x78, 0x9b, 0x94, 0xdb, 0x2b, 0xb0, 0x66, 0x6c,
|
||||
0x9c, 0x55, 0xf1, 0x8c, 0x0d, 0xef, 0x11, 0x3d, 0x2e, 0xa5, 0xc4, 0x15, 0xd8, 0x36, 0xe5, 0x8f,
|
||||
0x8a, 0x63, 0x9e, 0x68, 0xeb, 0x48, 0x0d, 0x8d, 0x30, 0x34, 0x2a, 0x5c, 0xc8, 0xa6, 0x86, 0xc7,
|
||||
0xf1, 0x32, 0x9d, 0x99, 0xe5, 0x5b, 0x05, 0xb2, 0x0a, 0xa4, 0x86, 0x96, 0x19, 0x39, 0x10, 0x91,
|
||||
0x1a, 0x92, 0xb0, 0xf6, 0xf9, 0x8f, 0x83, 0xe8, 0x8e, 0x65, 0xf6, 0x9b, 0xb3, 0xcf, 0x83, 0xfc,
|
||||
0x82, 0xd7, 0x89, 0xe4, 0x61, 0x9a, 0x5f, 0x55, 0xc3, 0x4f, 0x29, 0x93, 0x38, 0x6f, 0x8a, 0xf2,
|
||||
0xd9, 0x8d, 0xf5, 0xec, 0x1e, 0xa0, 0x39, 0x18, 0xb4, 0xb7, 0x03, 0x94, 0x06, 0xd8, 0x03, 0x98,
|
||||
0xf3, 0x43, 0xc8, 0x11, 0x7b, 0x80, 0x10, 0x6f, 0xbb, 0xd8, 0x38, 0xcf, 0x78, 0x0e, 0xbb, 0xd8,
|
||||
0x5a, 0xa8, 0x85, 0x44, 0x17, 0xb7, 0x20, 0x1b, 0x8f, 0x1b, 0x91, 0x3a, 0xc3, 0xda, 0xce, 0x32,
|
||||
0x10, 0x8f, 0x8d, 0xaa, 0x01, 0x88, 0x78, 0x8c, 0x82, 0xda, 0xcf, 0x69, 0xf4, 0xed, 0xba, 0x49,
|
||||
0x4f, 0x4a, 0xb6, 0x4c, 0x19, 0xbc, 0xc8, 0xe2, 0x48, 0x88, 0xf9, 0xef, 0x13, 0x76, 0x66, 0x9d,
|
||||
0xe5, 0x55, 0x91, 0xc5, 0xd5, 0xa5, 0xbe, 0xda, 0xe0, 0xd7, 0xb9, 0x11, 0xc2, 0xcb, 0x0d, 0xf7,
|
||||
0x3b, 0x28, 0x1b, 0xd4, 0x1b, 0x99, 0x09, 0x31, 0x0f, 0x70, 0xd5, 0x56, 0x98, 0x59, 0xeb, 0xe4,
|
||||
0xec, 0xf3, 0x83, 0xfd, 0x38, 0xcb, 0x58, 0xb9, 0x6a, 0x64, 0x47, 0x71, 0x9e, 0x5e, 0xb0, 0x4a,
|
||||
0x80, 0xe7, 0x07, 0x9a, 0x1a, 0x41, 0x8c, 0x78, 0x7e, 0x10, 0xc0, 0xed, 0xde, 0x08, 0x78, 0x3e,
|
||||
0xc8, 0x13, 0xf6, 0x06, 0xec, 0x8d, 0xa0, 0x1d, 0xc9, 0x10, 0x7b, 0x23, 0x8a, 0xb5, 0xe7, 0xe8,
|
||||
0xcf, 0x33, 0x3e, 0xbd, 0xd2, 0x4b, 0x80, 0xdf, 0xc1, 0x52, 0x02, 0xd7, 0x80, 0xbb, 0x21, 0xc4,
|
||||
0x2e, 0x02, 0x52, 0x70, 0xca, 0x8a, 0x2c, 0x9e, 0xc2, 0xdb, 0x4c, 0x4a, 0x47, 0xcb, 0x88, 0x45,
|
||||
0x00, 0x32, 0xa0, 0xb8, 0xfa, 0x96, 0x14, 0x56, 0x5c, 0x70, 0x49, 0xea, 0x6e, 0x08, 0xb1, 0xcb,
|
||||
0xa0, 0x14, 0x8c, 0x8b, 0x2c, 0x15, 0x60, 0x1a, 0x28, 0x0d, 0x29, 0x21, 0xa6, 0x81, 0x4f, 0x00,
|
||||
0x93, 0x47, 0xac, 0x9c, 0x31, 0xd4, 0xa4, 0x94, 0x04, 0x4d, 0x36, 0x84, 0xbd, 0xf4, 0xaa, 0xea,
|
||||
0xce, 0x8b, 0x15, 0xb8, 0xf4, 0xaa, 0xab, 0xc5, 0x8b, 0x15, 0x71, 0xe9, 0xd5, 0x03, 0x40, 0x11,
|
||||
0x4f, 0xe2, 0x4a, 0xe0, 0x45, 0x94, 0x92, 0x60, 0x11, 0x1b, 0xc2, 0xae, 0xd1, 0xaa, 0x88, 0x0b,
|
||||
0x01, 0xd6, 0x68, 0x5d, 0x00, 0xe7, 0x79, 0xfe, 0x6d, 0x52, 0x6e, 0x23, 0x89, 0xea, 0x15, 0x26,
|
||||
0xf6, 0x52, 0x96, 0x25, 0x15, 0x88, 0x24, 0xba, 0xdd, 0x1b, 0x29, 0x11, 0x49, 0xda, 0x14, 0x18,
|
||||
0x4a, 0xfa, 0x69, 0x03, 0x56, 0x3b, 0xf0, 0xa0, 0xe1, 0x6e, 0x08, 0xb1, 0xf1, 0xa9, 0x29, 0xf4,
|
||||
0x4e, 0x5c, 0x96, 0x69, 0xbd, 0xf8, 0x3f, 0xc0, 0x0b, 0xd4, 0xc8, 0x89, 0xf8, 0x84, 0x71, 0x60,
|
||||
0x7a, 0x35, 0x81, 0x1b, 0x2b, 0x18, 0x0c, 0xdd, 0x1f, 0x06, 0x19, 0x9b, 0x71, 0x4a, 0x89, 0xf3,
|
||||
0x40, 0x1a, 0x6b, 0x4d, 0xe4, 0x79, 0xf4, 0x83, 0x2e, 0xcc, 0x79, 0x29, 0xc5, 0xb8, 0x38, 0xe2,
|
||||
0x4b, 0x36, 0xe1, 0x2f, 0xde, 0xa4, 0x95, 0x48, 0xf3, 0x99, 0x5e, 0xb9, 0x9f, 0x11, 0x96, 0x30,
|
||||
0x98, 0x78, 0x29, 0xa5, 0x53, 0xc9, 0x26, 0x10, 0xa0, 0x2c, 0xc7, 0xec, 0x1a, 0x4d, 0x20, 0xa0,
|
||||
0x45, 0xc3, 0x11, 0x09, 0x44, 0x88, 0xb7, 0xa7, 0x52, 0xc6, 0xb9, 0x7e, 0x73, 0x77, 0xc2, 0x9b,
|
||||
0x5c, 0x8e, 0xb2, 0x06, 0x41, 0xe2, 0x60, 0x20, 0xa8, 0x60, 0xf7, 0x97, 0xc6, 0xbf, 0x9d, 0x62,
|
||||
0x0f, 0x09, 0x3b, 0xed, 0x69, 0xf6, 0xa8, 0x07, 0x89, 0xb8, 0xb2, 0xb7, 0x2a, 0x28, 0x57, 0xed,
|
||||
0x4b, 0x15, 0x8f, 0x7a, 0x90, 0xce, 0x09, 0x97, 0x5b, 0xad, 0xe7, 0xf1, 0xf4, 0x6a, 0x56, 0xf2,
|
||||
0x45, 0x9e, 0xec, 0xf0, 0x8c, 0x97, 0xe0, 0x84, 0xcb, 0x2b, 0x35, 0x40, 0x89, 0x13, 0xae, 0x0e,
|
||||
0x15, 0x9b, 0xc1, 0xb9, 0xa5, 0xd8, 0xce, 0xd2, 0x19, 0xdc, 0x51, 0x7b, 0x86, 0x24, 0x40, 0x64,
|
||||
0x70, 0x28, 0x88, 0x0c, 0x22, 0xb5, 0xe3, 0x16, 0xe9, 0x34, 0xce, 0x94, 0xbf, 0x2d, 0xda, 0x8c,
|
||||
0x07, 0x76, 0x0e, 0x22, 0x44, 0x01, 0xa9, 0xe7, 0x64, 0x51, 0xe6, 0x07, 0xb9, 0xe0, 0x64, 0x3d,
|
||||
0x1b, 0xa0, 0xb3, 0x9e, 0x0e, 0x08, 0xc2, 0xea, 0x84, 0xbd, 0xa9, 0x4b, 0x53, 0xff, 0x83, 0x85,
|
||||
0xd5, 0xfa, 0xf7, 0x91, 0x96, 0x87, 0xc2, 0x2a, 0xe0, 0x40, 0x65, 0xb4, 0x13, 0x35, 0x60, 0x02,
|
||||
0xda, 0xfe, 0x30, 0x79, 0xd8, 0x0d, 0xe2, 0x7e, 0xc6, 0x62, 0x95, 0xb1, 0x90, 0x1f, 0x09, 0xf4,
|
||||
0xf1, 0xd3, 0x80, 0xf6, 0xb8, 0xc5, 0xab, 0xcf, 0x25, 0x9b, 0x5e, 0xb5, 0x2e, 0x89, 0xf9, 0x05,
|
||||
0x55, 0x08, 0x71, 0xdc, 0x42, 0xa0, 0x78, 0x17, 0x1d, 0x4c, 0x79, 0x1e, 0xea, 0xa2, 0x5a, 0xde,
|
||||
0xa7, 0x8b, 0x34, 0x67, 0x37, 0xbf, 0x46, 0xaa, 0x47, 0xa6, 0xea, 0xa6, 0x75, 0xc2, 0x82, 0x0b,
|
||||
0x11, 0x9b, 0x5f, 0x12, 0xb6, 0x39, 0x39, 0xf4, 0x79, 0xd4, 0xbe, 0x41, 0xdf, 0xb2, 0x72, 0x44,
|
||||
0xdf, 0xa0, 0xa7, 0x58, 0xba, 0x92, 0x6a, 0x8c, 0x74, 0x58, 0xf1, 0xc7, 0xc9, 0x46, 0x3f, 0xd8,
|
||||
0x6e, 0x79, 0x3c, 0x9f, 0x3b, 0x19, 0x8b, 0x4b, 0xe5, 0x75, 0x33, 0x60, 0xc8, 0x62, 0xc4, 0x96,
|
||||
0x27, 0x80, 0x83, 0x10, 0xe6, 0x79, 0xde, 0xe1, 0xb9, 0x60, 0xb9, 0xc0, 0x42, 0x98, 0x6f, 0x4c,
|
||||
0x83, 0xa1, 0x10, 0x46, 0x29, 0x80, 0x71, 0x2b, 0xcf, 0x83, 0x98, 0x38, 0x8e, 0xe7, 0x68, 0xc6,
|
||||
0xa6, 0xce, 0x7a, 0x94, 0x3c, 0x34, 0x6e, 0x01, 0xe7, 0x3c, 0x32, 0x75, 0xbd, 0x4c, 0xe2, 0x72,
|
||||
0x66, 0x4e, 0x37, 0x92, 0xe1, 0x13, 0xda, 0x8e, 0x4f, 0x12, 0x8f, 0x4c, 0xc3, 0x1a, 0x20, 0xec,
|
||||
0x1c, 0xcc, 0xe3, 0x99, 0xa9, 0x29, 0x52, 0x03, 0x29, 0x6f, 0x55, 0xf5, 0x61, 0x37, 0x08, 0xfc,
|
||||
0xbc, 0x4a, 0x13, 0xc6, 0x03, 0x7e, 0xa4, 0xbc, 0x8f, 0x1f, 0x08, 0x82, 0xec, 0xad, 0xae, 0xb7,
|
||||
0xda, 0xd1, 0x6d, 0xe7, 0x89, 0xde, 0xc7, 0x8e, 0x88, 0xe6, 0x01, 0x5c, 0x28, 0x7b, 0x23, 0x78,
|
||||
0x30, 0x47, 0x9b, 0x03, 0xda, 0xd0, 0x1c, 0x35, 0xe7, 0xaf, 0x7d, 0xe6, 0x28, 0x06, 0x6b, 0x9f,
|
||||
0x3f, 0xd1, 0x73, 0x74, 0x37, 0x16, 0x71, 0x9d, 0xb7, 0xbf, 0x4a, 0xd9, 0xb5, 0xde, 0x08, 0x23,
|
||||
0xf5, 0x6d, 0xa8, 0x91, 0x7c, 0x75, 0x12, 0xec, 0x8a, 0xb7, 0x7a, 0xf3, 0x01, 0xdf, 0x7a, 0x87,
|
||||
0xd0, 0xe9, 0x1b, 0x6c, 0x15, 0xb6, 0x7a, 0xf3, 0x01, 0xdf, 0xfa, 0x9d, 0xec, 0x4e, 0xdf, 0xe0,
|
||||
0xc5, 0xec, 0xad, 0xde, 0xbc, 0xf6, 0xfd, 0xe7, 0xcd, 0xc4, 0x75, 0x9d, 0xd7, 0x79, 0xd8, 0x54,
|
||||
0xa4, 0x4b, 0x86, 0xa5, 0x93, 0xbe, 0x3d, 0x83, 0x86, 0xd2, 0x49, 0x5a, 0xc5, 0xf9, 0x90, 0x0f,
|
||||
0x56, 0x8a, 0x13, 0x5e, 0xa5, 0xf2, 0xca, 0xc3, 0xb3, 0x1e, 0x46, 0x1b, 0x38, 0xb4, 0x69, 0x0a,
|
||||
0x29, 0xd9, 0x87, 0xb7, 0x1e, 0x6a, 0xef, 0x84, 0x6f, 0x04, 0xec, 0xb5, 0xaf, 0x86, 0x6f, 0xf6,
|
||||
0xa4, 0xed, 0x63, 0x54, 0x8f, 0x71, 0x9f, 0xdf, 0x86, 0x7a, 0x15, 0x7d, 0x84, 0xfb, 0xa4, 0xbf,
|
||||
0x82, 0x76, 0xff, 0x97, 0xcd, 0xbe, 0x02, 0xfa, 0xd7, 0x93, 0xe0, 0x69, 0x1f, 0x8b, 0x60, 0x22,
|
||||
0x3c, 0xbb, 0x91, 0x8e, 0x2e, 0xc8, 0xdf, 0x36, 0x1b, 0xe8, 0x06, 0x95, 0x6f, 0xc6, 0xbc, 0x2c,
|
||||
0x13, 0x56, 0xea, 0x39, 0x11, 0xea, 0x56, 0x0b, 0xc3, 0x99, 0xf1, 0xc9, 0x0d, 0xb5, 0x9c, 0xcf,
|
||||
0x3a, 0x79, 0xb0, 0x7e, 0x83, 0xd3, 0x29, 0x4f, 0xc8, 0xb2, 0x43, 0xc3, 0x02, 0x7d, 0x7a, 0x53,
|
||||
0x35, 0x6a, 0xae, 0x38, 0xb0, 0xfc, 0x4a, 0xc4, 0xb3, 0x9e, 0x86, 0xbd, 0xef, 0x46, 0x7c, 0x7c,
|
||||
0x33, 0x25, 0x5d, 0x96, 0x7f, 0x1f, 0x44, 0xf7, 0x3d, 0xd6, 0x3e, 0x4f, 0x00, 0xa7, 0x1e, 0x3f,
|
||||
0x0c, 0xd8, 0xa7, 0x94, 0x4c, 0xe1, 0x7e, 0xeb, 0x9b, 0x29, 0xdb, 0x6f, 0x20, 0x79, 0x2a, 0x7b,
|
||||
0x69, 0x26, 0x58, 0xd9, 0xfe, 0x06, 0x92, 0x6f, 0x57, 0x51, 0x23, 0xfa, 0x1b, 0x48, 0x01, 0xdc,
|
||||
0xf9, 0x06, 0x12, 0xe2, 0x19, 0xfd, 0x06, 0x12, 0x6a, 0x2d, 0xf8, 0x0d, 0xa4, 0xb0, 0x06, 0x15,
|
||||
0xde, 0x9b, 0x22, 0xa8, 0x73, 0xeb, 0x5e, 0x16, 0xfd, 0x63, 0xec, 0xa7, 0x37, 0x51, 0x21, 0x16,
|
||||
0x38, 0xc5, 0xc9, 0x5b, 0x83, 0x3d, 0xda, 0xd4, 0xbb, 0x39, 0xb8, 0xd5, 0x9b, 0xd7, 0xbe, 0x7f,
|
||||
0xac, 0x77, 0x37, 0x26, 0x9c, 0xf3, 0x52, 0x7e, 0xff, 0x6a, 0x3d, 0x14, 0x9e, 0x6b, 0x0b, 0x6e,
|
||||
0xcf, 0x6f, 0xf4, 0x83, 0x89, 0xea, 0xd6, 0x84, 0xee, 0xf4, 0x51, 0x97, 0x21, 0xd0, 0xe5, 0x5b,
|
||||
0xbd, 0x79, 0x62, 0x19, 0x51, 0xbe, 0x55, 0x6f, 0xf7, 0x30, 0xe6, 0xf7, 0xf5, 0x93, 0xfe, 0x0a,
|
||||
0xda, 0xfd, 0x52, 0xa7, 0x8d, 0xae, 0x7b, 0xd9, 0xcf, 0x9b, 0x5d, 0xa6, 0xc6, 0x5e, 0x37, 0x8f,
|
||||
0xfa, 0xe2, 0xa1, 0x04, 0xc2, 0x5d, 0x42, 0xbb, 0x12, 0x08, 0x74, 0x19, 0xfd, 0xf8, 0x66, 0x4a,
|
||||
0xba, 0x2c, 0xff, 0x30, 0x88, 0x6e, 0x93, 0x65, 0xd1, 0xe3, 0xe0, 0xd3, 0xbe, 0x96, 0xc1, 0x78,
|
||||
0xf8, 0xec, 0xc6, 0x7a, 0xba, 0x50, 0xff, 0x3c, 0x88, 0xee, 0x04, 0x0a, 0xa5, 0x06, 0xc8, 0x0d,
|
||||
0xac, 0xfb, 0x03, 0xe5, 0xf3, 0x9b, 0x2b, 0x52, 0xcb, 0xbd, 0x8b, 0x8f, 0xdb, 0x1f, 0x07, 0x0a,
|
||||
0xd8, 0x1e, 0xd3, 0x1f, 0x07, 0xea, 0xd6, 0x82, 0x87, 0x3c, 0xf1, 0x79, 0xb3, 0xe9, 0x42, 0x0f,
|
||||
0x79, 0xe4, 0x7d, 0x3f, 0xb0, 0xe7, 0x58, 0xeb, 0xe4, 0x30, 0x27, 0x2f, 0xde, 0x14, 0x71, 0x9e,
|
||||
0xd0, 0x4e, 0x94, 0xbc, 0xdb, 0x89, 0xe1, 0xe0, 0xe1, 0x58, 0x2d, 0x3d, 0xe5, 0xcd, 0x46, 0xea,
|
||||
0x11, 0xa5, 0x6f, 0x90, 0xe0, 0xe1, 0x58, 0x0b, 0x25, 0xbc, 0xe9, 0xac, 0x31, 0xe4, 0x0d, 0x24,
|
||||
0x8b, 0x8f, 0xfb, 0xa0, 0x20, 0x45, 0x37, 0xde, 0xcc, 0x99, 0xfb, 0x46, 0xc8, 0x4a, 0xeb, 0xdc,
|
||||
0x7d, 0xb3, 0x27, 0x4d, 0xb8, 0x1d, 0x33, 0xf1, 0x05, 0x8b, 0x13, 0x56, 0x06, 0xdd, 0x1a, 0xaa,
|
||||
0x97, 0x5b, 0x97, 0xc6, 0xdc, 0xee, 0xf0, 0x6c, 0x31, 0xcf, 0x75, 0x67, 0x92, 0x6e, 0x5d, 0xaa,
|
||||
0xdb, 0x2d, 0xa0, 0xe1, 0xb1, 0xa0, 0x75, 0x2b, 0xd3, 0xcb, 0xc7, 0x61, 0x33, 0x5e, 0x56, 0xb9,
|
||||
0xde, 0x8b, 0xa5, 0xeb, 0xa9, 0x87, 0x51, 0x47, 0x3d, 0xc1, 0x48, 0xda, 0xec, 0x49, 0xc3, 0xf3,
|
||||
0x39, 0xc7, 0xad, 0x19, 0x4f, 0x5b, 0x1d, 0xb6, 0x5a, 0x43, 0xea, 0x49, 0x7f, 0x05, 0x78, 0x1a,
|
||||
0xaa, 0x47, 0xd5, 0x61, 0x5a, 0x89, 0xbd, 0x34, 0xcb, 0x86, 0xeb, 0x81, 0x61, 0xd2, 0x40, 0xc1,
|
||||
0xd3, 0x50, 0x04, 0x26, 0x46, 0x72, 0x73, 0x7a, 0x98, 0x0f, 0xbb, 0xec, 0x48, 0xaa, 0xd7, 0x48,
|
||||
0x76, 0x69, 0x70, 0xa2, 0xe5, 0x34, 0xb5, 0xa9, 0xed, 0x28, 0xdc, 0x70, 0xad, 0x0a, 0x6f, 0xf5,
|
||||
0xe6, 0xc1, 0xe3, 0x76, 0x49, 0xc9, 0x95, 0xe5, 0x1e, 0x65, 0xc2, 0x5b, 0x49, 0xee, 0x77, 0x50,
|
||||
0xe0, 0x54, 0x50, 0x4d, 0xa3, 0xd7, 0x69, 0x32, 0x63, 0x02, 0x7d, 0x52, 0xe4, 0x02, 0xc1, 0x27,
|
||||
0x45, 0x00, 0x04, 0x5d, 0xa7, 0x7e, 0x37, 0xc7, 0xa1, 0x07, 0x09, 0xd6, 0x75, 0x5a, 0xd9, 0xa1,
|
||||
0x42, 0x5d, 0x87, 0xd2, 0x20, 0x1a, 0x18, 0xb7, 0xfa, 0xe3, 0x06, 0x8f, 0x43, 0x66, 0xc0, 0x17,
|
||||
0x0e, 0xd6, 0x7b, 0xb1, 0x60, 0x45, 0xb1, 0x0e, 0xd3, 0x79, 0x2a, 0xb0, 0x15, 0xc5, 0xb1, 0x51,
|
||||
0x23, 0xa1, 0x15, 0xa5, 0x8d, 0x52, 0xd5, 0xab, 0x73, 0x84, 0x83, 0x24, 0x5c, 0x3d, 0xc5, 0xf4,
|
||||
0xab, 0x9e, 0x61, 0x5b, 0x0f, 0x36, 0x73, 0x33, 0x64, 0xc4, 0xa5, 0xde, 0x2c, 0x23, 0x63, 0x5b,
|
||||
0xbe, 0xf4, 0x0a, 0xc1, 0x50, 0xd4, 0xa1, 0x14, 0xe0, 0x81, 0x7d, 0xcd, 0x35, 0xcf, 0x5e, 0x8b,
|
||||
0x82, 0xc5, 0x65, 0x9c, 0x4f, 0xd1, 0xcd, 0xa9, 0x34, 0xd8, 0x22, 0x43, 0x9b, 0x53, 0x52, 0x03,
|
||||
0x3c, 0x36, 0xf7, 0x5f, 0x57, 0x45, 0xa6, 0x82, 0x79, 0x2f, 0xd4, 0x7f, 0x5b, 0xf5, 0x51, 0x0f,
|
||||
0x12, 0x3e, 0x36, 0x6f, 0x00, 0x73, 0xf0, 0xad, 0x9c, 0x7e, 0x14, 0x30, 0xe5, 0xa3, 0xa1, 0x8d,
|
||||
0x30, 0xad, 0x02, 0x06, 0xb5, 0x49, 0x70, 0x99, 0xf8, 0x11, 0x5b, 0x61, 0x83, 0xda, 0xe6, 0xa7,
|
||||
0x12, 0x09, 0x0d, 0xea, 0x36, 0x0a, 0xf2, 0x4c, 0x77, 0x1f, 0xf4, 0x20, 0xa0, 0xef, 0x6e, 0x7d,
|
||||
0xd6, 0x3a, 0x39, 0x30, 0x73, 0x76, 0xd3, 0xa5, 0xf7, 0x9c, 0x00, 0x29, 0xe8, 0x6e, 0xba, 0xc4,
|
||||
0x1f, 0x13, 0xac, 0xf7, 0x62, 0xe1, 0x23, 0xf9, 0x58, 0xb0, 0x37, 0xcd, 0xb3, 0x72, 0xa4, 0xb8,
|
||||
0x52, 0xde, 0x7a, 0x58, 0xfe, 0xb0, 0x1b, 0xb4, 0x17, 0x60, 0x4f, 0x4a, 0x3e, 0x65, 0x55, 0xa5,
|
||||
0xbf, 0x98, 0xe8, 0xdf, 0x30, 0xd2, 0xb2, 0x11, 0xf8, 0x5e, 0xe2, 0xbd, 0x30, 0x64, 0x7b, 0x46,
|
||||
0x8b, 0xec, 0x37, 0x84, 0x1e, 0xa0, 0x9a, 0xed, 0xcf, 0x07, 0xad, 0x75, 0x72, 0x76, 0x7a, 0x69,
|
||||
0xa9, 0xfb, 0xd1, 0xa0, 0x87, 0xa8, 0x3a, 0xf6, 0xbd, 0xa0, 0x47, 0x3d, 0x48, 0xed, 0xea, 0x8b,
|
||||
0xe8, 0xad, 0x43, 0x3e, 0x1b, 0xb3, 0x3c, 0x19, 0x7e, 0xdf, 0xbf, 0x42, 0xcb, 0x67, 0xa3, 0xfa,
|
||||
0x67, 0x63, 0xf4, 0x16, 0x25, 0xb6, 0x97, 0x00, 0x77, 0xd9, 0xf9, 0x62, 0x36, 0x16, 0xb1, 0x00,
|
||||
0x97, 0x00, 0xe5, 0xef, 0xa3, 0x5a, 0x40, 0x5c, 0x02, 0xf4, 0x00, 0x60, 0x6f, 0x52, 0x32, 0x86,
|
||||
0xda, 0xab, 0x05, 0x41, 0x7b, 0x1a, 0xb0, 0x59, 0x84, 0xb1, 0x57, 0x27, 0xea, 0xf0, 0xd2, 0x9e,
|
||||
0xd5, 0x91, 0x52, 0x22, 0x8b, 0x68, 0x53, 0x76, 0x70, 0xab, 0xea, 0xcb, 0x6f, 0xb8, 0x2c, 0xe6,
|
||||
0xf3, 0xb8, 0x5c, 0x81, 0xc1, 0xad, 0x6b, 0xe9, 0x00, 0xc4, 0xe0, 0x46, 0x41, 0x3b, 0x6b, 0x9b,
|
||||
0x66, 0x9e, 0x5e, 0xed, 0xf3, 0x92, 0x2f, 0x44, 0x9a, 0x33, 0xf8, 0x1d, 0x0f, 0xd3, 0xa0, 0x2e,
|
||||
0x43, 0xcc, 0x5a, 0x8a, 0xb5, 0x59, 0xae, 0x24, 0xd4, 0x7d, 0x42, 0xf9, 0x1d, 0xe5, 0x4a, 0xf0,
|
||||
0x12, 0x3e, 0x4f, 0x54, 0x56, 0x20, 0x44, 0x64, 0xb9, 0x24, 0x0c, 0xfa, 0xfe, 0x24, 0xcd, 0x67,
|
||||
0x68, 0xdf, 0x9f, 0xb8, 0x5f, 0x21, 0xbd, 0x43, 0x03, 0x76, 0x42, 0xa9, 0x46, 0x53, 0x13, 0x40,
|
||||
0xbf, 0x19, 0x8b, 0x36, 0xba, 0x4b, 0x10, 0x13, 0x0a, 0x27, 0x81, 0xab, 0x97, 0x05, 0xcb, 0x59,
|
||||
0xd2, 0xdc, 0x9a, 0xc3, 0x5c, 0x79, 0x44, 0xd0, 0x15, 0x24, 0x6d, 0x2c, 0x92, 0xf2, 0xd3, 0x45,
|
||||
0x7e, 0x52, 0xf2, 0x8b, 0x34, 0x63, 0x25, 0x88, 0x45, 0x4a, 0xdd, 0x91, 0x13, 0xb1, 0x08, 0xe3,
|
||||
0xec, 0xf5, 0x0b, 0x29, 0xf5, 0x3e, 0x06, 0x3e, 0x29, 0xe3, 0x29, 0xbc, 0x7e, 0xa1, 0x6c, 0xb4,
|
||||
0x31, 0xe2, 0x64, 0x30, 0x80, 0x3b, 0x89, 0x8e, 0x72, 0x9d, 0xaf, 0xe4, 0xf8, 0xd0, 0x6f, 0x66,
|
||||
0xca, 0x6f, 0x73, 0x56, 0x20, 0xd1, 0xd1, 0xe6, 0x30, 0x92, 0x48, 0x74, 0xc2, 0x1a, 0x76, 0x29,
|
||||
0x91, 0xdc, 0xb1, 0xbe, 0x56, 0x04, 0x96, 0x12, 0x65, 0xa3, 0x11, 0x12, 0x4b, 0x49, 0x0b, 0x02,
|
||||
0x01, 0xa9, 0x99, 0x06, 0x33, 0x34, 0x20, 0x19, 0x69, 0x30, 0x20, 0xb9, 0x94, 0x0d, 0x14, 0x07,
|
||||
0x79, 0x2a, 0xd2, 0x38, 0x1b, 0x33, 0x71, 0x12, 0x97, 0xf1, 0x9c, 0x09, 0x56, 0xc2, 0x40, 0xa1,
|
||||
0x91, 0x91, 0xc7, 0x10, 0x81, 0x82, 0x62, 0xb5, 0xc3, 0xdf, 0x8e, 0xde, 0xa9, 0xd7, 0x7d, 0x96,
|
||||
0xeb, 0x3f, 0xfb, 0xf1, 0x42, 0xfe, 0xbd, 0xa0, 0xe1, 0xbb, 0xc6, 0xc6, 0x58, 0x94, 0x2c, 0x9e,
|
||||
0x37, 0xb6, 0xdf, 0x36, 0xbf, 0x4b, 0xf0, 0xc9, 0xa0, 0x1e, 0xcf, 0xc7, 0x5c, 0xa4, 0x17, 0xf5,
|
||||
0x36, 0x5b, 0xbf, 0x41, 0x04, 0xc6, 0xb3, 0x2b, 0x1e, 0x05, 0xbe, 0xec, 0x81, 0x71, 0x36, 0x4e,
|
||||
0xbb, 0xd2, 0x53, 0x56, 0x64, 0x30, 0x4e, 0x7b, 0xda, 0x12, 0x20, 0xe2, 0x34, 0x0a, 0xda, 0xc9,
|
||||
0xe9, 0x8a, 0x27, 0x2c, 0x5c, 0x99, 0x09, 0xeb, 0x57, 0x99, 0x89, 0xf7, 0x52, 0x46, 0x16, 0xbd,
|
||||
0x73, 0xc4, 0xe6, 0xe7, 0xac, 0xac, 0x2e, 0xd3, 0x62, 0xbf, 0x4e, 0xb8, 0x62, 0xb1, 0x80, 0xaf,
|
||||
0x2d, 0x5a, 0x62, 0x64, 0x10, 0x22, 0x2b, 0x25, 0x50, 0xbb, 0x12, 0x58, 0xe0, 0xa0, 0x3a, 0x8e,
|
||||
0xe7, 0x4c, 0x7e, 0xa7, 0x04, 0xac, 0x04, 0x8e, 0x11, 0x07, 0x22, 0x56, 0x02, 0x12, 0x76, 0xde,
|
||||
0xef, 0xb2, 0xcc, 0x29, 0x9b, 0xd5, 0x23, 0xac, 0x3c, 0x89, 0x57, 0x73, 0x96, 0x0b, 0x6d, 0x12,
|
||||
0x9c, 0xc9, 0x3b, 0x26, 0x71, 0x9e, 0x38, 0x93, 0xef, 0xa3, 0xe7, 0x84, 0x26, 0xaf, 0xe1, 0x4f,
|
||||
0x78, 0x29, 0xd4, 0x1f, 0xf5, 0x39, 0x2b, 0x33, 0x10, 0x9a, 0xfc, 0x46, 0xf5, 0x48, 0x22, 0x34,
|
||||
0x85, 0x35, 0x9c, 0xaf, 0xe1, 0x7b, 0x65, 0x78, 0xc5, 0x4a, 0x33, 0x4e, 0x5e, 0xcc, 0xe3, 0x34,
|
||||
0xd3, 0xa3, 0xe1, 0x07, 0x01, 0xdb, 0x84, 0x0e, 0xf1, 0x35, 0xfc, 0xbe, 0xba, 0xce, 0xdf, 0x0f,
|
||||
0x08, 0x97, 0x10, 0x3c, 0x22, 0xe8, 0xb0, 0x4f, 0x3c, 0x22, 0xe8, 0xd6, 0xb2, 0x3b, 0x77, 0xcb,
|
||||
0x4a, 0x6e, 0x25, 0x89, 0x1d, 0x9e, 0xc0, 0xf3, 0x42, 0xc7, 0x26, 0x00, 0x89, 0x9d, 0x7b, 0x50,
|
||||
0xc1, 0xa6, 0x06, 0x16, 0xdb, 0x4b, 0xf3, 0x38, 0x4b, 0x7f, 0x02, 0xd3, 0x7a, 0xc7, 0x4e, 0x43,
|
||||
0x10, 0xa9, 0x01, 0x4e, 0x62, 0xae, 0xf6, 0x99, 0x98, 0xa4, 0x75, 0xe8, 0x7f, 0x18, 0x68, 0x37,
|
||||
0x49, 0x74, 0xbb, 0x72, 0x48, 0xe7, 0x8b, 0xb7, 0xb0, 0x59, 0xb7, 0x8b, 0x62, 0x5c, 0xaf, 0xaa,
|
||||
0xa7, 0x6c, 0xca, 0xd2, 0x42, 0x0c, 0x3f, 0x09, 0xb7, 0x15, 0xc0, 0x89, 0x8b, 0x16, 0x3d, 0xd4,
|
||||
0x9c, 0xc7, 0xf7, 0x75, 0x2c, 0x19, 0xab, 0xbf, 0x76, 0x77, 0x56, 0xb1, 0x52, 0x27, 0x1a, 0xfb,
|
||||
0x4c, 0x80, 0xd9, 0xe9, 0x70, 0x23, 0x07, 0xac, 0x2b, 0x4a, 0xcc, 0xce, 0xb0, 0x86, 0x3d, 0xec,
|
||||
0x73, 0xb8, 0x53, 0x56, 0xf1, 0x6c, 0xc9, 0xe4, 0x7d, 0xc3, 0x0d, 0xd2, 0x98, 0x43, 0x11, 0x87,
|
||||
0x7d, 0x34, 0x6d, 0xb3, 0xb5, 0xb6, 0xdb, 0xed, 0x7c, 0x75, 0x00, 0xaf, 0x4c, 0x20, 0x96, 0x24,
|
||||
0x46, 0x64, 0x6b, 0x01, 0xdc, 0x39, 0x0c, 0x2f, 0x79, 0x9c, 0x4c, 0xe3, 0x4a, 0x9c, 0xc4, 0xab,
|
||||
0x8c, 0xc7, 0x89, 0x5c, 0xd7, 0xe1, 0x61, 0x78, 0xc3, 0x8c, 0x5c, 0x88, 0x3a, 0x0c, 0xa7, 0x60,
|
||||
0x37, 0x3b, 0x93, 0x7f, 0xc4, 0x4f, 0xdf, 0xe5, 0x84, 0xd9, 0x99, 0x2c, 0x2f, 0xbc, 0xc7, 0x79,
|
||||
0x2f, 0x0c, 0xd9, 0x77, 0xd0, 0x94, 0x48, 0xa6, 0x21, 0x77, 0x30, 0x1d, 0x2f, 0x01, 0xf9, 0x20,
|
||||
0x40, 0xd8, 0xaf, 0x7c, 0xa8, 0xdf, 0x9b, 0xbf, 0x43, 0x23, 0xf4, 0x77, 0xc1, 0x37, 0x30, 0x5d,
|
||||
0x17, 0x1a, 0xb9, 0x1f, 0x8b, 0xd8, 0xec, 0x49, 0xdb, 0x34, 0x73, 0xe7, 0x32, 0x16, 0xdb, 0x49,
|
||||
0x72, 0xc4, 0x2a, 0xe4, 0x85, 0xf2, 0x5a, 0x38, 0xb2, 0x52, 0x22, 0xcd, 0x6c, 0x53, 0x76, 0xa0,
|
||||
0xd7, 0xb2, 0x17, 0x49, 0x2a, 0xb4, 0xac, 0xb9, 0x21, 0xbd, 0xd1, 0x36, 0xd0, 0xa6, 0x88, 0x5a,
|
||||
0xd1, 0xb4, 0x8d, 0xe5, 0x35, 0x33, 0xe1, 0xb3, 0x59, 0xc6, 0x34, 0x74, 0xca, 0x62, 0xf5, 0x59,
|
||||
0xc4, 0xad, 0xb6, 0x2d, 0x14, 0x24, 0x62, 0x79, 0x50, 0xc1, 0xa6, 0x91, 0x35, 0xa6, 0x1e, 0x49,
|
||||
0x35, 0x0d, 0xbb, 0xd6, 0x36, 0xe3, 0x01, 0x44, 0x1a, 0x89, 0x82, 0xf6, 0xbd, 0xb7, 0x5a, 0xbc,
|
||||
0xcf, 0x9a, 0x96, 0x80, 0x1f, 0x74, 0x92, 0xca, 0x8e, 0x98, 0x78, 0xef, 0x0d, 0xc1, 0xec, 0x3e,
|
||||
0x01, 0x78, 0x78, 0xbe, 0x3a, 0x48, 0xe0, 0x3e, 0x01, 0xea, 0x4b, 0x86, 0xd8, 0x27, 0x50, 0xac,
|
||||
0xdf, 0x75, 0xe6, 0xdc, 0xeb, 0x30, 0xae, 0x6c, 0xe5, 0x90, 0xae, 0x43, 0xc1, 0x50, 0xd7, 0x51,
|
||||
0x0a, 0x7e, 0x93, 0xba, 0x47, 0x6b, 0x48, 0x93, 0x62, 0xe7, 0x6a, 0x0f, 0xba, 0x30, 0x1b, 0x97,
|
||||
0xcc, 0x7e, 0x52, 0x5e, 0x59, 0xc2, 0xff, 0x1e, 0x82, 0x12, 0x12, 0x71, 0xa9, 0x05, 0x29, 0xdb,
|
||||
0xcf, 0x3f, 0xf8, 0xcf, 0xaf, 0x6e, 0x0d, 0x7e, 0xf6, 0xd5, 0xad, 0xc1, 0x7f, 0x7f, 0x75, 0x6b,
|
||||
0xf0, 0xd3, 0xaf, 0x6f, 0x7d, 0xeb, 0x67, 0x5f, 0xdf, 0xfa, 0xd6, 0x7f, 0x7d, 0x7d, 0xeb, 0x5b,
|
||||
0x5f, 0xbe, 0xa5, 0xff, 0xb8, 0xeb, 0xf9, 0xcf, 0xc9, 0x3f, 0xd1, 0xfa, 0xec, 0xff, 0x02, 0x00,
|
||||
0x00, 0xff, 0xff, 0x4c, 0x64, 0x5e, 0x0f, 0x00, 0x76, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
|
@ -471,6 +472,7 @@ type ClientCommandsHandler interface {
|
|||
ObjectImportNotionValidateToken(context.Context, *pb.RpcObjectImportNotionValidateTokenRequest) *pb.RpcObjectImportNotionValidateTokenResponse
|
||||
ObjectImportUseCase(context.Context, *pb.RpcObjectImportUseCaseRequest) *pb.RpcObjectImportUseCaseResponse
|
||||
ObjectImportExperience(context.Context, *pb.RpcObjectImportExperienceRequest) *pb.RpcObjectImportExperienceResponse
|
||||
ObjectDateByTimestamp(context.Context, *pb.RpcObjectDateByTimestampRequest) *pb.RpcObjectDateByTimestampResponse
|
||||
// Collections
|
||||
// ***
|
||||
ObjectCollectionAdd(context.Context, *pb.RpcObjectCollectionAddRequest) *pb.RpcObjectCollectionAddResponse
|
||||
|
@ -2522,6 +2524,26 @@ func ObjectImportExperience(b []byte) (resp []byte) {
|
|||
return resp
|
||||
}
|
||||
|
||||
func ObjectDateByTimestamp(b []byte) (resp []byte) {
|
||||
defer func() {
|
||||
if PanicHandler != nil {
|
||||
if r := recover(); r != nil {
|
||||
resp, _ = (&pb.RpcObjectDateByTimestampResponse{Error: &pb.RpcObjectDateByTimestampResponseError{Code: pb.RpcObjectDateByTimestampResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal()
|
||||
PanicHandler(r)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
in := new(pb.RpcObjectDateByTimestampRequest)
|
||||
if err := in.Unmarshal(b); err != nil {
|
||||
resp, _ = (&pb.RpcObjectDateByTimestampResponse{Error: &pb.RpcObjectDateByTimestampResponseError{Code: pb.RpcObjectDateByTimestampResponseError_BAD_INPUT, Description: err.Error()}}).Marshal()
|
||||
return resp
|
||||
}
|
||||
|
||||
resp, _ = clientCommandsHandler.ObjectDateByTimestamp(context.Background(), in).Marshal()
|
||||
return resp
|
||||
}
|
||||
|
||||
func ObjectCollectionAdd(b []byte) (resp []byte) {
|
||||
defer func() {
|
||||
if PanicHandler != nil {
|
||||
|
@ -6250,6 +6272,8 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) {
|
|||
cd = ObjectImportUseCase(data)
|
||||
case "ObjectImportExperience":
|
||||
cd = ObjectImportExperience(data)
|
||||
case "ObjectDateByTimestamp":
|
||||
cd = ObjectDateByTimestamp(data)
|
||||
case "ObjectCollectionAdd":
|
||||
cd = ObjectCollectionAdd(data)
|
||||
case "ObjectCollectionRemove":
|
||||
|
@ -7900,6 +7924,20 @@ func (h *ClientCommandsHandlerProxy) ObjectImportExperience(ctx context.Context,
|
|||
call, _ := actualCall(ctx, req)
|
||||
return call.(*pb.RpcObjectImportExperienceResponse)
|
||||
}
|
||||
func (h *ClientCommandsHandlerProxy) ObjectDateByTimestamp(ctx context.Context, req *pb.RpcObjectDateByTimestampRequest) *pb.RpcObjectDateByTimestampResponse {
|
||||
actualCall := func(ctx context.Context, req any) (any, error) {
|
||||
return h.client.ObjectDateByTimestamp(ctx, req.(*pb.RpcObjectDateByTimestampRequest)), nil
|
||||
}
|
||||
for _, interceptor := range h.interceptors {
|
||||
toCall := actualCall
|
||||
currentInterceptor := interceptor
|
||||
actualCall = func(ctx context.Context, req any) (any, error) {
|
||||
return currentInterceptor(ctx, req, "ObjectDateByTimestamp", toCall)
|
||||
}
|
||||
}
|
||||
call, _ := actualCall(ctx, req)
|
||||
return call.(*pb.RpcObjectDateByTimestampResponse)
|
||||
}
|
||||
func (h *ClientCommandsHandlerProxy) ObjectCollectionAdd(ctx context.Context, req *pb.RpcObjectCollectionAddRequest) *pb.RpcObjectCollectionAddResponse {
|
||||
actualCall := func(ctx context.Context, req any) (any, error) {
|
||||
return h.client.ObjectCollectionAdd(ctx, req.(*pb.RpcObjectCollectionAddRequest)), nil
|
||||
|
|
|
@ -47,6 +47,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/core/block/editor/lastused"
|
||||
"github.com/anyproto/anytype-heart/core/block/export"
|
||||
importer "github.com/anyproto/anytype-heart/core/block/import"
|
||||
"github.com/anyproto/anytype-heart/core/block/object/idderiver/idderiverimpl"
|
||||
"github.com/anyproto/anytype-heart/core/block/object/idresolver"
|
||||
"github.com/anyproto/anytype-heart/core/block/object/objectcreator"
|
||||
"github.com/anyproto/anytype-heart/core/block/object/objectgraph"
|
||||
|
@ -259,6 +260,7 @@ func Bootstrap(a *app.App, components ...app.Component) {
|
|||
Register(source.New()).
|
||||
Register(spacefactory.New()).
|
||||
Register(space.New()).
|
||||
Register(idderiverimpl.New()).
|
||||
Register(deletioncontroller.New()).
|
||||
Register(invitestore.New()).
|
||||
Register(filesync.New()).
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
"slices"
|
||||
"sort"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
|
@ -22,6 +23,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/util/dateutil"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
"github.com/anyproto/anytype-heart/util/slice"
|
||||
timeutil "github.com/anyproto/anytype-heart/util/time"
|
||||
)
|
||||
|
||||
var ErrBundledTypeIsReadonly = fmt.Errorf("can't modify bundled object type")
|
||||
|
@ -92,8 +94,10 @@ func (s *service) objectTypeSetRelations(
|
|||
}
|
||||
|
||||
func (s *service) ListRelationsWithValue(spaceId string, value *types.Value) ([]*pb.RpcRelationListWithValueResponseResponseItem, error) {
|
||||
countersByKeys := make(map[string]int64)
|
||||
detailHandlesValue := generateFilter(value)
|
||||
var (
|
||||
countersByKeys = make(map[string]int64)
|
||||
detailHandlesValue = generateFilter(value)
|
||||
)
|
||||
|
||||
err := s.store.SpaceIndex(spaceId).QueryIterate(database.Query{Filters: nil}, func(details *types.Struct) {
|
||||
for key, valueToCheck := range details.Fields {
|
||||
|
@ -112,9 +116,17 @@ func (s *service) ListRelationsWithValue(spaceId string, value *types.Value) ([]
|
|||
}
|
||||
|
||||
keys := maps.Keys(countersByKeys)
|
||||
slices.Sort(keys)
|
||||
list := make([]*pb.RpcRelationListWithValueResponseResponseItem, len(keys))
|
||||
sort.Slice(keys, func(i, j int) bool {
|
||||
if keys[i] == bundle.RelationKeyMentions.String() {
|
||||
return true
|
||||
}
|
||||
if keys[j] == bundle.RelationKeyMentions.String() {
|
||||
return false
|
||||
}
|
||||
return keys[i] < keys[j]
|
||||
})
|
||||
|
||||
list := make([]*pb.RpcRelationListWithValueResponseResponseItem, len(keys))
|
||||
for i, key := range keys {
|
||||
list[i] = &pb.RpcRelationListWithValueResponseResponseItem{
|
||||
RelationKey: key,
|
||||
|
@ -151,23 +163,26 @@ func generateFilter(value *types.Value) func(v *types.Value) bool {
|
|||
return equalOrHasFilter
|
||||
}
|
||||
|
||||
ts, err := dateutil.ParseDateId(stringValue)
|
||||
// date object section
|
||||
|
||||
dateObject, err := dateutil.BuildDateObjectFromId(stringValue)
|
||||
if err != nil {
|
||||
log.Error("failed to parse Date object id", zap.Error(err))
|
||||
return equalOrHasFilter
|
||||
}
|
||||
|
||||
shortId := dateutil.TimeToDateId(ts)
|
||||
|
||||
start := ts.Truncate(24 * time.Hour)
|
||||
start := timeutil.CutToDay(dateObject.Time())
|
||||
end := start.Add(24 * time.Hour)
|
||||
startTimestamp := start.Unix()
|
||||
endTimestamp := end.Unix()
|
||||
|
||||
startDateObject := dateutil.NewDateObject(start, false)
|
||||
shortId := startDateObject.Id()
|
||||
|
||||
// filter for date objects is able to find relations with values between the borders of queried day
|
||||
// - for relations with number format it checks timestamp value is between timestamps of this day midnights
|
||||
// - for relations carrying string list it checks if some of the strings has day prefix, e.g.
|
||||
// if _date_2023-12-12-08-30-50 is queried, then all relations with prefix _date_2023-12-12 will be returned
|
||||
// if _date_2023-12-12-08-30-50Z-0200 is queried, then all relations with prefix _date_2023-12-12 will be returned
|
||||
return func(v *types.Value) bool {
|
||||
numberValue := int64(v.GetNumberValue())
|
||||
if numberValue >= startTimestamp && numberValue < endTimestamp {
|
||||
|
|
|
@ -54,12 +54,12 @@ func TestService_ListRelationsWithValue(t *testing.T) {
|
|||
bundle.RelationKeyLastModifiedDate: pbtypes.Int64(now.Add(-1 * time.Minute).Unix()),
|
||||
bundle.RelationKeyIsFavorite: pbtypes.Bool(true),
|
||||
"daysTillSummer": pbtypes.Int64(300),
|
||||
bundle.RelationKeyLinks: pbtypes.StringList([]string{"obj2", "obj3", dateutil.TimeToDateId(now.Add(-30 * time.Minute))}),
|
||||
bundle.RelationKeyLinks: pbtypes.StringList([]string{"obj2", "obj3", dateutil.NewDateObject(now.Add(-30*time.Minute), true).Id()}),
|
||||
},
|
||||
{
|
||||
bundle.RelationKeyId: pbtypes.String("obj2"),
|
||||
bundle.RelationKeySpaceId: pbtypes.String(spaceId),
|
||||
bundle.RelationKeyName: pbtypes.String(dateutil.TimeToDateId(now)),
|
||||
bundle.RelationKeyName: pbtypes.String(dateutil.NewDateObject(now, true).Id()),
|
||||
bundle.RelationKeyCreatedDate: pbtypes.Int64(now.Add(-24*time.Hour - 5*time.Minute).Unix()),
|
||||
bundle.RelationKeyAddedDate: pbtypes.Int64(now.Add(-24*time.Hour - 3*time.Minute).Unix()),
|
||||
bundle.RelationKeyLastModifiedDate: pbtypes.Int64(now.Add(-1 * time.Minute).Unix()),
|
||||
|
@ -73,7 +73,7 @@ func TestService_ListRelationsWithValue(t *testing.T) {
|
|||
bundle.RelationKeyLastModifiedDate: pbtypes.Int64(now.Unix()),
|
||||
bundle.RelationKeyIsFavorite: pbtypes.Bool(true),
|
||||
bundle.RelationKeyCoverX: pbtypes.Int64(300),
|
||||
bundle.RelationKeyMentions: pbtypes.StringList([]string{dateutil.TimeToDateId(now), dateutil.TimeToDateId(now.Add(-24 * time.Hour))}),
|
||||
bundle.RelationKeyMentions: pbtypes.StringList([]string{dateutil.NewDateObject(now, true).Id(), dateutil.NewDateObject(now.Add(-24*time.Hour), true).Id()}),
|
||||
},
|
||||
})
|
||||
|
||||
|
@ -86,23 +86,23 @@ func TestService_ListRelationsWithValue(t *testing.T) {
|
|||
}{
|
||||
{
|
||||
"date object - today",
|
||||
pbtypes.String(dateutil.TimeToDateId(now)),
|
||||
pbtypes.String(dateutil.NewDateObject(now, true).Id()),
|
||||
[]*pb.RpcRelationListWithValueResponseResponseItem{
|
||||
{bundle.RelationKeyMentions.String(), 1},
|
||||
{bundle.RelationKeyAddedDate.String(), 1},
|
||||
{bundle.RelationKeyCreatedDate.String(), 2},
|
||||
{bundle.RelationKeyLastModifiedDate.String(), 3},
|
||||
{bundle.RelationKeyLinks.String(), 1},
|
||||
{bundle.RelationKeyMentions.String(), 1},
|
||||
{bundle.RelationKeyName.String(), 1},
|
||||
},
|
||||
},
|
||||
{
|
||||
"date object - yesterday",
|
||||
pbtypes.String(dateutil.TimeToDateId(now.Add(-24 * time.Hour))),
|
||||
pbtypes.String(dateutil.NewDateObject(now.Add(-24*time.Hour), true).Id()),
|
||||
[]*pb.RpcRelationListWithValueResponseResponseItem{
|
||||
{bundle.RelationKeyMentions.String(), 1},
|
||||
{bundle.RelationKeyAddedDate.String(), 1},
|
||||
{bundle.RelationKeyCreatedDate.String(), 1},
|
||||
{bundle.RelationKeyMentions.String(), 1},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -123,7 +123,7 @@ func TestService_ListRelationsWithValue(t *testing.T) {
|
|||
},
|
||||
{
|
||||
"string list",
|
||||
pbtypes.StringList([]string{"obj2", "obj3", dateutil.TimeToDateId(now.Add(-30 * time.Minute))}),
|
||||
pbtypes.StringList([]string{"obj2", "obj3", dateutil.NewDateObject(now.Add(-30*time.Minute), true).Id()}),
|
||||
[]*pb.RpcRelationListWithValueResponseResponseItem{
|
||||
{bundle.RelationKeyLinks.String(), 1},
|
||||
},
|
||||
|
|
|
@ -32,6 +32,7 @@ func (sb *smartBlock) injectLinksDetails(s *state.State) {
|
|||
NoSystemRelations: true,
|
||||
NoHiddenBundledRelations: true,
|
||||
NoImages: true,
|
||||
RoundDateIdsToDay: true,
|
||||
})
|
||||
links = slice.RemoveMut(links, sb.Id())
|
||||
s.SetLocalDetail(bundle.RelationKeyLinks.String(), pbtypes.StringList(links))
|
||||
|
|
|
@ -512,8 +512,8 @@ func (sb *smartBlock) fetchMeta() (details []*model.ObjectViewDetailsSet, err er
|
|||
func (sb *smartBlock) partitionIdsBySpace(ids []string) map[string][]string {
|
||||
perSpace := map[string][]string{}
|
||||
for _, id := range ids {
|
||||
if _, parseErr := dateutil.ParseDateId(id); parseErr == nil {
|
||||
perSpace[sb.space.Id()] = append(perSpace[sb.space.Id()], id)
|
||||
if dateObject, parseErr := dateutil.BuildDateObjectFromId(id); parseErr == nil {
|
||||
perSpace[sb.space.Id()] = append(perSpace[sb.space.Id()], dateObject.Id())
|
||||
continue
|
||||
}
|
||||
|
||||
|
|
|
@ -239,7 +239,7 @@ func (t *TextObject) handleDateMention(rt api.RichText,
|
|||
if rt.Mention.Date.End != "" {
|
||||
textDate = rt.Mention.Date.End
|
||||
}
|
||||
date, err := dateutil.ParseDateId(textDate)
|
||||
dateObject, err := dateutil.BuildDateObjectFromId(textDate)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
@ -252,7 +252,7 @@ func (t *TextObject) handleDateMention(rt api.RichText,
|
|||
To: int32(to),
|
||||
},
|
||||
Type: model.BlockContentTextMark_Mention,
|
||||
Param: dateutil.TimeToDateId(date),
|
||||
Param: dateObject.Id(),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
14
core/block/object/idderiver/deriver.go
Normal file
14
core/block/object/idderiver/deriver.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
package idderiver
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/anyproto/any-sync/app"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
)
|
||||
|
||||
type Deriver interface {
|
||||
app.Component
|
||||
DeriveObjectId(ctx context.Context, spaceId string, key domain.UniqueKey) (id string, err error)
|
||||
}
|
39
core/block/object/idderiver/idderiverimpl/impl.go
Normal file
39
core/block/object/idderiver/idderiverimpl/impl.go
Normal file
|
@ -0,0 +1,39 @@
|
|||
package idderiverimpl
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/anyproto/any-sync/app"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block/object/idderiver"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/space"
|
||||
)
|
||||
|
||||
const CName = "object-id-deriver"
|
||||
|
||||
type Deriver struct {
|
||||
spaceService space.Service
|
||||
}
|
||||
|
||||
func New() idderiver.Deriver {
|
||||
return &Deriver{}
|
||||
}
|
||||
|
||||
func (d *Deriver) Name() string {
|
||||
return CName
|
||||
}
|
||||
|
||||
func (d *Deriver) Init(a *app.App) error {
|
||||
d.spaceService = app.MustComponent[space.Service](a)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Deriver) DeriveObjectId(ctx context.Context, spaceId string, key domain.UniqueKey) (id string, err error) {
|
||||
spc, err := d.spaceService.Get(ctx, spaceId)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return spc.DeriveObjectID(ctx, key)
|
||||
}
|
|
@ -3,6 +3,7 @@ package objectcreator
|
|||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/anyproto/any-sync/app"
|
||||
"github.com/gogo/protobuf/types"
|
||||
|
@ -183,30 +184,20 @@ func (s *service) createObjectFromTemplate(
|
|||
|
||||
// buildDateObject does not create real date object. It just builds date object details
|
||||
func buildDateObject(space clientspace.Space, details *types.Struct) (string, *types.Struct, error) {
|
||||
name := pbtypes.GetString(details, bundle.RelationKeyName.String())
|
||||
id, err := dateutil.DateNameToId(name)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("failed to build date object, as its name is invalid: %w", err)
|
||||
}
|
||||
ts := pbtypes.GetInt64(details, bundle.RelationKeyTimestamp.String())
|
||||
dateObject := dateutil.NewDateObject(time.Unix(ts, 0), false)
|
||||
|
||||
typeId, err := space.GetTypeIdByKey(context.Background(), bundle.TypeKeyDate)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("failed to find Date type to build Date object: %w", err)
|
||||
}
|
||||
|
||||
// TODO: GO-4494 - Remove links relation id fetch
|
||||
linksRelationId, err := space.GetRelationIdByKey(context.Background(), bundle.RelationKeyLinks)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("get links relation id: %w", err)
|
||||
}
|
||||
|
||||
dateSource := source.NewDate(source.DateSourceParams{
|
||||
Id: domain.FullID{
|
||||
ObjectID: id,
|
||||
ObjectID: dateObject.Id(),
|
||||
SpaceID: space.Id(),
|
||||
},
|
||||
DateObjectTypeId: typeId,
|
||||
LinksRelationId: linksRelationId,
|
||||
})
|
||||
|
||||
detailsGetter, ok := dateSource.(source.SourceIdEndodedDetails)
|
||||
|
@ -215,5 +206,5 @@ func buildDateObject(space clientspace.Space, details *types.Struct) (string, *t
|
|||
}
|
||||
|
||||
details, err = detailsGetter.DetailsFromId()
|
||||
return id, details, err
|
||||
return dateObject.Id(), details, err
|
||||
}
|
||||
|
|
|
@ -117,45 +117,21 @@ func TestService_CreateObject(t *testing.T) {
|
|||
assert.Equal(t, bundle.TypeKeyDate, key)
|
||||
return bundle.TypeKeyDate.URL(), nil
|
||||
})
|
||||
// TODO: GO-4494 - Remove links relation id fetch
|
||||
f.spc.EXPECT().GetRelationIdByKey(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, key domain.RelationKey) (string, error) {
|
||||
assert.Equal(t, bundle.RelationKeyLinks, key)
|
||||
return bundle.RelationKeyLinks.URL(), nil
|
||||
})
|
||||
ts := time.Now()
|
||||
name := dateutil.TimeToDateName(ts)
|
||||
dateObject := dateutil.NewDateObject(ts, false)
|
||||
|
||||
// when
|
||||
id, details, err := f.service.CreateObject(context.Background(), spaceId, CreateObjectRequest{
|
||||
ObjectTypeKey: bundle.TypeKeyDate,
|
||||
Details: &types.Struct{Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyName.String(): pbtypes.String(name),
|
||||
bundle.RelationKeyTimestamp.String(): pbtypes.Int64(dateObject.Time().Unix()),
|
||||
}},
|
||||
})
|
||||
|
||||
// then
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, strings.HasPrefix(id, dateutil.TimeToDateId(ts)))
|
||||
assert.True(t, strings.HasPrefix(id, dateObject.Id()))
|
||||
assert.Equal(t, spaceId, pbtypes.GetString(details, bundle.RelationKeySpaceId.String()))
|
||||
assert.Equal(t, bundle.TypeKeyDate.URL(), pbtypes.GetString(details, bundle.RelationKeyType.String()))
|
||||
})
|
||||
|
||||
t.Run("date object creation - invalid name", func(t *testing.T) {
|
||||
// given
|
||||
f := newFixture(t)
|
||||
f.spaceService.EXPECT().Get(mock.Anything, mock.Anything).Return(f.spc, nil)
|
||||
ts := time.Now()
|
||||
name := ts.Format(time.RFC3339)
|
||||
|
||||
// when
|
||||
_, _, err := f.service.CreateObject(context.Background(), spaceId, CreateObjectRequest{
|
||||
ObjectTypeKey: bundle.TypeKeyDate,
|
||||
Details: &types.Struct{Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyName.String(): pbtypes.String(name),
|
||||
}},
|
||||
})
|
||||
|
||||
// then
|
||||
assert.Error(t, err)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -128,7 +128,9 @@ func (gr *Builder) buildGraph(
|
|||
|
||||
outgoingRelationLink := make(map[string]struct{}, 10)
|
||||
edges = gr.appendRelations(rec, relations, edges, existedNodes, sourceId, outgoingRelationLink)
|
||||
edges = gr.appendLinks(req.SpaceId, rec, outgoingRelationLink, existedNodes, edges, sourceId)
|
||||
var nodesToAdd []*types.Struct
|
||||
nodesToAdd, edges = gr.appendLinks(req.SpaceId, rec, outgoingRelationLink, existedNodes, edges, sourceId)
|
||||
nodes = append(nodes, pbtypes.MapN(nodesToAdd, req.Keys...)...)
|
||||
}
|
||||
return nodes, edges
|
||||
}
|
||||
|
@ -191,26 +193,45 @@ func (gr *Builder) appendLinks(
|
|||
existedNodes map[string]struct{},
|
||||
edges []*pb.RpcObjectGraphEdge,
|
||||
id string,
|
||||
) []*pb.RpcObjectGraphEdge {
|
||||
) (nodes []*types.Struct, resultEdges []*pb.RpcObjectGraphEdge) {
|
||||
links := pbtypes.GetStringList(rec, bundle.RelationKeyLinks.String())
|
||||
for _, link := range links {
|
||||
sbType, err := gr.sbtProvider.Type(spaceID, link)
|
||||
if err != nil {
|
||||
log.Error("get smartblock type", zap.String("objectId", link), zap.Error(err))
|
||||
}
|
||||
// ignore files because we index all file blocks as outgoing links
|
||||
if sbType != smartblock.SmartBlockTypeFileObject {
|
||||
if _, exists := outgoingRelationLink[link]; !exists {
|
||||
if _, exists := existedNodes[link]; exists {
|
||||
edges = append(edges, &pb.RpcObjectGraphEdge{
|
||||
Source: id,
|
||||
Target: link,
|
||||
Name: "",
|
||||
Type: pb.RpcObjectGraphEdge_Link,
|
||||
})
|
||||
|
||||
switch sbType {
|
||||
case smartblock.SmartBlockTypeFileObject:
|
||||
// ignore files because we index all file blocks as outgoing links
|
||||
continue
|
||||
case smartblock.SmartBlockTypeDate:
|
||||
if _, exists := existedNodes[link]; !exists {
|
||||
details, err := gr.objectStore.SpaceIndex(spaceID).QueryByIds([]string{link})
|
||||
if err == nil && len(details) != 1 {
|
||||
err = fmt.Errorf("expected to get 1 date object, got %d", len(details))
|
||||
}
|
||||
if err != nil {
|
||||
log.Error("get details of Date object", zap.String("objectId", link), zap.Error(err))
|
||||
continue
|
||||
}
|
||||
existedNodes[link] = struct{}{}
|
||||
nodes = append(nodes, details[0].Details)
|
||||
}
|
||||
}
|
||||
|
||||
if _, exists := outgoingRelationLink[link]; exists {
|
||||
continue
|
||||
}
|
||||
|
||||
if _, exists := existedNodes[link]; exists {
|
||||
edges = append(edges, &pb.RpcObjectGraphEdge{
|
||||
Source: id,
|
||||
Target: link,
|
||||
Name: "",
|
||||
Type: pb.RpcObjectGraphEdge_Link,
|
||||
})
|
||||
}
|
||||
}
|
||||
return edges
|
||||
return nodes, edges
|
||||
}
|
||||
|
|
|
@ -2,10 +2,12 @@ package objectgraph
|
|||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/gogo/protobuf/types"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/mock"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/relationutils"
|
||||
"github.com/anyproto/anytype-heart/core/subscription"
|
||||
|
@ -17,6 +19,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/spaceindex"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
"github.com/anyproto/anytype-heart/space/spacecore/typeprovider/mock_typeprovider"
|
||||
"github.com/anyproto/anytype-heart/util/dateutil"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
)
|
||||
|
||||
|
@ -86,13 +89,14 @@ func Test(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
assert.Equal(t, "links", req.Keys[0])
|
||||
assert.Equal(t, 4, len(req.Keys))
|
||||
assert.True(t, len(graph) == 0)
|
||||
assert.True(t, len(edges) == 0)
|
||||
assert.Empty(t, graph)
|
||||
assert.Empty(t, edges)
|
||||
})
|
||||
|
||||
t.Run("graph", func(t *testing.T) {
|
||||
fx := newFixture(t)
|
||||
spaceId := "space1"
|
||||
dateObject := dateutil.NewDateObject(time.Now(), false)
|
||||
fx.objectStoreMock.AddObjects(t, spaceId, []spaceindex.TestObject{
|
||||
{
|
||||
bundle.RelationKeyId: pbtypes.String("rel1"),
|
||||
|
@ -119,12 +123,18 @@ func Test(t *testing.T) {
|
|||
bundle.RelationKeyRelationFormat: pbtypes.Int64(int64(model.RelationFormat_object)),
|
||||
},
|
||||
})
|
||||
fx.objectStoreMock.AddVirtualDetails(dateObject.Id(), &types.Struct{Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyId.String(): pbtypes.String(dateObject.Id()),
|
||||
bundle.RelationKeyLayout.String(): pbtypes.Int64(int64(model.ObjectType_date)),
|
||||
bundle.RelationKeyName.String(): pbtypes.String(dateObject.Name()),
|
||||
bundle.RelationKeyTimestamp.String(): pbtypes.Int64(dateObject.Time().Unix()),
|
||||
}})
|
||||
fx.subscriptionServiceMock.EXPECT().Search(mock.Anything).Return(&subscription.SubscribeResponse{
|
||||
Records: []*types.Struct{
|
||||
{Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyId.String(): pbtypes.String("id1"),
|
||||
bundle.RelationKeyAssignee.String(): pbtypes.String("id2"),
|
||||
bundle.RelationKeyLinks.String(): pbtypes.StringList([]string{"id2", "id3"}),
|
||||
bundle.RelationKeyLinks.String(): pbtypes.StringList([]string{"id2", "id3", dateObject.Id()}),
|
||||
}},
|
||||
{Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyId.String(): pbtypes.String("id2"),
|
||||
|
@ -135,19 +145,27 @@ func Test(t *testing.T) {
|
|||
},
|
||||
}, nil)
|
||||
fx.subscriptionServiceMock.EXPECT().Unsubscribe(mock.Anything).Return(nil)
|
||||
fx.sbtProviderMock.EXPECT().Type(mock.Anything, mock.Anything).Return(smartblock.SmartBlockTypePage, nil)
|
||||
fx.sbtProviderMock.EXPECT().Type(mock.Anything, mock.Anything).RunAndReturn(func(spcId string, id string) (smartblock.SmartBlockType, error) {
|
||||
require.Equal(t, spcId, spaceId)
|
||||
if _, err := dateutil.BuildDateObjectFromId(id); err == nil {
|
||||
return smartblock.SmartBlockTypeDate, err
|
||||
}
|
||||
return smartblock.SmartBlockTypePage, nil
|
||||
})
|
||||
|
||||
req := &pb.RpcObjectGraphRequest{
|
||||
SpaceId: spaceId,
|
||||
}
|
||||
graph, edges, err := fx.ObjectGraph(req)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, len(graph) == 3)
|
||||
assert.True(t, len(edges) == 2)
|
||||
require.Len(t, graph, 4)
|
||||
require.Len(t, edges, 3)
|
||||
assert.Equal(t, "id1", edges[0].Source)
|
||||
assert.Equal(t, "id2", edges[0].Target)
|
||||
assert.Equal(t, "id1", edges[1].Source)
|
||||
assert.Equal(t, "id3", edges[1].Target)
|
||||
assert.Equal(t, "id1", edges[2].Source)
|
||||
assert.Equal(t, dateObject.Id(), edges[2].Target)
|
||||
})
|
||||
|
||||
}
|
||||
|
|
|
@ -41,7 +41,8 @@ type Flags struct {
|
|||
DataviewBlockOnlyTarget,
|
||||
NoSystemRelations,
|
||||
NoHiddenBundledRelations,
|
||||
NoImages bool
|
||||
NoImages,
|
||||
RoundDateIdsToDay bool
|
||||
}
|
||||
|
||||
func DependentObjectIDs(s *state.State, converter KeyToIDConverter, flags Flags) (ids []string) {
|
||||
|
@ -79,6 +80,10 @@ func DependentObjectIDs(s *state.State, converter KeyToIDConverter, flags Flags)
|
|||
ids = append(ids, s.GetStoreSlice(template.CollectionStoreKey)...)
|
||||
}
|
||||
|
||||
if flags.RoundDateIdsToDay {
|
||||
ids = roundDateIds(ids)
|
||||
}
|
||||
|
||||
ids = lo.Uniq(ids)
|
||||
return
|
||||
}
|
||||
|
@ -152,7 +157,7 @@ func collectIdsFromDetail(rel *model.RelationLink, det *types.Struct, flags Flag
|
|||
if relInt > 0 {
|
||||
t := time.Unix(relInt, 0)
|
||||
t = t.In(time.Local)
|
||||
ids = append(ids, dateutil.TimeToDateId(t))
|
||||
ids = append(ids, dateutil.NewDateObject(t, false).Id())
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -199,3 +204,16 @@ func collectIdsFromDetail(rel *model.RelationLink, det *types.Struct, flags Flag
|
|||
|
||||
return ids
|
||||
}
|
||||
|
||||
// roundDateIds turns all date object ids into ids with no time included
|
||||
func roundDateIds(ids []string) []string {
|
||||
for i, id := range ids {
|
||||
dateObject, err := dateutil.BuildDateObjectFromId(id)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
ids[i] = dateutil.NewDateObject(dateObject.Time(), false).Id()
|
||||
}
|
||||
return ids
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
"github.com/anyproto/anytype-heart/util/dateutil"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
)
|
||||
|
||||
|
@ -89,10 +90,12 @@ func TestState_DepSmartIdsLinks(t *testing.T) {
|
|||
|
||||
func TestState_DepSmartIdsLinksAndRelations(t *testing.T) {
|
||||
// given
|
||||
dateObject1 := dateutil.NewDateObject(time.Now(), true)
|
||||
dateObject2 := dateutil.NewDateObject(time.Now(), false)
|
||||
stateWithLinks := state.NewDoc("root", map[string]simple.Block{
|
||||
"root": simple.New(&model.Block{
|
||||
Id: "root",
|
||||
ChildrenIds: []string{"childBlock", "childBlock2", "childBlock3", "dataview", "image", "song"},
|
||||
ChildrenIds: []string{"childBlock", "childBlock2", "childBlock3", "dataview", "image", "song", "date1", "date2"},
|
||||
}),
|
||||
"childBlock": simple.New(&model.Block{Id: "childBlock",
|
||||
Content: &model.BlockContentOfText{
|
||||
|
@ -154,6 +157,18 @@ func TestState_DepSmartIdsLinksAndRelations(t *testing.T) {
|
|||
Type: model.BlockContentFile_Audio,
|
||||
},
|
||||
}}),
|
||||
"date1": simple.New(&model.Block{Id: "childBlock3",
|
||||
Content: &model.BlockContentOfLink{
|
||||
Link: &model.BlockContentLink{
|
||||
TargetBlockId: dateObject1.Id(),
|
||||
},
|
||||
}}),
|
||||
"date2": simple.New(&model.Block{Id: "childBlock3",
|
||||
Content: &model.BlockContentOfLink{
|
||||
Link: &model.BlockContentLink{
|
||||
TargetBlockId: dateObject2.Id(),
|
||||
},
|
||||
}}),
|
||||
}).(*state.State)
|
||||
converter := &fakeConverter{}
|
||||
|
||||
|
@ -179,22 +194,27 @@ func TestState_DepSmartIdsLinksAndRelations(t *testing.T) {
|
|||
|
||||
t.Run("blocks option is turned on: get ids from blocks", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true})
|
||||
assert.Len(t, objectIDs, 9)
|
||||
assert.Len(t, objectIDs, 11)
|
||||
})
|
||||
|
||||
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)
|
||||
assert.Len(t, objectIDs, 9)
|
||||
})
|
||||
|
||||
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)
|
||||
assert.Len(t, objectIDs, 10)
|
||||
})
|
||||
|
||||
t.Run("blocks option and relations options are turned on: get ids from blocks and relations", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true, Relations: true})
|
||||
assert.Len(t, objectIDs, 13) // 9 links + 4 relations
|
||||
assert.Len(t, objectIDs, 15) // 11 links + 4 relations
|
||||
})
|
||||
|
||||
t.Run("date object ids are rounded to day", func(t *testing.T) {
|
||||
objectIDs := DependentObjectIDs(stateWithLinks, converter, Flags{Blocks: true, RoundDateIdsToDay: true})
|
||||
assert.Len(t, objectIDs, 10)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -46,7 +46,6 @@ import (
|
|||
"github.com/anyproto/anytype-heart/pkg/lib/logging"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
"github.com/anyproto/anytype-heart/space"
|
||||
"github.com/anyproto/anytype-heart/util/dateutil"
|
||||
"github.com/anyproto/anytype-heart/util/internalflag"
|
||||
"github.com/anyproto/anytype-heart/util/mutex"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
|
@ -223,8 +222,7 @@ func (s *Service) DoFullId(id domain.FullID, apply func(sb smartblock.SmartBlock
|
|||
|
||||
// resolveFullId resolves missing spaceId
|
||||
func (s *Service) resolveFullId(id domain.FullID) domain.FullID {
|
||||
// TODO: GO-4494 - Do not resolve spaceId in case of date object id. This logic should be reviewed
|
||||
if _, parseErr := dateutil.ParseDateId(id.ObjectID); parseErr == nil && id.SpaceID != "" {
|
||||
if id.SpaceID != "" {
|
||||
return id
|
||||
}
|
||||
// First try to resolve space. It's necessary if client accidentally passes wrong spaceId
|
||||
|
|
|
@ -21,8 +21,6 @@ import (
|
|||
type DateSourceParams struct {
|
||||
Id domain.FullID
|
||||
DateObjectTypeId string
|
||||
// TODO: GO-4494 - Remove links relation id
|
||||
LinksRelationId string
|
||||
}
|
||||
|
||||
func NewDate(params DateSourceParams) (s Source) {
|
||||
|
@ -30,14 +28,11 @@ func NewDate(params DateSourceParams) (s Source) {
|
|||
id: params.Id.ObjectID,
|
||||
spaceId: params.Id.SpaceID,
|
||||
typeId: params.DateObjectTypeId,
|
||||
linksId: params.LinksRelationId,
|
||||
}
|
||||
}
|
||||
|
||||
type date struct {
|
||||
id, spaceId, typeId string
|
||||
// TODO: GO-4494 - Remove links relation id
|
||||
linksId string
|
||||
}
|
||||
|
||||
func (d *date) ListIds() ([]string, error) {
|
||||
|
@ -61,13 +56,13 @@ func (d *date) Type() smartblock.SmartBlockType {
|
|||
}
|
||||
|
||||
func (d *date) getDetails() (*types.Struct, error) {
|
||||
t, err := dateutil.ParseDateId(d.id)
|
||||
dateObject, err := dateutil.BuildDateObjectFromId(d.id)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to parse date id: %w", err)
|
||||
}
|
||||
|
||||
return &types.Struct{Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyName.String(): pbtypes.String(dateutil.TimeToDateName(t)),
|
||||
bundle.RelationKeyName.String(): pbtypes.String(dateObject.Name()),
|
||||
bundle.RelationKeyId.String(): pbtypes.String(d.id),
|
||||
bundle.RelationKeyType.String(): pbtypes.String(d.typeId),
|
||||
bundle.RelationKeyIsReadonly.String(): pbtypes.Bool(true),
|
||||
|
@ -76,9 +71,7 @@ func (d *date) getDetails() (*types.Struct, error) {
|
|||
bundle.RelationKeyLayout.String(): pbtypes.Float64(float64(model.ObjectType_date)),
|
||||
bundle.RelationKeyIconEmoji.String(): pbtypes.String("📅"),
|
||||
bundle.RelationKeySpaceId.String(): pbtypes.String(d.SpaceID()),
|
||||
bundle.RelationKeyTimestamp.String(): pbtypes.Int64(t.Unix()),
|
||||
// TODO: GO-4494 - Remove links relation id
|
||||
bundle.RelationKeySetOf.String(): pbtypes.StringList([]string{d.linksId}),
|
||||
bundle.RelationKeyTimestamp.String(): pbtypes.Int64(dateObject.Time().Unix()),
|
||||
}}, nil
|
||||
}
|
||||
|
||||
|
@ -92,57 +85,10 @@ func (d *date) ReadDoc(context.Context, ChangeReceiver, bool) (doc state.Doc, er
|
|||
return
|
||||
}
|
||||
|
||||
dataview := &model.BlockContentOfDataview{
|
||||
Dataview: &model.BlockContentDataview{
|
||||
RelationLinks: []*model.RelationLink{
|
||||
{
|
||||
Key: bundle.RelationKeyName.String(),
|
||||
Format: model.RelationFormat_shorttext,
|
||||
},
|
||||
{
|
||||
Key: bundle.RelationKeyLastModifiedDate.String(),
|
||||
Format: model.RelationFormat_date,
|
||||
},
|
||||
},
|
||||
Views: []*model.BlockContentDataviewView{
|
||||
{
|
||||
Id: "1",
|
||||
Type: model.BlockContentDataviewView_Table,
|
||||
Name: "Date backlinks",
|
||||
Sorts: []*model.BlockContentDataviewSort{
|
||||
{
|
||||
RelationKey: bundle.RelationKeyLastModifiedDate.String(),
|
||||
Type: model.BlockContentDataviewSort_Desc,
|
||||
},
|
||||
},
|
||||
Filters: []*model.BlockContentDataviewFilter{
|
||||
{
|
||||
RelationKey: bundle.RelationKeyLinks.String(),
|
||||
Condition: model.BlockContentDataviewFilter_In,
|
||||
Value: pbtypes.String(d.id),
|
||||
},
|
||||
},
|
||||
Relations: []*model.BlockContentDataviewRelation{
|
||||
{
|
||||
Key: bundle.RelationKeyName.String(),
|
||||
IsVisible: true,
|
||||
},
|
||||
{
|
||||
Key: bundle.RelationKeyLastModifiedDate.String(),
|
||||
IsVisible: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
s := state.NewDoc(d.id, nil).(*state.State)
|
||||
template.InitTemplate(s,
|
||||
template.WithTitle,
|
||||
template.WithDefaultFeaturedRelations,
|
||||
// TODO: GO-4494 - Remove dataview block insertion
|
||||
template.WithDataview(dataview, true),
|
||||
template.WithAllBlocksEditsRestricted,
|
||||
)
|
||||
s.SetDetails(details)
|
||||
|
|
|
@ -18,6 +18,7 @@ import (
|
|||
"github.com/anyproto/any-sync/commonspace/spacestorage"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/state"
|
||||
"github.com/anyproto/anytype-heart/core/block/object/idderiver"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/core/files"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
|
@ -60,12 +61,6 @@ type Service interface {
|
|||
app.Component
|
||||
}
|
||||
|
||||
// TODO: GO-4494 - Remove this interface
|
||||
type derivedObjectIdGetter interface {
|
||||
GetRelationIdByKey(ctx context.Context, spaceId string, key domain.RelationKey) (id string, err error)
|
||||
GetTypeIdByKey(ctx context.Context, spaceId string, key domain.TypeKey) (id string, err error)
|
||||
}
|
||||
|
||||
type service struct {
|
||||
sbtProvider typeprovider.SmartBlockTypeProvider
|
||||
accountService accountService
|
||||
|
@ -74,9 +69,7 @@ type service struct {
|
|||
fileService files.Service
|
||||
objectStore objectstore.ObjectStore
|
||||
fileObjectMigrator fileObjectMigrator
|
||||
|
||||
// TODO: GO-4494 - Remove derivedObjectIdGetter
|
||||
derivedObjectIdGetter derivedObjectIdGetter
|
||||
idDeriver idderiver.Deriver
|
||||
|
||||
mu sync.Mutex
|
||||
staticIds map[string]Source
|
||||
|
@ -90,12 +83,10 @@ func (s *service) Init(a *app.App) (err error) {
|
|||
s.accountKeysService = a.MustComponent(accountservice.CName).(accountservice.Service)
|
||||
s.storageService = a.MustComponent(spacestorage.CName).(storage.ClientStorage)
|
||||
s.objectStore = app.MustComponent[objectstore.ObjectStore](a)
|
||||
s.idDeriver = app.MustComponent[idderiver.Deriver](a)
|
||||
|
||||
s.fileService = app.MustComponent[files.Service](a)
|
||||
s.fileObjectMigrator = app.MustComponent[fileObjectMigrator](a)
|
||||
|
||||
// TODO: GO-4494 - Remove derivedObjectIdGetter
|
||||
s.derivedObjectIdGetter = app.MustComponent[derivedObjectIdGetter](a)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -156,20 +147,12 @@ func (s *service) newSource(ctx context.Context, space Space, id string, buildOp
|
|||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to find Date type to build Date object: %w", err)
|
||||
}
|
||||
|
||||
// TODO: GO-4494 - Remove links relation id fetch
|
||||
linksRelationId, err := space.GetRelationIdByKey(context.Background(), bundle.RelationKeyLinks)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("get links relation id: %w", err)
|
||||
}
|
||||
|
||||
return NewDate(DateSourceParams{
|
||||
Id: domain.FullID{
|
||||
ObjectID: id,
|
||||
SpaceID: space.Id(),
|
||||
},
|
||||
DateObjectTypeId: typeId,
|
||||
LinksRelationId: linksRelationId,
|
||||
}), nil
|
||||
case smartblock.SmartBlockTypeBundledObjectType:
|
||||
return NewBundledObjectType(id), nil
|
||||
|
@ -236,22 +219,15 @@ func (s *service) DetailsFromIdBasedSource(id domain.FullID) (*types.Struct, err
|
|||
return nil, fmt.Errorf("unsupported id")
|
||||
}
|
||||
|
||||
// TODO: GO-4494 - Remove date type id fetch
|
||||
dateObjectId, err := s.derivedObjectIdGetter.GetTypeIdByKey(context.Background(), id.SpaceID, bundle.TypeKeyDate)
|
||||
dateTypeId, err := s.idDeriver.DeriveObjectId(context.Background(), id.SpaceID,
|
||||
domain.MustUniqueKey(smartblock.SmartBlockTypeObjectType, bundle.TypeKeyDate.String()))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get id of Date type object: %w", err)
|
||||
}
|
||||
|
||||
// TODO: GO-4494 - Remove links relation id fetch
|
||||
linksId, err := s.derivedObjectIdGetter.GetRelationIdByKey(context.Background(), id.SpaceID, bundle.RelationKeyLinks)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get id of Links relation object: %w", err)
|
||||
return nil, fmt.Errorf("failed to derive id of Date type object: %w", err)
|
||||
}
|
||||
|
||||
ss := NewDate(DateSourceParams{
|
||||
Id: id,
|
||||
DateObjectTypeId: dateObjectId,
|
||||
LinksRelationId: linksId,
|
||||
DateObjectTypeId: dateTypeId,
|
||||
})
|
||||
defer ss.Close()
|
||||
if v, ok := ss.(SourceIdEndodedDetails); ok {
|
||||
|
|
49
core/date/date_test.go
Normal file
49
core/date/date_test.go
Normal file
|
@ -0,0 +1,49 @@
|
|||
package date
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/mock"
|
||||
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
"github.com/anyproto/anytype-heart/space/clientspace/mock_clientspace"
|
||||
"github.com/anyproto/anytype-heart/space/mock_space"
|
||||
"github.com/anyproto/anytype-heart/util/dateutil"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
)
|
||||
|
||||
const spaceId = "space1"
|
||||
|
||||
func TestBuildDetailsFromTimestamp(t *testing.T) {
|
||||
spc := mock_clientspace.NewMockSpace(t)
|
||||
spc.EXPECT().GetTypeIdByKey(mock.Anything, bundle.TypeKeyDate).Return(bundle.TypeKeyDate.URL(), nil)
|
||||
spcService := mock_space.NewMockService(t)
|
||||
spcService.EXPECT().Get(mock.Anything, mock.Anything).Return(spc, nil)
|
||||
|
||||
for _, ts := range []int64{0, 1720035620, 1731099336,
|
||||
time.Date(2024, time.November, 30, 23, 55, 55, 0, time.UTC).Unix(),
|
||||
time.Date(2024, time.November, 30, 23, 55, 55, 0, time.FixedZone("Berlin", +2*60*60)).Unix(),
|
||||
} {
|
||||
t.Run("date object details - "+strconv.FormatInt(ts, 10), func(t *testing.T) {
|
||||
// when
|
||||
details, err := BuildDetailsFromTimestamp(nil, spcService, spaceId, ts)
|
||||
|
||||
// then
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, spaceId, pbtypes.GetString(details, bundle.RelationKeySpaceId.String()))
|
||||
assert.Equal(t, bundle.TypeKeyDate.URL(), pbtypes.GetString(details, bundle.RelationKeyType.String()))
|
||||
|
||||
dateObject := dateutil.NewDateObject(time.Unix(ts, 0), false)
|
||||
assert.Equal(t, dateObject.Id(), pbtypes.GetString(details, bundle.RelationKeyId.String()))
|
||||
assert.Equal(t, dateObject.Name(), pbtypes.GetString(details, bundle.RelationKeyName.String()))
|
||||
ts2 := pbtypes.GetInt64(details, bundle.RelationKeyTimestamp.String())
|
||||
tt := time.Unix(ts2, 0)
|
||||
assert.Zero(t, tt.Hour())
|
||||
assert.Zero(t, tt.Minute())
|
||||
assert.Zero(t, tt.Second())
|
||||
})
|
||||
}
|
||||
}
|
43
core/date/details.go
Normal file
43
core/date/details.go
Normal file
|
@ -0,0 +1,43 @@
|
|||
package date
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/gogo/protobuf/types"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block/source"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
"github.com/anyproto/anytype-heart/space"
|
||||
"github.com/anyproto/anytype-heart/util/dateutil"
|
||||
)
|
||||
|
||||
func BuildDetailsFromTimestamp(
|
||||
ctx context.Context, spaceService space.Service, spaceId string, timestamp int64,
|
||||
) (details *types.Struct, err error) {
|
||||
spc, err := spaceService.Get(ctx, spaceId)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get space service: %w", err)
|
||||
}
|
||||
|
||||
dateTypeId, err := spc.GetTypeIdByKey(ctx, bundle.TypeKeyDate)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get date type id: %w", err)
|
||||
}
|
||||
|
||||
dateSource := source.NewDate(source.DateSourceParams{
|
||||
Id: domain.FullID{
|
||||
SpaceID: spaceId,
|
||||
ObjectID: dateutil.NewDateObject(time.Unix(timestamp, 0), false).Id(),
|
||||
},
|
||||
DateObjectTypeId: dateTypeId,
|
||||
})
|
||||
|
||||
detailsGetter, ok := dateSource.(source.SourceIdEndodedDetails)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("date object does not implement SourceIdEndodedDetails: %w", err)
|
||||
}
|
||||
return detailsGetter.DetailsFromId()
|
||||
}
|
|
@ -18,37 +18,18 @@ import (
|
|||
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
|
||||
"github.com/anyproto/anytype-heart/space"
|
||||
"github.com/anyproto/anytype-heart/util/dateutil"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
)
|
||||
|
||||
func EnrichRecordsWithDateSuggestion(
|
||||
func EnrichRecordsWithDateSuggestions(
|
||||
ctx context.Context,
|
||||
records []database.Record,
|
||||
req *pb.RpcObjectSearchRequest,
|
||||
store objectstore.ObjectStore,
|
||||
spaceService space.Service,
|
||||
) ([]database.Record, error) {
|
||||
dt := suggestDateForSearch(time.Now(), req.FullText)
|
||||
if dt.IsZero() {
|
||||
return records, nil
|
||||
}
|
||||
|
||||
id := dateutil.TimeToDateId(dt)
|
||||
|
||||
// Don't duplicate search suggestions
|
||||
var found bool
|
||||
for _, r := range records {
|
||||
if r.Details == nil || r.Details.Fields == nil {
|
||||
continue
|
||||
}
|
||||
if v, ok := r.Details.Fields[bundle.RelationKeyId.String()]; ok {
|
||||
if v.GetStringValue() == id {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if found {
|
||||
ids := suggestDateObjectIds(req)
|
||||
if len(ids) == 0 {
|
||||
return records, nil
|
||||
}
|
||||
|
||||
|
@ -57,18 +38,59 @@ func EnrichRecordsWithDateSuggestion(
|
|||
return nil, fmt.Errorf("get space: %w", err)
|
||||
}
|
||||
|
||||
rec, err := makeSuggestedDateRecord(spc, dt)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("make date record: %w", err)
|
||||
}
|
||||
f, _ := database.MakeFilters(req.Filters, store.SpaceIndex(req.SpaceId)) //nolint:errcheck
|
||||
if f.FilterObject(rec.Details) {
|
||||
return append([]database.Record{rec}, records...), nil
|
||||
for _, id := range ids {
|
||||
if recordsHasId(records, id) {
|
||||
continue
|
||||
}
|
||||
|
||||
rec, err := makeSuggestedDateRecord(ctx, spc, id)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("make date record: %w", err)
|
||||
}
|
||||
|
||||
f, _ := database.MakeFilters(req.Filters, store.SpaceIndex(req.SpaceId)) //nolint:errcheck
|
||||
if f.FilterObject(rec.Details) {
|
||||
records = append([]database.Record{rec}, records...)
|
||||
}
|
||||
}
|
||||
|
||||
return records, nil
|
||||
}
|
||||
|
||||
// suggestDateObjectIds suggests date object ids based on two fields:
|
||||
// - fullText - if naturalDate successfully parses text into date, resulting date object id is returned
|
||||
// - filter with key id
|
||||
func suggestDateObjectIds(req *pb.RpcObjectSearchRequest) []string {
|
||||
dt := suggestDateForSearch(time.Now(), req.FullText)
|
||||
if !dt.IsZero() {
|
||||
// TODO: GO-4097 Uncomment it when we will be able to support dates with seconds precision
|
||||
// isDay := dt.Hour() == 0 && dt.Minute() == 0 && dt.Second() == 0
|
||||
isDay := true
|
||||
return []string{dateutil.NewDateObject(dt, !isDay).Id()}
|
||||
}
|
||||
|
||||
for _, filter := range req.Filters {
|
||||
if filter.RelationKey == bundle.RelationKeyId.String() {
|
||||
list := pbtypes.GetStringListValue(filter.Value)
|
||||
var dateObjectIds []string
|
||||
for _, id := range list {
|
||||
if _, err := dateutil.BuildDateObjectFromId(id); err == nil {
|
||||
dateObjectIds = append(dateObjectIds, id)
|
||||
}
|
||||
}
|
||||
return dateObjectIds
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func suggestDateForSearch(now time.Time, raw string) time.Time {
|
||||
// a hack to show calendar in case date is typed
|
||||
if raw == "date" {
|
||||
return time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
|
||||
}
|
||||
|
||||
suggesters := []func() time.Time{
|
||||
func() time.Time {
|
||||
var exprType naturaldate.ExprType
|
||||
|
@ -123,27 +145,33 @@ func suggestDateForSearch(now time.Time, raw string) time.Time {
|
|||
return t
|
||||
}
|
||||
|
||||
func makeSuggestedDateRecord(spc source.Space, t time.Time) (database.Record, error) {
|
||||
id := dateutil.TimeToDateId(t)
|
||||
func recordsHasId(records []database.Record, id string) bool {
|
||||
for _, r := range records {
|
||||
if r.Details == nil || r.Details.Fields == nil {
|
||||
continue
|
||||
}
|
||||
if v, ok := r.Details.Fields[bundle.RelationKeyId.String()]; ok {
|
||||
if v.GetStringValue() == id {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
typeId, err := spc.GetTypeIdByKey(context.Background(), bundle.TypeKeyDate)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func makeSuggestedDateRecord(ctx context.Context, spc source.Space, id string) (database.Record, error) {
|
||||
typeId, err := spc.GetTypeIdByKey(ctx, bundle.TypeKeyDate)
|
||||
if err != nil {
|
||||
return database.Record{}, fmt.Errorf("failed to find Date type to build Date object: %w", err)
|
||||
}
|
||||
|
||||
// TODO: GO-4494 - Remove links relation id fetch
|
||||
linksRelationId, err := spc.GetRelationIdByKey(context.Background(), bundle.RelationKeyLinks)
|
||||
if err != nil {
|
||||
return database.Record{}, fmt.Errorf("get links relation id: %w", err)
|
||||
}
|
||||
|
||||
dateSource := source.NewDate(source.DateSourceParams{
|
||||
Id: domain.FullID{
|
||||
ObjectID: id,
|
||||
SpaceID: spc.Id(),
|
||||
},
|
||||
DateObjectTypeId: typeId,
|
||||
LinksRelationId: linksRelationId,
|
||||
})
|
||||
|
||||
v, ok := dateSource.(source.SourceIdEndodedDetails)
|
||||
|
|
|
@ -5,6 +5,13 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/anyproto/anytype-heart/pb"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
"github.com/anyproto/anytype-heart/util/dateutil"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
)
|
||||
|
||||
func Test_suggestDateForSearch(t *testing.T) {
|
||||
|
@ -12,7 +19,6 @@ func Test_suggestDateForSearch(t *testing.T) {
|
|||
now := time.Date(2022, 5, 18, 14, 56, 33, 0, loc)
|
||||
|
||||
tests := []struct {
|
||||
now time.Time
|
||||
raw string
|
||||
want time.Time
|
||||
}{
|
||||
|
@ -20,6 +26,10 @@ func Test_suggestDateForSearch(t *testing.T) {
|
|||
raw: "now",
|
||||
want: time.Date(2022, 5, 18, 14, 56, 33, 0, loc),
|
||||
},
|
||||
{
|
||||
raw: "date",
|
||||
want: time.Date(2022, 5, 18, 0, 0, 0, 0, loc),
|
||||
},
|
||||
{
|
||||
raw: "today",
|
||||
want: time.Date(2022, 5, 18, 0, 0, 0, 0, loc),
|
||||
|
@ -61,3 +71,24 @@ func Test_suggestDateForSearch(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestSuggestDateObjectIdsFromFilter(t *testing.T) {
|
||||
// given
|
||||
dateObject1 := dateutil.NewDateObject(time.Now(), false)
|
||||
dateObject2 := dateutil.NewDateObject(time.Now().Add(2*time.Hour), true)
|
||||
req := &pb.RpcObjectSearchRequest{
|
||||
Filters: []*model.BlockContentDataviewFilter{{
|
||||
RelationKey: bundle.RelationKeyId.String(),
|
||||
Condition: model.BlockContentDataviewFilter_In,
|
||||
Value: pbtypes.StringList([]string{dateObject1.Id(), "plainObj1", "planObj2", dateObject2.Id()}),
|
||||
}},
|
||||
}
|
||||
|
||||
// when
|
||||
ids := suggestDateObjectIds(req)
|
||||
|
||||
// then
|
||||
require.Len(t, ids, 2)
|
||||
assert.Equal(t, dateObject1.Id(), ids[0])
|
||||
assert.Equal(t, dateObject2.Id(), ids[1])
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ import (
|
|||
"github.com/dgraph-io/badger/v4"
|
||||
"github.com/gogo/protobuf/proto"
|
||||
"github.com/gogo/protobuf/types"
|
||||
"github.com/samber/lo"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/anytype/account"
|
||||
|
@ -25,9 +26,11 @@ import (
|
|||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
"github.com/anyproto/anytype-heart/space"
|
||||
"github.com/anyproto/anytype-heart/util/badgerhelper"
|
||||
"github.com/anyproto/anytype-heart/util/conc"
|
||||
)
|
||||
|
||||
const CName = "identity"
|
||||
const identityBatch = 100
|
||||
|
||||
var (
|
||||
log = logging.Logger("anytype-identity").Desugar()
|
||||
|
@ -206,17 +209,13 @@ const identityRepoDataKind = "profile"
|
|||
|
||||
func (s *service) observeIdentities(ctx context.Context) error {
|
||||
identities := s.listRegisteredIdentities()
|
||||
allIdentitiesData := s.getIdentityData(ctx, identities)
|
||||
|
||||
identitiesData, err := s.getIdentitiesDataFromRepo(ctx, identities)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to pull identity: %w", err)
|
||||
}
|
||||
|
||||
if err = s.fetchGlobalNames(identities); err != nil {
|
||||
if err := s.fetchGlobalNames(identities); err != nil {
|
||||
log.Error("error fetching global names of guest identities from Naming Service", zap.Error(err))
|
||||
}
|
||||
|
||||
for _, identityData := range identitiesData {
|
||||
for _, identityData := range allIdentitiesData {
|
||||
err := s.broadcastIdentityProfile(identityData)
|
||||
if err != nil {
|
||||
log.Error("error handling identity data", zap.Error(err))
|
||||
|
@ -225,6 +224,17 @@ func (s *service) observeIdentities(ctx context.Context) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *service) getIdentityData(ctx context.Context, identities []string) []*identityrepoproto.DataWithIdentity {
|
||||
batches := lo.Chunk(identities, identityBatch)
|
||||
allIdentitiesData, err := conc.MapErr(batches, func(batch []string) ([]*identityrepoproto.DataWithIdentity, error) {
|
||||
return s.getIdentitiesDataFromRepo(ctx, batch)
|
||||
})
|
||||
if err != nil {
|
||||
log.Error("failed to pull identity", zap.Error(err))
|
||||
}
|
||||
return lo.Flatten(allIdentitiesData)
|
||||
}
|
||||
|
||||
func (s *service) listRegisteredIdentities() []string {
|
||||
s.lock.Lock()
|
||||
defer s.lock.Unlock()
|
||||
|
@ -243,18 +253,16 @@ func (s *service) listRegisteredIdentities() []string {
|
|||
}
|
||||
|
||||
func (s *service) getIdentitiesDataFromRepo(ctx context.Context, identities []string) ([]*identityrepoproto.DataWithIdentity, error) {
|
||||
if len(identities) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
res, err := s.identityRepoClient.IdentityRepoGet(ctx, identities, []string{identityRepoDataKind})
|
||||
if err == nil {
|
||||
return res, nil
|
||||
if err != nil {
|
||||
return s.processFailedIdentities(res, identities)
|
||||
}
|
||||
log.Info("get identities data from remote repo", zap.Error(err))
|
||||
return res, nil
|
||||
}
|
||||
|
||||
res = make([]*identityrepoproto.DataWithIdentity, 0, len(identities))
|
||||
err = s.db.View(func(txn *badger.Txn) error {
|
||||
for _, identity := range identities {
|
||||
func (s *service) processFailedIdentities(res []*identityrepoproto.DataWithIdentity, failedIdentities []string) ([]*identityrepoproto.DataWithIdentity, error) {
|
||||
err := s.db.View(func(txn *badger.Txn) error {
|
||||
for _, identity := range failedIdentities {
|
||||
rawData, err := badgerhelper.GetValueTxn(txn, makeIdentityProfileKey(identity), badgerhelper.UnmarshalBytes)
|
||||
if badgerhelper.IsNotFound(err) {
|
||||
continue
|
||||
|
|
|
@ -3,6 +3,8 @@ package identity
|
|||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"math"
|
||||
"slices"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"testing"
|
||||
|
@ -35,6 +37,7 @@ type fixture struct {
|
|||
coordinatorClient *inMemoryIdentityRepo
|
||||
spaceService *mock_space.MockService
|
||||
accountService *mock_account.MockService
|
||||
nsClient *mock_nameserviceclient.MockAnyNsClientService
|
||||
}
|
||||
|
||||
const (
|
||||
|
@ -95,6 +98,7 @@ func newFixture(t *testing.T, testObserverPeriod time.Duration) *fixture {
|
|||
spaceService: spaceService,
|
||||
accountService: accountService,
|
||||
coordinatorClient: identityRepoClient,
|
||||
nsClient: nsClient,
|
||||
}
|
||||
go fx.observeIdentitiesLoop()
|
||||
|
||||
|
@ -249,7 +253,6 @@ func TestIdentityProfileCache(t *testing.T) {
|
|||
time.Sleep(testObserverPeriod * 2)
|
||||
assert.Equal(t, uint64(1), atomic.LoadUint64(&called))
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func TestObservers(t *testing.T) {
|
||||
|
@ -331,7 +334,6 @@ func TestObservers(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
wg.Wait()
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func TestGetIdentitiesDataFromRepo(t *testing.T) {
|
||||
|
@ -342,9 +344,181 @@ func TestGetIdentitiesDataFromRepo(t *testing.T) {
|
|||
fx.coordinatorClient.setCallback(func(_ []string, _ []string, _ []*identityrepoproto.DataWithIdentity, _ error) {
|
||||
called.Set(true)
|
||||
})
|
||||
list, err := fx.getIdentitiesDataFromRepo(context.Background(), nil)
|
||||
err := fx.observeIdentities(context.Background())
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, list)
|
||||
require.False(t, called.Get())
|
||||
})
|
||||
t.Run("receive 100 identities", func(t *testing.T) {
|
||||
// given
|
||||
testObserverPeriod := time.Minute
|
||||
fx := newFixture(t, testObserverPeriod)
|
||||
nsServiceResult := make([]*nameserviceproto.NameByAddressResponse, 0, 100)
|
||||
var (
|
||||
wg sync.WaitGroup
|
||||
allIdentities, processedIdentities []string
|
||||
)
|
||||
for i := 0; i < 100; i++ {
|
||||
identity := fmt.Sprintf("identity%d", i)
|
||||
allIdentities = append(allIdentities, identity)
|
||||
profileSymKey, err := crypto.NewRandomAES()
|
||||
require.NoError(t, err)
|
||||
wantProfile := &model.IdentityProfile{
|
||||
Identity: identity,
|
||||
Name: "name1",
|
||||
GlobalName: globalName,
|
||||
}
|
||||
wantData := marshalProfile(t, wantProfile, profileSymKey)
|
||||
|
||||
err = fx.identityRepoClient.IdentityRepoPut(context.Background(), identity, []*identityrepoproto.Data{
|
||||
{
|
||||
Kind: identityRepoDataKind,
|
||||
Data: wantData,
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
wg.Add(1)
|
||||
fx.identityObservers[identity] = map[string]*observer{
|
||||
"test": {
|
||||
callback: func(identity string, profile *model.IdentityProfile) {
|
||||
processedIdentities = append(processedIdentities, identity)
|
||||
wg.Done()
|
||||
},
|
||||
},
|
||||
}
|
||||
fx.identityEncryptionKeys[identity] = profileSymKey
|
||||
nsServiceResult = append(nsServiceResult, &nameserviceproto.NameByAddressResponse{
|
||||
Found: false,
|
||||
Name: "",
|
||||
})
|
||||
}
|
||||
fx.nsClient.EXPECT().BatchGetNameByAnyId(gomock.Any(), gomock.Any()).Return(&nameserviceproto.BatchNameByAddressResponse{Results: nsServiceResult}, nil)
|
||||
|
||||
// when
|
||||
fx.identityForceUpdate <- struct{}{}
|
||||
|
||||
// then
|
||||
wg.Wait()
|
||||
slices.Sort(allIdentities)
|
||||
slices.Sort(processedIdentities)
|
||||
assert.Equal(t, allIdentities, processedIdentities)
|
||||
})
|
||||
t.Run("receive more than 100 identities", func(t *testing.T) {
|
||||
// given
|
||||
testObserverPeriod := time.Duration(math.MaxInt) // make sure observing won't run by ticker
|
||||
fx := newFixture(t, testObserverPeriod)
|
||||
nsServiceResult := make([]*nameserviceproto.NameByAddressResponse, 0, 100)
|
||||
var (
|
||||
wg sync.WaitGroup
|
||||
allIdentities, processedIdentities []string
|
||||
)
|
||||
for i := 0; i < 500; i++ {
|
||||
identity := fmt.Sprintf("identity%d", i)
|
||||
allIdentities = append(allIdentities, identity)
|
||||
profileSymKey, err := crypto.NewRandomAES()
|
||||
require.NoError(t, err)
|
||||
wantProfile := &model.IdentityProfile{
|
||||
Identity: identity,
|
||||
Name: "name1",
|
||||
GlobalName: globalName,
|
||||
}
|
||||
wantData := marshalProfile(t, wantProfile, profileSymKey)
|
||||
|
||||
err = fx.identityRepoClient.IdentityRepoPut(context.Background(), identity, []*identityrepoproto.Data{
|
||||
{
|
||||
Kind: identityRepoDataKind,
|
||||
Data: wantData,
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
wg.Add(1)
|
||||
fx.identityObservers[identity] = map[string]*observer{
|
||||
"test": {
|
||||
callback: func(identity string, profile *model.IdentityProfile) {
|
||||
processedIdentities = append(processedIdentities, identity)
|
||||
wg.Done()
|
||||
},
|
||||
},
|
||||
}
|
||||
fx.identityEncryptionKeys[identity] = profileSymKey
|
||||
nsServiceResult = append(nsServiceResult, &nameserviceproto.NameByAddressResponse{
|
||||
Found: false,
|
||||
Name: "",
|
||||
})
|
||||
}
|
||||
fx.nsClient.EXPECT().BatchGetNameByAnyId(gomock.Any(), gomock.Any()).Return(&nameserviceproto.BatchNameByAddressResponse{Results: nsServiceResult}, nil)
|
||||
|
||||
// when
|
||||
fx.identityForceUpdate <- struct{}{}
|
||||
|
||||
// then
|
||||
wg.Wait()
|
||||
slices.Sort(allIdentities)
|
||||
slices.Sort(processedIdentities)
|
||||
assert.Equal(t, allIdentities, processedIdentities)
|
||||
})
|
||||
t.Run("partly receive identity from coordinator, but it failed at some point - use cache for such identities", func(t *testing.T) {
|
||||
// given
|
||||
testObserverPeriod := time.Duration(math.MaxInt) // make sure observing won't run by ticker
|
||||
fx := newFixture(t, testObserverPeriod)
|
||||
nsServiceResult := make([]*nameserviceproto.NameByAddressResponse, 0, 100)
|
||||
var (
|
||||
wg sync.WaitGroup
|
||||
allIdentities, processedIdentities []string
|
||||
)
|
||||
for i := 0; i < 500; i++ {
|
||||
identity := fmt.Sprintf("identity%d", i)
|
||||
allIdentities = append(allIdentities, identity)
|
||||
profileSymKey, err := crypto.NewRandomAES()
|
||||
require.NoError(t, err)
|
||||
wantProfile := &model.IdentityProfile{
|
||||
Identity: identity,
|
||||
Name: "name1",
|
||||
GlobalName: globalName,
|
||||
}
|
||||
wantData := marshalProfile(t, wantProfile, profileSymKey)
|
||||
|
||||
err = fx.identityRepoClient.IdentityRepoPut(context.Background(), identity, []*identityrepoproto.Data{
|
||||
{
|
||||
Kind: identityRepoDataKind,
|
||||
Data: wantData,
|
||||
},
|
||||
})
|
||||
wg.Add(1)
|
||||
fx.identityObservers[identity] = map[string]*observer{
|
||||
"test": {
|
||||
callback: func(identity string, profile *model.IdentityProfile) {
|
||||
processedIdentities = append(processedIdentities, identity)
|
||||
wg.Done()
|
||||
},
|
||||
},
|
||||
}
|
||||
fx.identityEncryptionKeys[identity] = profileSymKey
|
||||
nsServiceResult = append(nsServiceResult, &nameserviceproto.NameByAddressResponse{
|
||||
Found: false,
|
||||
Name: "",
|
||||
})
|
||||
err = badgerhelper.SetValue(fx.db, makeIdentityProfileKey(identity), wantData)
|
||||
require.NoError(t, err)
|
||||
err = badgerhelper.SetValue(fx.db, makeGlobalNameKey(identity), globalName)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
fx.nsClient.EXPECT().BatchGetNameByAnyId(gomock.Any(), gomock.Any()).Return(&nameserviceproto.BatchNameByAddressResponse{Results: nsServiceResult}, nil)
|
||||
|
||||
// when
|
||||
var called bool // call identity repo once and then fail it to simulate failure between identities batching call
|
||||
fx.coordinatorClient.setCallback(func(identities []string, kinds []string, res []*identityrepoproto.DataWithIdentity, resErr error) {
|
||||
if called {
|
||||
fx.coordinatorClient.isUnavailable = true
|
||||
} else {
|
||||
called = true
|
||||
}
|
||||
})
|
||||
fx.identityForceUpdate <- struct{}{}
|
||||
|
||||
// then
|
||||
wg.Wait()
|
||||
slices.Sort(allIdentities)
|
||||
slices.Sort(processedIdentities)
|
||||
assert.Equal(t, allIdentities, processedIdentities)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -102,7 +102,7 @@ func (mw *Middleware) ObjectSearch(cctx context.Context, req *pb.RpcObjectSearch
|
|||
|
||||
// Add dates only to the first page of search results
|
||||
if req.Offset == 0 {
|
||||
records, err = date.EnrichRecordsWithDateSuggestion(cctx, records, req, ds, getService[space.Service](mw))
|
||||
records, err = date.EnrichRecordsWithDateSuggestions(cctx, records, req, ds, getService[space.Service](mw))
|
||||
if err != nil {
|
||||
return response(pb.RpcObjectSearchResponseError_UNKNOWN_ERROR, nil, err)
|
||||
}
|
||||
|
@ -719,3 +719,21 @@ func (mw *Middleware) ObjectImportExperience(ctx context.Context, req *pb.RpcObj
|
|||
err := objCreator.CreateObjectsForExperience(ctx, req.SpaceId, req.Url, req.Title, req.IsNewSpace)
|
||||
return response(common.GetGalleryResponseCode(err), err)
|
||||
}
|
||||
|
||||
func (mw *Middleware) ObjectDateByTimestamp(ctx context.Context, req *pb.RpcObjectDateByTimestampRequest) *pb.RpcObjectDateByTimestampResponse {
|
||||
spaceService := getService[space.Service](mw)
|
||||
details, err := date.BuildDetailsFromTimestamp(ctx, spaceService, req.SpaceId, req.Timestamp)
|
||||
|
||||
if err != nil {
|
||||
return &pb.RpcObjectDateByTimestampResponse{
|
||||
Error: &pb.RpcObjectDateByTimestampResponseError{
|
||||
Code: pb.RpcObjectDateByTimestampResponseError_UNKNOWN_ERROR,
|
||||
Description: getErrorDescription(err),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
return &pb.RpcObjectDateByTimestampResponse{
|
||||
Details: details,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,8 +32,8 @@ const CName = "payments"
|
|||
var log = logging.Logger(CName).Desugar()
|
||||
|
||||
const (
|
||||
refreshIntervalSecs = 10
|
||||
timeout = 10 * time.Second
|
||||
refreshIntervalSecs = 60
|
||||
timeout = 30 * time.Second
|
||||
cacheDisableMinutes = 30
|
||||
)
|
||||
|
||||
|
|
|
@ -855,6 +855,10 @@
|
|||
- [Rpc.Object.CrossSpaceSearchUnsubscribe.Request](#anytype-Rpc-Object-CrossSpaceSearchUnsubscribe-Request)
|
||||
- [Rpc.Object.CrossSpaceSearchUnsubscribe.Response](#anytype-Rpc-Object-CrossSpaceSearchUnsubscribe-Response)
|
||||
- [Rpc.Object.CrossSpaceSearchUnsubscribe.Response.Error](#anytype-Rpc-Object-CrossSpaceSearchUnsubscribe-Response-Error)
|
||||
- [Rpc.Object.DateByTimestamp](#anytype-Rpc-Object-DateByTimestamp)
|
||||
- [Rpc.Object.DateByTimestamp.Request](#anytype-Rpc-Object-DateByTimestamp-Request)
|
||||
- [Rpc.Object.DateByTimestamp.Response](#anytype-Rpc-Object-DateByTimestamp-Response)
|
||||
- [Rpc.Object.DateByTimestamp.Response.Error](#anytype-Rpc-Object-DateByTimestamp-Response-Error)
|
||||
- [Rpc.Object.Duplicate](#anytype-Rpc-Object-Duplicate)
|
||||
- [Rpc.Object.Duplicate.Request](#anytype-Rpc-Object-Duplicate-Request)
|
||||
- [Rpc.Object.Duplicate.Response](#anytype-Rpc-Object-Duplicate-Response)
|
||||
|
@ -1444,6 +1448,7 @@
|
|||
- [Rpc.Object.CreateSet.Response.Error.Code](#anytype-Rpc-Object-CreateSet-Response-Error-Code)
|
||||
- [Rpc.Object.CrossSpaceSearchSubscribe.Response.Error.Code](#anytype-Rpc-Object-CrossSpaceSearchSubscribe-Response-Error-Code)
|
||||
- [Rpc.Object.CrossSpaceSearchUnsubscribe.Response.Error.Code](#anytype-Rpc-Object-CrossSpaceSearchUnsubscribe-Response-Error-Code)
|
||||
- [Rpc.Object.DateByTimestamp.Response.Error.Code](#anytype-Rpc-Object-DateByTimestamp-Response-Error-Code)
|
||||
- [Rpc.Object.Duplicate.Response.Error.Code](#anytype-Rpc-Object-Duplicate-Response-Error-Code)
|
||||
- [Rpc.Object.Graph.Edge.Type](#anytype-Rpc-Object-Graph-Edge-Type)
|
||||
- [Rpc.Object.Graph.Response.Error.Code](#anytype-Rpc-Object-Graph-Response-Error-Code)
|
||||
|
@ -2050,6 +2055,7 @@
|
|||
| ObjectImportNotionValidateToken | [Rpc.Object.Import.Notion.ValidateToken.Request](#anytype-Rpc-Object-Import-Notion-ValidateToken-Request) | [Rpc.Object.Import.Notion.ValidateToken.Response](#anytype-Rpc-Object-Import-Notion-ValidateToken-Response) | |
|
||||
| ObjectImportUseCase | [Rpc.Object.ImportUseCase.Request](#anytype-Rpc-Object-ImportUseCase-Request) | [Rpc.Object.ImportUseCase.Response](#anytype-Rpc-Object-ImportUseCase-Response) | |
|
||||
| ObjectImportExperience | [Rpc.Object.ImportExperience.Request](#anytype-Rpc-Object-ImportExperience-Request) | [Rpc.Object.ImportExperience.Response](#anytype-Rpc-Object-ImportExperience-Response) | |
|
||||
| ObjectDateByTimestamp | [Rpc.Object.DateByTimestamp.Request](#anytype-Rpc-Object-DateByTimestamp-Request) | [Rpc.Object.DateByTimestamp.Response](#anytype-Rpc-Object-DateByTimestamp-Response) | |
|
||||
| ObjectCollectionAdd | [Rpc.ObjectCollection.Add.Request](#anytype-Rpc-ObjectCollection-Add-Request) | [Rpc.ObjectCollection.Add.Response](#anytype-Rpc-ObjectCollection-Add-Response) | Collections *** |
|
||||
| ObjectCollectionRemove | [Rpc.ObjectCollection.Remove.Request](#anytype-Rpc-ObjectCollection-Remove-Request) | [Rpc.ObjectCollection.Remove.Response](#anytype-Rpc-ObjectCollection-Remove-Response) | |
|
||||
| ObjectCollectionSort | [Rpc.ObjectCollection.Sort.Request](#anytype-Rpc-ObjectCollection-Sort-Request) | [Rpc.ObjectCollection.Sort.Response](#anytype-Rpc-ObjectCollection-Sort-Response) | |
|
||||
|
@ -14587,6 +14593,64 @@ Get the info for page alongside with info for all inbound and outbound links fro
|
|||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-DateByTimestamp"></a>
|
||||
|
||||
### Rpc.Object.DateByTimestamp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-DateByTimestamp-Request"></a>
|
||||
|
||||
### Rpc.Object.DateByTimestamp.Request
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| spaceId | [string](#string) | | |
|
||||
| timestamp | [int64](#int64) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-DateByTimestamp-Response"></a>
|
||||
|
||||
### Rpc.Object.DateByTimestamp.Response
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| error | [Rpc.Object.DateByTimestamp.Response.Error](#anytype-Rpc-Object-DateByTimestamp-Response-Error) | | |
|
||||
| details | [google.protobuf.Struct](#google-protobuf-Struct) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-DateByTimestamp-Response-Error"></a>
|
||||
|
||||
### Rpc.Object.DateByTimestamp.Response.Error
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| code | [Rpc.Object.DateByTimestamp.Response.Error.Code](#anytype-Rpc-Object-DateByTimestamp-Response-Error-Code) | | |
|
||||
| description | [string](#string) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-Duplicate"></a>
|
||||
|
||||
### Rpc.Object.Duplicate
|
||||
|
@ -22978,6 +23042,19 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er
|
|||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-DateByTimestamp-Response-Error-Code"></a>
|
||||
|
||||
### Rpc.Object.DateByTimestamp.Response.Error.Code
|
||||
|
||||
|
||||
| Name | Number | Description |
|
||||
| ---- | ------ | ----------- |
|
||||
| NULL | 0 | |
|
||||
| UNKNOWN_ERROR | 1 | |
|
||||
| BAD_INPUT | 2 | |
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Object-Duplicate-Response-Error-Code"></a>
|
||||
|
||||
### Rpc.Object.Duplicate.Response.Error.Code
|
||||
|
@ -23153,10 +23230,6 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er
|
|||
| ---- | ------ | ----------- |
|
||||
| NONE | 0 | |
|
||||
| GET_STARTED | 1 | |
|
||||
| PERSONAL_PROJECTS | 2 | |
|
||||
| KNOWLEDGE_BASE | 3 | |
|
||||
| NOTES_DIARY | 4 | |
|
||||
| STRATEGIC_WRITING | 5 | |
|
||||
| EMPTY | 6 | |
|
||||
|
||||
|
||||
|
|
8
go.mod
8
go.mod
|
@ -1,13 +1,13 @@
|
|||
module github.com/anyproto/anytype-heart
|
||||
|
||||
go 1.22.9
|
||||
go 1.23.2
|
||||
|
||||
require (
|
||||
github.com/JohannesKaufmann/html-to-markdown v1.4.0
|
||||
github.com/PuerkitoBio/goquery v1.9.0
|
||||
github.com/PuerkitoBio/goquery v1.10.0
|
||||
github.com/VividCortex/ewma v1.2.0
|
||||
github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786
|
||||
github.com/anyproto/any-store v0.1.2
|
||||
github.com/anyproto/any-store v0.1.3
|
||||
github.com/anyproto/any-sync v0.5.18
|
||||
github.com/anyproto/go-chash v0.1.0
|
||||
github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438
|
||||
|
@ -90,7 +90,7 @@ require (
|
|||
github.com/stretchr/testify v1.10.0
|
||||
github.com/uber/jaeger-client-go v2.30.0+incompatible
|
||||
github.com/valyala/fastjson v1.6.4
|
||||
github.com/vektra/mockery/v2 v2.46.0
|
||||
github.com/vektra/mockery/v2 v2.47.0
|
||||
github.com/xeipuuv/gojsonschema v1.2.0
|
||||
github.com/yuin/goldmark v1.7.8
|
||||
github.com/zeebo/blake3 v0.2.4
|
||||
|
|
12
go.sum
12
go.sum
|
@ -52,8 +52,8 @@ github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuN
|
|||
github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
|
||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||
github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ=
|
||||
github.com/PuerkitoBio/goquery v1.9.0 h1:zgjKkdpRY9T97Q5DCtcXwfqkcylSFIVCocZmn2huTp8=
|
||||
github.com/PuerkitoBio/goquery v1.9.0/go.mod h1:cW1n6TmIMDoORQU5IU/P1T3tGFunOeXEpGP2WHRwkbY=
|
||||
github.com/PuerkitoBio/goquery v1.10.0 h1:6fiXdLuUvYs2OJSvNRqlNPoBm6YABE226xrbavY5Wv4=
|
||||
github.com/PuerkitoBio/goquery v1.10.0/go.mod h1:TjZZl68Q3eGHNBA8CWaxAN7rOU1EbDz3CWuolcO5Yu4=
|
||||
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
|
||||
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
|
||||
github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow=
|
||||
|
@ -76,8 +76,8 @@ github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h
|
|||
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.1.2 h1:/WKsPOQxK1jOHS7efTIosnyJTvy0O3gYg/DSnt41DT0=
|
||||
github.com/anyproto/any-store v0.1.2/go.mod h1:SDlN2AzysAfs8CDd28rrs6boUUtf5H/ydCvwmj+EbsE=
|
||||
github.com/anyproto/any-store v0.1.3 h1:onWLP8tuWiUvYOyV3DoRODscTxAiGEjwQPm+NMxeq3M=
|
||||
github.com/anyproto/any-store v0.1.3/go.mod h1:6/0OUKgSMWF/vYGoGYzQOl2CII5OdiuXbQlGDXYcNYc=
|
||||
github.com/anyproto/any-sync v0.5.18 h1:isS9AXOs5b6kSM/fbANEvOxn8JJrSuaKKlrUWNLdTS4=
|
||||
github.com/anyproto/any-sync v0.5.18/go.mod h1:K53/whh/9tmGbXrkPS59XyqWU3SaxhsX9g6VIYnBIlU=
|
||||
github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc=
|
||||
|
@ -995,8 +995,8 @@ github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX
|
|||
github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
||||
github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ=
|
||||
github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY=
|
||||
github.com/vektra/mockery/v2 v2.46.0 h1:DKIFj6hAPGwmOYiWfWzdsQtBgU8ozPXo3Bwbmf+Ku80=
|
||||
github.com/vektra/mockery/v2 v2.46.0/go.mod h1:XNTE9RIu3deGAGQRVjP1VZxGpQNm0YedZx4oDs3prr8=
|
||||
github.com/vektra/mockery/v2 v2.47.0 h1:/OgQNNsUxwKCC8rt6cRXxvfj7/f9mYrCbX4m/tcZpFQ=
|
||||
github.com/vektra/mockery/v2 v2.47.0/go.mod h1:xO2DeYemEPC2tCzIZ+a1tifZ/7Laf/Chxg3vlc+oDsI=
|
||||
github.com/warpfork/go-testmark v0.12.1 h1:rMgCpJfwy1sJ50x0M0NgyphxYYPMOODIJHhsXyEHU0s=
|
||||
github.com/warpfork/go-testmark v0.12.1/go.mod h1:kHwy7wfvGSPh1rQJYKayD4AbtNaeyZdcGi9tNJTaa5Y=
|
||||
github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0 h1:GDDkbFiaK8jsSDJfjId/PEGEShv6ugrt4kYsC5UIDaQ=
|
||||
|
|
3230
pb/commands.pb.go
3230
pb/commands.pb.go
File diff suppressed because it is too large
Load diff
|
@ -2776,10 +2776,6 @@ message Rpc {
|
|||
enum UseCase {
|
||||
NONE = 0;
|
||||
GET_STARTED = 1;
|
||||
PERSONAL_PROJECTS = 2;
|
||||
KNOWLEDGE_BASE = 3;
|
||||
NOTES_DIARY = 4;
|
||||
STRATEGIC_WRITING = 5;
|
||||
EMPTY = 6;
|
||||
}
|
||||
}
|
||||
|
@ -2826,6 +2822,29 @@ message Rpc {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
message DateByTimestamp {
|
||||
message Request {
|
||||
string spaceId = 1;
|
||||
int64 timestamp = 2;
|
||||
}
|
||||
|
||||
message Response {
|
||||
Error error = 1;
|
||||
google.protobuf.Struct details = 2;
|
||||
|
||||
message Error {
|
||||
Code code = 1;
|
||||
string description = 2;
|
||||
|
||||
enum Code {
|
||||
NULL = 0;
|
||||
UNKNOWN_ERROR = 1;
|
||||
BAD_INPUT = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
message ObjectCollection {
|
||||
|
|
|
@ -117,6 +117,7 @@ service ClientCommands {
|
|||
rpc ObjectImportNotionValidateToken (anytype.Rpc.Object.Import.Notion.ValidateToken.Request) returns (anytype.Rpc.Object.Import.Notion.ValidateToken.Response);
|
||||
rpc ObjectImportUseCase (anytype.Rpc.Object.ImportUseCase.Request) returns (anytype.Rpc.Object.ImportUseCase.Response);
|
||||
rpc ObjectImportExperience (anytype.Rpc.Object.ImportExperience.Request) returns (anytype.Rpc.Object.ImportExperience.Response);
|
||||
rpc ObjectDateByTimestamp (anytype.Rpc.Object.DateByTimestamp.Request) returns (anytype.Rpc.Object.DateByTimestamp.Response);
|
||||
|
||||
// Collections
|
||||
// ***
|
||||
|
|
|
@ -26,338 +26,339 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
|
|||
func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) }
|
||||
|
||||
var fileDescriptor_93a29dc403579097 = []byte{
|
||||
// 5285 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x9d, 0x5f, 0x6f, 0x24, 0x49,
|
||||
0x52, 0xc0, 0xaf, 0x5f, 0x58, 0xa8, 0xe3, 0x16, 0xe8, 0x85, 0x65, 0x6f, 0xb9, 0x9b, 0x99, 0x9d,
|
||||
0x9d, 0xb1, 0x3d, 0x63, 0xbb, 0x3d, 0x3b, 0xb3, 0xff, 0xb8, 0x43, 0x02, 0x8f, 0x3d, 0xf6, 0x9a,
|
||||
0xb3, 0x3d, 0xc6, 0x6d, 0xcf, 0x48, 0x2b, 0x21, 0x51, 0xee, 0x4a, 0xb7, 0x0b, 0x57, 0x57, 0xd6,
|
||||
0x55, 0x65, 0xb7, 0xa7, 0x0f, 0x81, 0x38, 0x81, 0x40, 0x20, 0x10, 0x27, 0xfe, 0x89, 0x37, 0x24,
|
||||
0x3e, 0x01, 0x1f, 0x83, 0xc7, 0x7b, 0xe4, 0x11, 0xed, 0xbe, 0xf1, 0x29, 0x50, 0x65, 0x66, 0xe5,
|
||||
0x9f, 0xa8, 0x88, 0xac, 0xf2, 0xf2, 0x34, 0xa3, 0x8e, 0x5f, 0x44, 0x64, 0x56, 0x66, 0x46, 0x46,
|
||||
0x66, 0x65, 0xa5, 0xa3, 0xbb, 0xc5, 0xc5, 0x56, 0x51, 0x72, 0xc1, 0xab, 0xad, 0x8a, 0x95, 0x8b,
|
||||
0x74, 0xc2, 0x9a, 0x7f, 0x47, 0xf2, 0xe7, 0xe1, 0x5b, 0x71, 0xbe, 0x14, 0xcb, 0x82, 0xbd, 0xff,
|
||||
0x9e, 0x25, 0x27, 0x7c, 0x36, 0x8b, 0xf3, 0xa4, 0x52, 0xc8, 0xfb, 0xef, 0x5a, 0x09, 0x5b, 0xb0,
|
||||
0x5c, 0xe8, 0xdf, 0x9f, 0xfe, 0xf4, 0x7f, 0x07, 0xd1, 0xdb, 0x3b, 0x59, 0xca, 0x72, 0xb1, 0xa3,
|
||||
0x35, 0x86, 0x5f, 0x46, 0xdf, 0xd9, 0x2e, 0x8a, 0x7d, 0x26, 0x5e, 0xb1, 0xb2, 0x4a, 0x79, 0x3e,
|
||||
0xfc, 0x70, 0xa4, 0x1d, 0x8c, 0x4e, 0x8b, 0xc9, 0x68, 0xbb, 0x28, 0x46, 0x56, 0x38, 0x3a, 0x65,
|
||||
0x3f, 0x9e, 0xb3, 0x4a, 0xbc, 0xff, 0x20, 0x0c, 0x55, 0x05, 0xcf, 0x2b, 0x36, 0xbc, 0x8c, 0x7e,
|
||||
0x6d, 0xbb, 0x28, 0xc6, 0x4c, 0xec, 0xb2, 0xba, 0x02, 0x63, 0x11, 0x0b, 0x36, 0x5c, 0x6d, 0xa9,
|
||||
0xfa, 0x80, 0xf1, 0xb1, 0xd6, 0x0d, 0x6a, 0x3f, 0x67, 0xd1, 0xb7, 0x6b, 0x3f, 0x57, 0x73, 0x91,
|
||||
0xf0, 0x9b, 0x7c, 0xf8, 0x41, 0x5b, 0x51, 0x8b, 0x8c, 0xed, 0xfb, 0x21, 0x44, 0x5b, 0x7d, 0x1d,
|
||||
0xfd, 0xf2, 0xeb, 0x38, 0xcb, 0x98, 0xd8, 0x29, 0x59, 0x5d, 0x70, 0x5f, 0x47, 0x89, 0x46, 0x4a,
|
||||
0x66, 0xec, 0x7e, 0x18, 0x64, 0xb4, 0xe1, 0x2f, 0xa3, 0xef, 0x28, 0xc9, 0x29, 0x9b, 0xf0, 0x05,
|
||||
0x2b, 0x87, 0xa8, 0x96, 0x16, 0x12, 0x8f, 0xbc, 0x05, 0x41, 0xdb, 0x3b, 0x3c, 0x5f, 0xb0, 0x52,
|
||||
0xe0, 0xb6, 0xb5, 0x30, 0x6c, 0xdb, 0x42, 0xda, 0xf6, 0xdf, 0x0c, 0xa2, 0xef, 0x6d, 0x4f, 0x26,
|
||||
0x7c, 0x9e, 0x8b, 0x43, 0x3e, 0x89, 0xb3, 0xc3, 0x34, 0xbf, 0x3e, 0x66, 0x37, 0x3b, 0x57, 0x35,
|
||||
0x9f, 0x4f, 0xd9, 0xf0, 0x99, 0xff, 0x54, 0x15, 0x3a, 0x32, 0xec, 0xc8, 0x85, 0x8d, 0xef, 0x8f,
|
||||
0x6f, 0xa7, 0xa4, 0xcb, 0xf2, 0x0f, 0x83, 0xe8, 0x0e, 0x2c, 0xcb, 0x98, 0x67, 0x0b, 0x66, 0x4b,
|
||||
0xf3, 0x49, 0x87, 0x61, 0x1f, 0x37, 0xe5, 0xf9, 0xf4, 0xb6, 0x6a, 0xba, 0x44, 0x59, 0xf4, 0x8e,
|
||||
0xdb, 0x5d, 0xc6, 0xac, 0x92, 0xc3, 0xe9, 0x11, 0xdd, 0x23, 0x34, 0x62, 0x3c, 0x3f, 0xee, 0x83,
|
||||
0x6a, 0x6f, 0x69, 0x34, 0xd4, 0xde, 0x32, 0x5e, 0x19, 0x67, 0x6b, 0xa8, 0x05, 0x87, 0x30, 0xbe,
|
||||
0x1e, 0xf5, 0x20, 0xb5, 0xab, 0x3f, 0x8a, 0x7e, 0xe5, 0x35, 0x2f, 0xaf, 0xab, 0x22, 0x9e, 0x30,
|
||||
0x3d, 0x14, 0x1e, 0xfa, 0xda, 0x8d, 0x14, 0x8e, 0x86, 0x95, 0x2e, 0xcc, 0xe9, 0xb4, 0x8d, 0xf0,
|
||||
0x65, 0xc1, 0x60, 0x0c, 0xb2, 0x8a, 0xb5, 0x90, 0xea, 0xb4, 0x10, 0xd2, 0xb6, 0xaf, 0xa3, 0xa1,
|
||||
0xb5, 0x7d, 0xf1, 0xc7, 0x6c, 0x22, 0xb6, 0x93, 0x04, 0xb6, 0x8a, 0xd5, 0x95, 0xc4, 0x68, 0x3b,
|
||||
0x49, 0xa8, 0x56, 0xc1, 0x51, 0xed, 0xec, 0x26, 0x7a, 0x17, 0x38, 0x3b, 0x4c, 0x2b, 0xe9, 0x70,
|
||||
0x33, 0x6c, 0x45, 0x63, 0xc6, 0xe9, 0xa8, 0x2f, 0xae, 0x1d, 0xff, 0xf9, 0x20, 0xfa, 0x2e, 0xe2,
|
||||
0xf9, 0x94, 0xcd, 0xf8, 0x82, 0x0d, 0x9f, 0x74, 0x5b, 0x53, 0xa4, 0xf1, 0xff, 0xd1, 0x2d, 0x34,
|
||||
0x90, 0x6e, 0x32, 0x66, 0x19, 0x9b, 0x08, 0xb2, 0x9b, 0x28, 0x71, 0x67, 0x37, 0x31, 0x98, 0x33,
|
||||
0xc2, 0x1a, 0xe1, 0x3e, 0x13, 0x3b, 0xf3, 0xb2, 0x64, 0xb9, 0x20, 0xdb, 0xd2, 0x22, 0x9d, 0x6d,
|
||||
0xe9, 0xa1, 0x48, 0x7d, 0xf6, 0x99, 0xd8, 0xce, 0x32, 0xb2, 0x3e, 0x4a, 0xdc, 0x59, 0x1f, 0x83,
|
||||
0x69, 0x0f, 0x93, 0xe8, 0x57, 0x9d, 0x27, 0x26, 0x0e, 0xf2, 0x4b, 0x3e, 0xa4, 0x9f, 0x85, 0x94,
|
||||
0x1b, 0x1f, 0xab, 0x9d, 0x1c, 0x52, 0x8d, 0x17, 0x6f, 0x0a, 0x5e, 0xd2, 0xcd, 0xa2, 0xc4, 0x9d,
|
||||
0xd5, 0x30, 0x98, 0xf6, 0xf0, 0x87, 0xd1, 0xdb, 0x3a, 0x4a, 0x36, 0xf3, 0xd9, 0x03, 0x34, 0x84,
|
||||
0xc2, 0x09, 0xed, 0x61, 0x07, 0x65, 0x83, 0x83, 0x96, 0xe9, 0xe0, 0xf3, 0x21, 0xaa, 0x07, 0x42,
|
||||
0xcf, 0x83, 0x30, 0xd4, 0xb2, 0xbd, 0xcb, 0x32, 0x46, 0xda, 0x56, 0xc2, 0x0e, 0xdb, 0x06, 0xd2,
|
||||
0xb6, 0xcb, 0xe8, 0x37, 0xcc, 0x63, 0xa9, 0xe7, 0x51, 0x29, 0xaf, 0x83, 0xf4, 0x3a, 0x51, 0x6f,
|
||||
0x17, 0x32, 0xbe, 0x36, 0xfa, 0xc1, 0xad, 0xfa, 0xe8, 0x11, 0x88, 0xd7, 0x07, 0x8c, 0xbf, 0x07,
|
||||
0x61, 0x48, 0xdb, 0xfe, 0xdb, 0x41, 0xf4, 0x7d, 0x2d, 0x7b, 0x91, 0xc7, 0x17, 0x19, 0x93, 0x53,
|
||||
0xe2, 0x31, 0x13, 0x37, 0xbc, 0xbc, 0x1e, 0x2f, 0xf3, 0x09, 0x31, 0xfd, 0xe3, 0x70, 0xc7, 0xf4,
|
||||
0x4f, 0x2a, 0x39, 0x19, 0x9f, 0xae, 0xa8, 0xe0, 0x05, 0xcc, 0xf8, 0x9a, 0x1a, 0x08, 0x5e, 0x50,
|
||||
0x19, 0x9f, 0x8f, 0xb4, 0xac, 0x1e, 0xd5, 0x61, 0x13, 0xb7, 0x7a, 0xe4, 0xc6, 0xc9, 0xfb, 0x21,
|
||||
0xc4, 0x86, 0xad, 0xa6, 0x03, 0xf3, 0xfc, 0x32, 0x9d, 0x9e, 0x17, 0x49, 0xdd, 0x8d, 0x1f, 0xe1,
|
||||
0x3d, 0xd4, 0x41, 0x88, 0xb0, 0x45, 0xa0, 0xda, 0xdb, 0xdf, 0xdb, 0xc4, 0x48, 0x0f, 0xa5, 0xbd,
|
||||
0x92, 0xcf, 0x0e, 0xd9, 0x34, 0x9e, 0x2c, 0xf5, 0xf8, 0xff, 0x38, 0x34, 0xf0, 0x20, 0x6d, 0x0a,
|
||||
0xf1, 0xc9, 0x2d, 0xb5, 0x74, 0x79, 0xfe, 0x7d, 0x10, 0x3d, 0x68, 0xaa, 0x7f, 0x15, 0xe7, 0x53,
|
||||
0xa6, 0xdb, 0x53, 0x95, 0x7e, 0x3b, 0x4f, 0x4e, 0x59, 0x25, 0xe2, 0x52, 0x0c, 0x7f, 0x80, 0x57,
|
||||
0x32, 0xa4, 0x63, 0xca, 0xf6, 0xc3, 0x6f, 0xa4, 0x6b, 0x5b, 0x7d, 0x5c, 0x07, 0x36, 0x1d, 0x02,
|
||||
0xfc, 0x56, 0x97, 0x12, 0x18, 0x00, 0xee, 0x87, 0x10, 0xdb, 0xea, 0x52, 0x70, 0x90, 0x2f, 0x52,
|
||||
0xc1, 0xf6, 0x59, 0xce, 0xca, 0x76, 0xab, 0x2b, 0x55, 0x1f, 0x21, 0x5a, 0x9d, 0x40, 0x6d, 0xb0,
|
||||
0xf1, 0xbc, 0x99, 0xc9, 0x71, 0x3d, 0x60, 0xa4, 0x35, 0x3d, 0x6e, 0xf4, 0x83, 0xed, 0xea, 0xce,
|
||||
0xf1, 0x79, 0xca, 0x16, 0xfc, 0x1a, 0xae, 0xee, 0x5c, 0x13, 0x0a, 0x20, 0x56, 0x77, 0x28, 0x68,
|
||||
0x67, 0x30, 0xc7, 0xcf, 0xab, 0x94, 0xdd, 0x80, 0x19, 0xcc, 0x55, 0xae, 0xc5, 0xc4, 0x0c, 0x86,
|
||||
0x60, 0xda, 0xc3, 0x71, 0xf4, 0x4b, 0x52, 0xf8, 0xfb, 0x3c, 0xcd, 0x87, 0x77, 0x11, 0xa5, 0x5a,
|
||||
0x60, 0xac, 0xde, 0xa3, 0x01, 0x50, 0xe2, 0xfa, 0xd7, 0x9d, 0x38, 0x9f, 0xb0, 0x0c, 0x2d, 0xb1,
|
||||
0x15, 0x07, 0x4b, 0xec, 0x61, 0x36, 0x75, 0x90, 0xc2, 0x3a, 0x7e, 0x8d, 0xaf, 0xe2, 0x32, 0xcd,
|
||||
0xa7, 0x43, 0x4c, 0xd7, 0x91, 0x13, 0xa9, 0x03, 0xc6, 0x81, 0x2e, 0xac, 0x15, 0xb7, 0x8b, 0xa2,
|
||||
0xac, 0xc3, 0x22, 0xd6, 0x85, 0x7d, 0x24, 0xd8, 0x85, 0x5b, 0x28, 0xee, 0x6d, 0x97, 0x4d, 0xb2,
|
||||
0x34, 0x0f, 0x7a, 0xd3, 0x48, 0x1f, 0x6f, 0x16, 0x05, 0x9d, 0xf7, 0x90, 0xc5, 0x0b, 0xd6, 0xd4,
|
||||
0x0c, 0x7b, 0x32, 0x2e, 0x10, 0xec, 0xbc, 0x00, 0xb4, 0xeb, 0x34, 0x29, 0x3e, 0x8a, 0xaf, 0x59,
|
||||
0xfd, 0x80, 0x59, 0x3d, 0xaf, 0x0d, 0x31, 0x7d, 0x8f, 0x20, 0xd6, 0x69, 0x38, 0xa9, 0x5d, 0xcd,
|
||||
0xa3, 0x77, 0xa5, 0xfc, 0x24, 0x2e, 0x45, 0x3a, 0x49, 0x8b, 0x38, 0x6f, 0xf2, 0x7f, 0x6c, 0x5c,
|
||||
0xb7, 0x28, 0xe3, 0x72, 0xb3, 0x27, 0xad, 0xdd, 0xfe, 0xeb, 0x20, 0xfa, 0x00, 0xfa, 0x3d, 0x61,
|
||||
0xe5, 0x2c, 0x95, 0xcb, 0xc8, 0x4a, 0x05, 0xe1, 0xe1, 0x67, 0x61, 0xa3, 0x2d, 0x05, 0x53, 0x9a,
|
||||
0xcf, 0x6f, 0xaf, 0xa8, 0x0b, 0xf6, 0x07, 0x51, 0xa4, 0x96, 0x2b, 0x72, 0x49, 0xe9, 0x8f, 0x5a,
|
||||
0xbd, 0x8e, 0xf1, 0xd6, 0x93, 0x1f, 0x04, 0x08, 0x3b, 0x55, 0xa8, 0xdf, 0xe5, 0x4a, 0x79, 0x88,
|
||||
0x6a, 0x48, 0x11, 0x31, 0x55, 0x00, 0x04, 0x16, 0x74, 0x7c, 0xc5, 0x6f, 0xf0, 0x82, 0xd6, 0x92,
|
||||
0x70, 0x41, 0x35, 0x61, 0xf7, 0xae, 0x74, 0x41, 0xb1, 0xbd, 0xab, 0xa6, 0x18, 0xa1, 0xbd, 0x2b,
|
||||
0xc8, 0x68, 0xc3, 0x3c, 0xfa, 0x75, 0xd7, 0xf0, 0x73, 0xce, 0xaf, 0x67, 0x71, 0x79, 0x3d, 0x7c,
|
||||
0x4c, 0x2b, 0x37, 0x8c, 0x71, 0xb4, 0xde, 0x8b, 0xb5, 0x61, 0xc1, 0x75, 0x58, 0x27, 0x1a, 0xe7,
|
||||
0x65, 0x06, 0xc2, 0x82, 0x67, 0x43, 0x23, 0x44, 0x58, 0x20, 0x50, 0x1b, 0xb9, 0x5d, 0x6f, 0x63,
|
||||
0x06, 0x57, 0x4b, 0x9e, 0xfa, 0x98, 0x51, 0xab, 0x25, 0x04, 0x83, 0x5d, 0x68, 0xbf, 0x8c, 0x8b,
|
||||
0x2b, 0xbc, 0x0b, 0x49, 0x51, 0xb8, 0x0b, 0x35, 0x08, 0x6c, 0xef, 0x31, 0x8b, 0xcb, 0xc9, 0x15,
|
||||
0xde, 0xde, 0x4a, 0x16, 0x6e, 0x6f, 0xc3, 0xc0, 0xf6, 0x56, 0x82, 0xd7, 0xa9, 0xb8, 0x3a, 0x62,
|
||||
0x22, 0xc6, 0xdb, 0xdb, 0x67, 0xc2, 0xed, 0xdd, 0x62, 0x6d, 0x26, 0xe3, 0x3a, 0x1c, 0xcf, 0x2f,
|
||||
0xaa, 0x49, 0x99, 0x5e, 0xb0, 0x61, 0xc0, 0x8a, 0x81, 0x88, 0x4c, 0x86, 0x84, 0xb5, 0xcf, 0x9f,
|
||||
0x0d, 0xa2, 0xbb, 0x4d, 0xb3, 0xf3, 0xaa, 0x52, 0x33, 0x2b, 0x70, 0xff, 0x09, 0xde, 0xbe, 0x04,
|
||||
0x4e, 0xec, 0x26, 0xf6, 0x50, 0x73, 0xa2, 0x2a, 0x5e, 0xa4, 0xf3, 0xbc, 0x32, 0x85, 0xfa, 0xac,
|
||||
0x8f, 0x75, 0x47, 0x81, 0x88, 0xaa, 0xbd, 0x14, 0xed, 0x84, 0xa6, 0xdb, 0xa7, 0x91, 0x1d, 0x24,
|
||||
0x15, 0x98, 0xd0, 0x9a, 0xe7, 0xed, 0x10, 0xc4, 0x84, 0x86, 0x93, 0xb0, 0x2b, 0xec, 0x97, 0x7c,
|
||||
0x5e, 0x54, 0x1d, 0x5d, 0x01, 0x40, 0xe1, 0xae, 0xd0, 0x86, 0xb5, 0xcf, 0x37, 0xd1, 0x6f, 0xba,
|
||||
0xdd, 0xcf, 0x7d, 0xd8, 0x9b, 0x74, 0x9f, 0xc2, 0x1e, 0xf1, 0xa8, 0x2f, 0x6e, 0x53, 0xba, 0xc6,
|
||||
0xb3, 0xd8, 0x65, 0x22, 0x4e, 0xb3, 0x6a, 0xb8, 0x82, 0xdb, 0x68, 0xe4, 0x44, 0x4a, 0x87, 0x71,
|
||||
0x30, 0xbe, 0xed, 0xce, 0x8b, 0x2c, 0x9d, 0xb4, 0xf7, 0x72, 0xb5, 0xae, 0x11, 0x87, 0xe3, 0x9b,
|
||||
0x8b, 0xc1, 0x78, 0x3d, 0x66, 0x42, 0xfd, 0xe7, 0x6c, 0x59, 0x30, 0x3c, 0x5e, 0x7b, 0x48, 0x38,
|
||||
0x5e, 0x43, 0x14, 0xd6, 0x67, 0xcc, 0xc4, 0x61, 0xbc, 0xe4, 0x73, 0x22, 0x5e, 0x1b, 0x71, 0xb8,
|
||||
0x3e, 0x2e, 0x66, 0xb3, 0x2a, 0xe3, 0xe1, 0x20, 0x17, 0xac, 0xcc, 0xe3, 0x6c, 0x2f, 0x8b, 0xa7,
|
||||
0xd5, 0x90, 0x88, 0x31, 0x3e, 0x45, 0x64, 0x55, 0x34, 0x8d, 0x3c, 0xc6, 0x83, 0x6a, 0x2f, 0x5e,
|
||||
0xf0, 0x32, 0x15, 0xf4, 0x63, 0xb4, 0x48, 0xe7, 0x63, 0xf4, 0x50, 0xd4, 0xdb, 0x76, 0x39, 0xb9,
|
||||
0x4a, 0x17, 0x2c, 0x09, 0x78, 0x6b, 0x90, 0x1e, 0xde, 0x1c, 0x14, 0x69, 0xb4, 0x31, 0x9f, 0x97,
|
||||
0x13, 0x46, 0x36, 0x9a, 0x12, 0x77, 0x36, 0x9a, 0xc1, 0xb4, 0x87, 0xbf, 0x1c, 0x44, 0xbf, 0xa5,
|
||||
0xa4, 0xee, 0x06, 0xeb, 0x6e, 0x5c, 0x5d, 0x5d, 0xf0, 0xb8, 0x4c, 0x86, 0x1f, 0x61, 0x76, 0x50,
|
||||
0xd4, 0xb8, 0x7e, 0x7a, 0x1b, 0x15, 0xf8, 0x58, 0x0f, 0xd3, 0xca, 0x19, 0x71, 0xe8, 0x63, 0xf5,
|
||||
0x90, 0xf0, 0x63, 0x85, 0x28, 0x0c, 0x20, 0x52, 0xae, 0x36, 0x33, 0x56, 0x48, 0x7d, 0x7f, 0x47,
|
||||
0x63, 0xb5, 0x93, 0x83, 0xf1, 0xb1, 0x16, 0xfa, 0xbd, 0x65, 0x93, 0xb2, 0x81, 0xf7, 0x98, 0x51,
|
||||
0x5f, 0x9c, 0xf4, 0x6c, 0x46, 0x45, 0xd8, 0x73, 0x6b, 0x64, 0x8c, 0xfa, 0xe2, 0x84, 0x67, 0x27,
|
||||
0xac, 0x85, 0x3c, 0x23, 0xa1, 0x6d, 0xd4, 0x17, 0x87, 0xd9, 0x97, 0x66, 0x9a, 0x79, 0xe1, 0x71,
|
||||
0xc0, 0x0e, 0x9c, 0x1b, 0xd6, 0x7b, 0xb1, 0xda, 0xe1, 0x5f, 0x0f, 0xa2, 0xef, 0x59, 0x8f, 0x47,
|
||||
0x3c, 0x49, 0x2f, 0x97, 0x0a, 0x7a, 0x15, 0x67, 0x73, 0x56, 0x0d, 0x9f, 0x52, 0xd6, 0xda, 0xac,
|
||||
0x29, 0xc1, 0xb3, 0x5b, 0xe9, 0xc0, 0xb1, 0xb3, 0x5d, 0x14, 0xd9, 0xf2, 0x8c, 0xcd, 0x8a, 0x8c,
|
||||
0x1c, 0x3b, 0x1e, 0x12, 0x1e, 0x3b, 0x10, 0x85, 0x59, 0xf9, 0x19, 0xaf, 0x73, 0x7e, 0x34, 0x2b,
|
||||
0x97, 0xa2, 0x70, 0x56, 0xde, 0x20, 0x30, 0x57, 0x3a, 0xe3, 0x3b, 0x3c, 0xcb, 0xd8, 0x44, 0xb4,
|
||||
0x5f, 0xd2, 0x1a, 0x4d, 0x4b, 0x84, 0x73, 0x25, 0x40, 0xda, 0xfd, 0x8c, 0x66, 0x0d, 0x19, 0x97,
|
||||
0xec, 0xf9, 0xf2, 0x30, 0xcd, 0xaf, 0x87, 0x78, 0x5a, 0x60, 0x01, 0x62, 0x3f, 0x03, 0x05, 0xe1,
|
||||
0x5a, 0xf5, 0x3c, 0x4f, 0x38, 0xbe, 0x56, 0xad, 0x25, 0xe1, 0xb5, 0xaa, 0x26, 0xa0, 0xc9, 0x53,
|
||||
0x46, 0x99, 0xac, 0x25, 0x61, 0x93, 0x9a, 0xc0, 0x42, 0xa1, 0xde, 0xf5, 0x26, 0x43, 0x21, 0xd8,
|
||||
0xe7, 0x5e, 0xed, 0xe4, 0x60, 0x0f, 0x6d, 0x16, 0xad, 0x7b, 0x4c, 0x4c, 0xae, 0xf0, 0x1e, 0xea,
|
||||
0x21, 0xe1, 0x1e, 0x0a, 0x51, 0x58, 0xa5, 0x33, 0x6e, 0x16, 0xdd, 0x2b, 0x78, 0xff, 0x68, 0x2d,
|
||||
0xb8, 0x57, 0x3b, 0x39, 0xb8, 0x8c, 0x3c, 0x98, 0xc9, 0x67, 0x86, 0x76, 0x72, 0x25, 0x0b, 0x2f,
|
||||
0x23, 0x0d, 0x03, 0x4b, 0xaf, 0x04, 0xf5, 0xe3, 0xc4, 0x4b, 0x6f, 0xe5, 0xe1, 0xd2, 0x7b, 0x9c,
|
||||
0x76, 0xf2, 0xcf, 0x66, 0x19, 0xa7, 0xa4, 0xc7, 0xbc, 0x1e, 0x23, 0xaf, 0xe2, 0x2c, 0x4d, 0x62,
|
||||
0xc1, 0xce, 0xf8, 0x35, 0xcb, 0xf1, 0x15, 0x93, 0x2e, 0xad, 0xe2, 0x47, 0x9e, 0x42, 0x78, 0xc5,
|
||||
0x14, 0x56, 0x84, 0xfd, 0x44, 0xd1, 0xe7, 0x15, 0xdb, 0x89, 0x2b, 0x22, 0x92, 0x79, 0x48, 0xb8,
|
||||
0x9f, 0x40, 0x14, 0xe6, 0xab, 0x4a, 0xfe, 0xe2, 0x4d, 0xc1, 0xca, 0x94, 0xe5, 0x13, 0x86, 0xe7,
|
||||
0xab, 0x90, 0x0a, 0xe7, 0xab, 0x08, 0xdd, 0xda, 0xa6, 0x31, 0xc1, 0xa9, 0x7d, 0xce, 0x02, 0x12,
|
||||
0x81, 0x73, 0x16, 0x04, 0x0a, 0x2b, 0x69, 0x01, 0x74, 0xab, 0xb3, 0x65, 0x25, 0xb8, 0xd5, 0x49,
|
||||
0xd3, 0xad, 0xcd, 0x2f, 0xc3, 0x8c, 0xeb, 0x61, 0xd2, 0x51, 0xf4, 0xb1, 0x3b, 0x5c, 0xd6, 0x7b,
|
||||
0xb1, 0xf8, 0x6e, 0xdb, 0x29, 0xcb, 0x62, 0x39, 0x85, 0x04, 0xb6, 0xb4, 0x1a, 0xa6, 0xcf, 0x6e,
|
||||
0x9b, 0xc3, 0x6a, 0x87, 0x3f, 0x1d, 0x44, 0xef, 0x63, 0x1e, 0x5f, 0x16, 0xd2, 0xef, 0x93, 0x6e,
|
||||
0x5b, 0x8a, 0x24, 0x0e, 0x92, 0x84, 0x35, 0x74, 0x19, 0xfe, 0x24, 0x7a, 0xaf, 0x11, 0xd9, 0x73,
|
||||
0x26, 0xba, 0x00, 0x7e, 0x02, 0x65, 0xca, 0x0f, 0x39, 0xe3, 0x7e, 0xab, 0x37, 0x6f, 0xd7, 0x26,
|
||||
0x7e, 0xb9, 0x2a, 0xb0, 0x36, 0x31, 0x36, 0xb4, 0x98, 0x58, 0x9b, 0x20, 0x98, 0xdd, 0xd5, 0x70,
|
||||
0xab, 0xf7, 0x3a, 0x15, 0x57, 0x32, 0xf7, 0x01, 0xbb, 0x1a, 0x5e, 0x59, 0x0d, 0x44, 0xec, 0x6a,
|
||||
0x90, 0x30, 0xcc, 0x0e, 0x1a, 0xb0, 0x1e, 0x9b, 0x58, 0x5c, 0x35, 0x86, 0xdc, 0x91, 0xb9, 0xd6,
|
||||
0x0d, 0xc2, 0xfe, 0xda, 0x88, 0xf5, 0x32, 0xe4, 0x71, 0xc8, 0x02, 0x58, 0x8a, 0xac, 0xf7, 0x62,
|
||||
0xb5, 0xc3, 0x3f, 0x8b, 0xbe, 0xdb, 0xaa, 0xd8, 0x1e, 0x8b, 0xc5, 0xbc, 0x64, 0xc9, 0x70, 0xab,
|
||||
0xa3, 0xdc, 0x0d, 0x68, 0x5c, 0x3f, 0xe9, 0xaf, 0xd0, 0xca, 0x97, 0x1b, 0x4e, 0x75, 0x2b, 0x53,
|
||||
0x86, 0xa7, 0x21, 0x93, 0x3e, 0x1b, 0xcc, 0x97, 0x69, 0x9d, 0xd6, 0x92, 0xd7, 0xed, 0x5d, 0xdb,
|
||||
0x8b, 0x38, 0xcd, 0xe4, 0x2b, 0xa7, 0x8f, 0x42, 0x46, 0x3d, 0x34, 0xb8, 0xe4, 0x25, 0x55, 0x5a,
|
||||
0x91, 0x59, 0x8e, 0x71, 0x67, 0xa9, 0xb4, 0x41, 0x47, 0x02, 0x64, 0xa5, 0xb4, 0xd9, 0x93, 0xd6,
|
||||
0x6e, 0x45, 0xb3, 0x55, 0x58, 0xff, 0xec, 0x76, 0x72, 0xcc, 0xab, 0x56, 0x45, 0x7a, 0xfa, 0x66,
|
||||
0x4f, 0x5a, 0x7b, 0xfd, 0xd3, 0xe8, 0xbd, 0xb6, 0x57, 0x3d, 0x11, 0x6d, 0x75, 0x9a, 0x02, 0x73,
|
||||
0xd1, 0x93, 0xfe, 0x0a, 0xda, 0xfd, 0xbf, 0x99, 0x3d, 0x62, 0xe5, 0x7f, 0xc2, 0x67, 0x33, 0x96,
|
||||
0x27, 0x2c, 0x69, 0x34, 0xaa, 0x7a, 0x2d, 0xf3, 0x39, 0x6d, 0xd7, 0x28, 0x8c, 0x5c, 0x0d, 0x53,
|
||||
0xa2, 0xdf, 0xfe, 0x06, 0x9a, 0xba, 0x68, 0xff, 0x39, 0x88, 0x1e, 0xa1, 0x45, 0x6b, 0x3a, 0xae,
|
||||
0x57, 0xc4, 0xdf, 0xeb, 0xe3, 0x08, 0xd3, 0x34, 0x45, 0xdd, 0xfe, 0x7f, 0x58, 0xb0, 0x8b, 0xb5,
|
||||
0x2f, 0xd2, 0x4a, 0xf0, 0x72, 0x39, 0xbe, 0xe2, 0x37, 0xcd, 0x69, 0x78, 0x3f, 0xf6, 0x69, 0x60,
|
||||
0xe4, 0x10, 0xc4, 0x62, 0x0d, 0x27, 0x5b, 0xae, 0xec, 0xa9, 0xf9, 0x8a, 0x70, 0xe5, 0x10, 0x1d,
|
||||
0xae, 0x7c, 0xd2, 0x46, 0xfe, 0xa6, 0x56, 0xf6, 0x88, 0xff, 0x2a, 0x5e, 0xd4, 0xf6, 0x31, 0xff,
|
||||
0xb5, 0x6e, 0xd0, 0xe6, 0x7f, 0x5a, 0xbc, 0x9b, 0x5e, 0x5e, 0x9a, 0x3a, 0xe1, 0x25, 0x75, 0x11,
|
||||
0x22, 0xff, 0x23, 0x50, 0xbb, 0x9c, 0xd8, 0x4b, 0x33, 0x26, 0xdf, 0x55, 0xbc, 0xbc, 0xbc, 0xcc,
|
||||
0x78, 0x9c, 0x80, 0xe5, 0x44, 0x2d, 0x1e, 0xb9, 0x72, 0x62, 0x39, 0x81, 0x71, 0xf6, 0x30, 0x5d,
|
||||
0x2d, 0xad, 0x7b, 0x50, 0x3e, 0x49, 0x33, 0x78, 0x38, 0x50, 0x6a, 0x1a, 0x21, 0x71, 0x98, 0xae,
|
||||
0x05, 0xd9, 0x34, 0xa3, 0x16, 0xd5, 0x41, 0xb4, 0x29, 0xff, 0xc3, 0xb6, 0xa2, 0x23, 0x26, 0xd2,
|
||||
0x0c, 0x04, 0xb3, 0xab, 0xea, 0x5a, 0x78, 0x5e, 0x48, 0xe3, 0xf7, 0xda, 0x5a, 0x4a, 0x42, 0xac,
|
||||
0xaa, 0x7d, 0xc2, 0xae, 0x0e, 0xeb, 0xdf, 0x77, 0xf9, 0x4d, 0x2e, 0x8d, 0xde, 0x6f, 0xab, 0x34,
|
||||
0x32, 0x62, 0x75, 0x08, 0x19, 0x6d, 0xf8, 0x47, 0xd1, 0x2f, 0x4a, 0xc3, 0x25, 0x2f, 0x86, 0x77,
|
||||
0x10, 0x85, 0xd2, 0x39, 0xc7, 0x77, 0x97, 0x94, 0xdb, 0xe3, 0xa8, 0xa6, 0x6f, 0x9c, 0x57, 0xf1,
|
||||
0x94, 0x0d, 0x1f, 0x10, 0x2d, 0x2e, 0xa5, 0xc4, 0x71, 0xd4, 0x36, 0xe5, 0xf7, 0x8a, 0x63, 0x9e,
|
||||
0x68, 0xeb, 0x48, 0x0d, 0x8d, 0x30, 0xd4, 0x2b, 0x5c, 0xc8, 0xa6, 0x86, 0xc7, 0xf1, 0x22, 0x9d,
|
||||
0x9a, 0xe9, 0x5b, 0x05, 0xb2, 0x0a, 0xa4, 0x86, 0x96, 0x19, 0x39, 0x10, 0x91, 0x1a, 0x92, 0xb0,
|
||||
0xf6, 0xf9, 0x4f, 0x83, 0xe8, 0x9e, 0x65, 0xf6, 0x9b, 0x7d, 0xc8, 0x83, 0xfc, 0x92, 0xd7, 0x89,
|
||||
0xe4, 0x61, 0x9a, 0x5f, 0x57, 0xc3, 0x4f, 0x29, 0x93, 0x38, 0x6f, 0x8a, 0xf2, 0xd9, 0xad, 0xf5,
|
||||
0xec, 0x1a, 0xa0, 0xd9, 0xa4, 0xb3, 0x6f, 0xea, 0x95, 0x06, 0x58, 0x03, 0x98, 0xbd, 0x3c, 0xc8,
|
||||
0x11, 0x6b, 0x80, 0x10, 0x6f, 0x9b, 0xd8, 0x38, 0xcf, 0x78, 0x0e, 0x9b, 0xd8, 0x5a, 0xa8, 0x85,
|
||||
0x44, 0x13, 0xb7, 0x20, 0x1b, 0x8f, 0x1b, 0x91, 0xda, 0x4f, 0xda, 0xce, 0x32, 0x10, 0x8f, 0x8d,
|
||||
0xaa, 0x01, 0x88, 0x78, 0x8c, 0x82, 0xda, 0xcf, 0x69, 0xf4, 0xed, 0xfa, 0x91, 0x9e, 0x94, 0x6c,
|
||||
0x91, 0x32, 0x78, 0xa8, 0xc4, 0x91, 0x10, 0xe3, 0xdf, 0x27, 0xec, 0xc8, 0x3a, 0xcf, 0xab, 0x22,
|
||||
0x8b, 0xab, 0x2b, 0x7d, 0xcc, 0xc0, 0xaf, 0x73, 0x23, 0x84, 0x07, 0x0d, 0x1e, 0x76, 0x50, 0x36,
|
||||
0xa8, 0x37, 0x32, 0x13, 0x62, 0x56, 0x70, 0xd5, 0x56, 0x98, 0x59, 0xed, 0xe4, 0xec, 0x5e, 0xfe,
|
||||
0x7e, 0x9c, 0x65, 0xac, 0x5c, 0x36, 0xb2, 0xa3, 0x38, 0x4f, 0x2f, 0x59, 0x25, 0xc0, 0x5e, 0xbe,
|
||||
0xa6, 0x46, 0x10, 0x23, 0xf6, 0xf2, 0x03, 0xb8, 0x5d, 0x1b, 0x01, 0xcf, 0x07, 0x79, 0xc2, 0xde,
|
||||
0x80, 0xb5, 0x11, 0xb4, 0x23, 0x19, 0x62, 0x6d, 0x44, 0xb1, 0x76, 0x4f, 0xfb, 0x79, 0xc6, 0x27,
|
||||
0xd7, 0x7a, 0x0a, 0xf0, 0x1b, 0x58, 0x4a, 0xe0, 0x1c, 0x70, 0x3f, 0x84, 0xd8, 0x49, 0x40, 0x0a,
|
||||
0x4e, 0x59, 0x91, 0xc5, 0x13, 0x78, 0xb2, 0x48, 0xe9, 0x68, 0x19, 0x31, 0x09, 0x40, 0x06, 0x14,
|
||||
0x57, 0x9f, 0x58, 0xc2, 0x8a, 0x0b, 0x0e, 0x2c, 0xdd, 0x0f, 0x21, 0x76, 0x1a, 0x94, 0x82, 0x71,
|
||||
0x91, 0xa5, 0x02, 0x0c, 0x03, 0xa5, 0x21, 0x25, 0xc4, 0x30, 0xf0, 0x09, 0x60, 0xf2, 0x88, 0x95,
|
||||
0x53, 0x86, 0x9a, 0x94, 0x92, 0xa0, 0xc9, 0x86, 0xb0, 0x07, 0x50, 0x55, 0xdd, 0x79, 0xb1, 0x04,
|
||||
0x07, 0x50, 0x75, 0xb5, 0x78, 0xb1, 0x24, 0x0e, 0xa0, 0x7a, 0x00, 0x28, 0xe2, 0x49, 0x5c, 0x09,
|
||||
0xbc, 0x88, 0x52, 0x12, 0x2c, 0x62, 0x43, 0xd8, 0x39, 0x5a, 0x15, 0x71, 0x2e, 0xc0, 0x1c, 0xad,
|
||||
0x0b, 0xe0, 0xbc, 0x5b, 0xbf, 0x4b, 0xca, 0x6d, 0x24, 0x51, 0xad, 0xc2, 0xc4, 0x5e, 0xca, 0xb2,
|
||||
0xa4, 0x02, 0x91, 0x44, 0x3f, 0xf7, 0x46, 0x4a, 0x44, 0x92, 0x36, 0x05, 0xba, 0x92, 0xde, 0xf9,
|
||||
0xc7, 0x6a, 0x07, 0x36, 0xfd, 0xef, 0x87, 0x10, 0x1b, 0x9f, 0x9a, 0x42, 0xef, 0xc4, 0x65, 0x99,
|
||||
0xd6, 0x93, 0xff, 0x0a, 0x5e, 0xa0, 0x46, 0x4e, 0xc4, 0x27, 0x8c, 0x03, 0xc3, 0xab, 0x09, 0xdc,
|
||||
0x58, 0xc1, 0x60, 0xe8, 0xfe, 0x30, 0xc8, 0xd8, 0x8c, 0x53, 0x4a, 0x9c, 0x97, 0xc3, 0xd8, 0xd3,
|
||||
0x44, 0xde, 0x0d, 0xaf, 0x74, 0x61, 0xce, 0x07, 0x22, 0xc6, 0xc5, 0x11, 0x5f, 0xb0, 0x33, 0xfe,
|
||||
0xe2, 0x4d, 0x5a, 0x89, 0x34, 0x9f, 0xea, 0x99, 0xfb, 0x19, 0x61, 0x09, 0x83, 0x89, 0x0f, 0x44,
|
||||
0x3a, 0x95, 0x6c, 0x02, 0x01, 0xca, 0x72, 0xcc, 0x6e, 0xd0, 0x04, 0x02, 0x5a, 0x34, 0x1c, 0x91,
|
||||
0x40, 0x84, 0x78, 0xbb, 0x2b, 0x65, 0x9c, 0xeb, 0xaf, 0x68, 0xcf, 0x78, 0x93, 0xcb, 0x51, 0xd6,
|
||||
0x20, 0x48, 0x6c, 0x0c, 0x04, 0x15, 0xec, 0xfa, 0xd2, 0xf8, 0xb7, 0x43, 0x6c, 0x8d, 0xb0, 0xd3,
|
||||
0x1e, 0x66, 0x8f, 0x7a, 0x90, 0x88, 0x2b, 0x7b, 0xc2, 0x81, 0x72, 0xd5, 0x3e, 0xe0, 0xf0, 0xa8,
|
||||
0x07, 0xe9, 0xec, 0x70, 0xb9, 0xd5, 0x7a, 0x1e, 0x4f, 0xae, 0xa7, 0x25, 0x9f, 0xe7, 0xc9, 0x0e,
|
||||
0xcf, 0x78, 0x09, 0x76, 0xb8, 0xbc, 0x52, 0x03, 0x94, 0xd8, 0xe1, 0xea, 0x50, 0xb1, 0x19, 0x9c,
|
||||
0x5b, 0x8a, 0xed, 0x2c, 0x9d, 0xc2, 0x15, 0xb5, 0x67, 0x48, 0x02, 0x44, 0x06, 0x87, 0x82, 0x48,
|
||||
0x27, 0x52, 0x2b, 0x6e, 0x91, 0x4e, 0xe2, 0x4c, 0xf9, 0xdb, 0xa2, 0xcd, 0x78, 0x60, 0x67, 0x27,
|
||||
0x42, 0x14, 0x90, 0x7a, 0x9e, 0xcd, 0xcb, 0xfc, 0x20, 0x17, 0x9c, 0xac, 0x67, 0x03, 0x74, 0xd6,
|
||||
0xd3, 0x01, 0x41, 0x58, 0x3d, 0x63, 0x6f, 0xea, 0xd2, 0xd4, 0xff, 0x60, 0x61, 0xb5, 0xfe, 0x7d,
|
||||
0xa4, 0xe5, 0xa1, 0xb0, 0x0a, 0x38, 0x50, 0x19, 0xed, 0x44, 0x75, 0x98, 0x80, 0xb6, 0xdf, 0x4d,
|
||||
0xd6, 0xba, 0x41, 0xdc, 0xcf, 0x58, 0x2c, 0x33, 0x16, 0xf2, 0x23, 0x81, 0x3e, 0x7e, 0x1a, 0xd0,
|
||||
0x6e, 0xb7, 0x78, 0xf5, 0xb9, 0x62, 0x93, 0xeb, 0xd6, 0x81, 0x2d, 0xbf, 0xa0, 0x0a, 0x21, 0xb6,
|
||||
0x5b, 0x08, 0x14, 0x6f, 0xa2, 0x83, 0x09, 0xcf, 0x43, 0x4d, 0x54, 0xcb, 0xfb, 0x34, 0x91, 0xe6,
|
||||
0xec, 0xe2, 0xd7, 0x48, 0x75, 0xcf, 0x54, 0xcd, 0xb4, 0x4e, 0x58, 0x70, 0x21, 0x62, 0xf1, 0x4b,
|
||||
0xc2, 0x36, 0x27, 0x87, 0x3e, 0x8f, 0xda, 0xa7, 0xd9, 0x5b, 0x56, 0x8e, 0xe8, 0xd3, 0xec, 0x14,
|
||||
0x4b, 0x57, 0x52, 0xf5, 0x91, 0x0e, 0x2b, 0x7e, 0x3f, 0xd9, 0xe8, 0x07, 0xdb, 0x25, 0x8f, 0xe7,
|
||||
0x73, 0x27, 0x63, 0x71, 0xa9, 0xbc, 0x6e, 0x06, 0x0c, 0x59, 0x8c, 0x58, 0xf2, 0x04, 0x70, 0x10,
|
||||
0xc2, 0x3c, 0xcf, 0x3b, 0x3c, 0x17, 0x2c, 0x17, 0x58, 0x08, 0xf3, 0x8d, 0x69, 0x30, 0x14, 0xc2,
|
||||
0x28, 0x05, 0xd0, 0x6f, 0xe5, 0x7e, 0x10, 0x13, 0xc7, 0xf1, 0x0c, 0xcd, 0xd8, 0xd4, 0x5e, 0x8f,
|
||||
0x92, 0x87, 0xfa, 0x2d, 0xe0, 0x9c, 0x57, 0xa6, 0xae, 0x97, 0xb3, 0xb8, 0x9c, 0x9a, 0xdd, 0x8d,
|
||||
0x64, 0xf8, 0x84, 0xb6, 0xe3, 0x93, 0xc4, 0x2b, 0xd3, 0xb0, 0x06, 0x08, 0x3b, 0x07, 0xb3, 0x78,
|
||||
0x6a, 0x6a, 0x8a, 0xd4, 0x40, 0xca, 0x5b, 0x55, 0x5d, 0xeb, 0x06, 0x81, 0x9f, 0x57, 0x69, 0xc2,
|
||||
0x78, 0xc0, 0x8f, 0x94, 0xf7, 0xf1, 0x03, 0x41, 0x90, 0xbd, 0xd5, 0xf5, 0x56, 0x2b, 0xba, 0xed,
|
||||
0x3c, 0xd1, 0xeb, 0xd8, 0x11, 0xf1, 0x78, 0x00, 0x17, 0xca, 0xde, 0x08, 0x1e, 0x8c, 0xd1, 0x66,
|
||||
0x83, 0x36, 0x34, 0x46, 0xcd, 0xfe, 0x6b, 0x9f, 0x31, 0x8a, 0xc1, 0xda, 0xe7, 0x4f, 0xf4, 0x18,
|
||||
0xdd, 0x8d, 0x45, 0x5c, 0xe7, 0xed, 0xaf, 0x52, 0x76, 0xa3, 0x17, 0xc2, 0x48, 0x7d, 0x1b, 0x6a,
|
||||
0x24, 0x3f, 0x63, 0x04, 0xab, 0xe2, 0xad, 0xde, 0x7c, 0xc0, 0xb7, 0x5e, 0x21, 0x74, 0xfa, 0x06,
|
||||
0x4b, 0x85, 0xad, 0xde, 0x7c, 0xc0, 0xb7, 0xfe, 0x3e, 0xba, 0xd3, 0x37, 0xf8, 0x48, 0x7a, 0xab,
|
||||
0x37, 0xaf, 0x7d, 0xff, 0x45, 0x33, 0x70, 0x5d, 0xe7, 0x75, 0x1e, 0x36, 0x11, 0xe9, 0x82, 0x61,
|
||||
0xe9, 0xa4, 0x6f, 0xcf, 0xa0, 0xa1, 0x74, 0x92, 0x56, 0x71, 0x2e, 0xd5, 0xc1, 0x4a, 0x71, 0xc2,
|
||||
0xab, 0x54, 0x1e, 0x79, 0x78, 0xd6, 0xc3, 0x68, 0x03, 0x87, 0x16, 0x4d, 0x21, 0x25, 0xfb, 0xf2,
|
||||
0xd6, 0x43, 0xed, 0xf9, 0xec, 0x8d, 0x80, 0xbd, 0xf6, 0x31, 0xed, 0xcd, 0x9e, 0xb4, 0x7d, 0x8d,
|
||||
0xea, 0x31, 0xee, 0xfb, 0xdb, 0x50, 0xab, 0xa2, 0xaf, 0x70, 0x9f, 0xf4, 0x57, 0xd0, 0xee, 0xff,
|
||||
0xaa, 0x59, 0x57, 0x40, 0xff, 0x7a, 0x10, 0x3c, 0xed, 0x63, 0x11, 0x0c, 0x84, 0x67, 0xb7, 0xd2,
|
||||
0xd1, 0x05, 0xf9, 0xbb, 0x66, 0x01, 0xdd, 0xa0, 0xf2, 0x2b, 0x95, 0x97, 0x65, 0xc2, 0x4a, 0x3d,
|
||||
0x26, 0x42, 0xcd, 0x6a, 0x61, 0x38, 0x32, 0x3e, 0xb9, 0xa5, 0x96, 0x73, 0xc5, 0x92, 0x07, 0xeb,
|
||||
0xaf, 0x29, 0x9d, 0xf2, 0x84, 0x2c, 0x3b, 0x34, 0x2c, 0xd0, 0xa7, 0xb7, 0x55, 0xa3, 0xc6, 0x8a,
|
||||
0x03, 0xcb, 0x1b, 0x1b, 0x9e, 0xf5, 0x34, 0xec, 0xdd, 0xe1, 0xf0, 0xf1, 0xed, 0x94, 0x74, 0x59,
|
||||
0xfe, 0x63, 0x10, 0x3d, 0xf4, 0x58, 0xfb, 0x3e, 0x01, 0xec, 0x7a, 0xfc, 0x30, 0x60, 0x9f, 0x52,
|
||||
0x32, 0x85, 0xfb, 0x9d, 0x6f, 0xa6, 0x6c, 0xef, 0x23, 0xf2, 0x54, 0xf6, 0xd2, 0x4c, 0xb0, 0xb2,
|
||||
0x7d, 0x1f, 0x91, 0x6f, 0x57, 0x51, 0x23, 0xfa, 0x3e, 0xa2, 0x00, 0xee, 0xdc, 0x47, 0x84, 0x78,
|
||||
0x46, 0xef, 0x23, 0x42, 0xad, 0x05, 0xef, 0x23, 0x0a, 0x6b, 0x50, 0xe1, 0xbd, 0x29, 0x82, 0xda,
|
||||
0xb7, 0xee, 0x65, 0xd1, 0xdf, 0xc6, 0x7e, 0x7a, 0x1b, 0x15, 0x62, 0x82, 0x53, 0x9c, 0x3c, 0x35,
|
||||
0xd8, 0xe3, 0x99, 0x7a, 0x27, 0x07, 0xb7, 0x7a, 0xf3, 0xda, 0xf7, 0x8f, 0xf5, 0xea, 0xc6, 0x84,
|
||||
0x73, 0x5e, 0xca, 0xbb, 0xa8, 0xd6, 0x43, 0xe1, 0xb9, 0xb6, 0xe0, 0xb6, 0xfc, 0x46, 0x3f, 0x98,
|
||||
0xa8, 0x6e, 0x4d, 0xe8, 0x46, 0x1f, 0x75, 0x19, 0x02, 0x4d, 0xbe, 0xd5, 0x9b, 0x27, 0xa6, 0x11,
|
||||
0xe5, 0x5b, 0xb5, 0x76, 0x0f, 0x63, 0x7e, 0x5b, 0x3f, 0xe9, 0xaf, 0xa0, 0xdd, 0x2f, 0x74, 0xda,
|
||||
0xe8, 0xba, 0x97, 0xed, 0xbc, 0xd9, 0x65, 0x6a, 0xec, 0x35, 0xf3, 0xa8, 0x2f, 0x1e, 0x4a, 0x20,
|
||||
0xdc, 0x29, 0xb4, 0x2b, 0x81, 0x40, 0xa7, 0xd1, 0x8f, 0x6f, 0xa7, 0xa4, 0xcb, 0xf2, 0x8f, 0x83,
|
||||
0xe8, 0x2e, 0x59, 0x16, 0xdd, 0x0f, 0x3e, 0xed, 0x6b, 0x19, 0xf4, 0x87, 0xcf, 0x6e, 0xad, 0xa7,
|
||||
0x0b, 0xf5, 0x2f, 0x83, 0xe8, 0x5e, 0xa0, 0x50, 0xaa, 0x83, 0xdc, 0xc2, 0xba, 0xdf, 0x51, 0x3e,
|
||||
0xbf, 0xbd, 0x22, 0x35, 0xdd, 0xbb, 0xf8, 0xb8, 0x7d, 0x51, 0x4f, 0xc0, 0xf6, 0x98, 0xbe, 0xa8,
|
||||
0xa7, 0x5b, 0x0b, 0x6e, 0xf2, 0xc4, 0x17, 0xcd, 0xa2, 0x0b, 0xdd, 0xe4, 0x91, 0xe7, 0xfd, 0xc0,
|
||||
0x9a, 0x63, 0xb5, 0x93, 0xc3, 0x9c, 0xbc, 0x78, 0x53, 0xc4, 0x79, 0x42, 0x3b, 0x51, 0xf2, 0x6e,
|
||||
0x27, 0x86, 0x83, 0x9b, 0x63, 0xb5, 0xf4, 0x94, 0x37, 0x0b, 0xa9, 0x47, 0x94, 0xbe, 0x41, 0x82,
|
||||
0x9b, 0x63, 0x2d, 0x94, 0xf0, 0xa6, 0xb3, 0xc6, 0x90, 0x37, 0x90, 0x2c, 0x3e, 0xee, 0x83, 0x82,
|
||||
0x14, 0xdd, 0x78, 0x33, 0x7b, 0xee, 0x1b, 0x21, 0x2b, 0xad, 0x7d, 0xf7, 0xcd, 0x9e, 0x34, 0xe1,
|
||||
0x76, 0xcc, 0xc4, 0x17, 0x2c, 0x4e, 0x58, 0x19, 0x74, 0x6b, 0xa8, 0x5e, 0x6e, 0x5d, 0x1a, 0x73,
|
||||
0xbb, 0xc3, 0xb3, 0xf9, 0x2c, 0xd7, 0x8d, 0x49, 0xba, 0x75, 0xa9, 0x6e, 0xb7, 0x80, 0x86, 0xdb,
|
||||
0x82, 0xd6, 0xad, 0x4c, 0x2f, 0x1f, 0x87, 0xcd, 0x78, 0x59, 0xe5, 0x7a, 0x2f, 0x96, 0xae, 0xa7,
|
||||
0xee, 0x46, 0x1d, 0xf5, 0x04, 0x3d, 0x69, 0xb3, 0x27, 0x0d, 0xf7, 0xe7, 0x1c, 0xb7, 0xa6, 0x3f,
|
||||
0x6d, 0x75, 0xd8, 0x6a, 0x75, 0xa9, 0x27, 0xfd, 0x15, 0xe0, 0x6e, 0xa8, 0xee, 0x55, 0x87, 0x69,
|
||||
0x25, 0xf6, 0xd2, 0x2c, 0x1b, 0xae, 0x07, 0xba, 0x49, 0x03, 0x05, 0x77, 0x43, 0x11, 0x98, 0xe8,
|
||||
0xc9, 0xcd, 0xee, 0x61, 0x3e, 0xec, 0xb2, 0x23, 0xa9, 0x5e, 0x3d, 0xd9, 0xa5, 0xc1, 0x8e, 0x96,
|
||||
0xf3, 0xa8, 0x4d, 0x6d, 0x47, 0xe1, 0x07, 0xd7, 0xaa, 0xf0, 0x56, 0x6f, 0x1e, 0xbc, 0x6e, 0x97,
|
||||
0x94, 0x9c, 0x59, 0x1e, 0x50, 0x26, 0xbc, 0x99, 0xe4, 0x61, 0x07, 0x05, 0x76, 0x05, 0xd5, 0x30,
|
||||
0x7a, 0x9d, 0x26, 0x53, 0x26, 0xd0, 0x37, 0x45, 0x2e, 0x10, 0x7c, 0x53, 0x04, 0x40, 0xd0, 0x74,
|
||||
0xea, 0x77, 0xb3, 0x1d, 0x7a, 0x90, 0x60, 0x4d, 0xa7, 0x95, 0x1d, 0x2a, 0xd4, 0x74, 0x28, 0x0d,
|
||||
0xa2, 0x81, 0x71, 0xab, 0x2f, 0x1a, 0x78, 0x1c, 0x32, 0x03, 0x6e, 0x1b, 0x58, 0xef, 0xc5, 0x82,
|
||||
0x19, 0xc5, 0x3a, 0x4c, 0x67, 0xa9, 0xc0, 0x66, 0x14, 0xc7, 0x46, 0x8d, 0x84, 0x66, 0x94, 0x36,
|
||||
0x4a, 0x55, 0xaf, 0xce, 0x11, 0x0e, 0x92, 0x70, 0xf5, 0x14, 0xd3, 0xaf, 0x7a, 0x86, 0x6d, 0xbd,
|
||||
0xd8, 0xcc, 0x4d, 0x97, 0x11, 0x57, 0x7a, 0xb1, 0x8c, 0xf4, 0x6d, 0xf9, 0x01, 0x2a, 0x04, 0x43,
|
||||
0x51, 0x87, 0x52, 0x80, 0x1b, 0xf6, 0x35, 0xd7, 0xbc, 0x7b, 0x2d, 0x0a, 0x16, 0x97, 0x71, 0x3e,
|
||||
0x41, 0x17, 0xa7, 0xd2, 0x60, 0x8b, 0x0c, 0x2d, 0x4e, 0x49, 0x0d, 0xf0, 0xda, 0xdc, 0xff, 0x74,
|
||||
0x14, 0x19, 0x0a, 0xe6, 0x1b, 0x4d, 0xff, 0xcb, 0xd1, 0x47, 0x3d, 0x48, 0xf8, 0xda, 0xbc, 0x01,
|
||||
0xcc, 0xc6, 0xb7, 0x72, 0xfa, 0x51, 0xc0, 0x94, 0x8f, 0x86, 0x16, 0xc2, 0xb4, 0x0a, 0xe8, 0xd4,
|
||||
0x26, 0xc1, 0x65, 0xe2, 0x47, 0x6c, 0x89, 0x75, 0x6a, 0x9b, 0x9f, 0x4a, 0x24, 0xd4, 0xa9, 0xdb,
|
||||
0x28, 0xc8, 0x33, 0xdd, 0x75, 0xd0, 0x4a, 0x40, 0xdf, 0x5d, 0xfa, 0xac, 0x76, 0x72, 0x60, 0xe4,
|
||||
0xec, 0xa6, 0x0b, 0xef, 0x3d, 0x01, 0x52, 0xd0, 0xdd, 0x74, 0x81, 0xbf, 0x26, 0x58, 0xef, 0xc5,
|
||||
0xc2, 0x57, 0xf2, 0xb1, 0x60, 0x6f, 0x9a, 0x77, 0xe5, 0x48, 0x71, 0xa5, 0xbc, 0xf5, 0xb2, 0x7c,
|
||||
0xad, 0x1b, 0xb4, 0x07, 0x60, 0x4f, 0x4a, 0x3e, 0x61, 0x55, 0xa5, 0x6f, 0x2f, 0xf4, 0x4f, 0x18,
|
||||
0x69, 0xd9, 0x08, 0xdc, 0x5d, 0xf8, 0x20, 0x0c, 0xd9, 0x96, 0xd1, 0x22, 0x7b, 0x9f, 0xcf, 0x0a,
|
||||
0xaa, 0xd9, 0xbe, 0xca, 0x67, 0xb5, 0x93, 0xb3, 0xc3, 0x4b, 0x4b, 0xdd, 0x0b, 0x7c, 0xd6, 0x50,
|
||||
0x75, 0xec, 0xee, 0x9e, 0x47, 0x3d, 0x48, 0xed, 0xea, 0x8b, 0xe8, 0xad, 0x43, 0x3e, 0x1d, 0xb3,
|
||||
0x3c, 0x19, 0x7e, 0xdf, 0x3f, 0x42, 0xcb, 0xa7, 0xa3, 0xfa, 0x67, 0x63, 0xf4, 0x0e, 0x25, 0xb6,
|
||||
0x87, 0x00, 0x77, 0xd9, 0xc5, 0x7c, 0x3a, 0x16, 0xb1, 0x00, 0x87, 0x00, 0xe5, 0xef, 0xa3, 0x5a,
|
||||
0x40, 0x1c, 0x02, 0xf4, 0x00, 0x60, 0xef, 0xac, 0x64, 0x0c, 0xb5, 0x57, 0x0b, 0x82, 0xf6, 0x34,
|
||||
0x60, 0xb3, 0x08, 0x63, 0xaf, 0x4e, 0xd4, 0xe1, 0xa1, 0x3d, 0xab, 0x23, 0xa5, 0x44, 0x16, 0xd1,
|
||||
0xa6, 0x6c, 0xe7, 0x56, 0xd5, 0x97, 0xf7, 0xa9, 0xcc, 0x67, 0xb3, 0xb8, 0x5c, 0x82, 0xce, 0xad,
|
||||
0x6b, 0xe9, 0x00, 0x44, 0xe7, 0x46, 0x41, 0x3b, 0x6a, 0x9b, 0xc7, 0x3c, 0xb9, 0xde, 0xe7, 0x25,
|
||||
0x9f, 0x8b, 0x34, 0x67, 0xf0, 0x4e, 0x0d, 0xf3, 0x40, 0x5d, 0x86, 0x18, 0xb5, 0x14, 0x6b, 0xb3,
|
||||
0x5c, 0x49, 0xa8, 0xf3, 0x84, 0xf2, 0x4e, 0xe3, 0x4a, 0xf0, 0x12, 0xbe, 0x4f, 0x54, 0x56, 0x20,
|
||||
0x44, 0x64, 0xb9, 0x24, 0x0c, 0xda, 0xfe, 0x24, 0xcd, 0xa7, 0x68, 0xdb, 0x9f, 0xb8, 0x37, 0x82,
|
||||
0xde, 0xa3, 0x01, 0x3b, 0xa0, 0xd4, 0x43, 0x53, 0x03, 0x40, 0x7f, 0x19, 0x8b, 0x3e, 0x74, 0x97,
|
||||
0x20, 0x06, 0x14, 0x4e, 0x02, 0x57, 0x2f, 0x0b, 0x96, 0xb3, 0xa4, 0x39, 0x35, 0x87, 0xb9, 0xf2,
|
||||
0x88, 0xa0, 0x2b, 0x48, 0xda, 0x58, 0x24, 0xe5, 0xa7, 0xf3, 0xfc, 0xa4, 0xe4, 0x97, 0x69, 0xc6,
|
||||
0x4a, 0x10, 0x8b, 0x94, 0xba, 0x23, 0x27, 0x62, 0x11, 0xc6, 0xd9, 0xe3, 0x17, 0x52, 0xea, 0x5d,
|
||||
0xcc, 0x7d, 0x56, 0xc6, 0x13, 0x78, 0xfc, 0x42, 0xd9, 0x68, 0x63, 0xc4, 0xce, 0x60, 0x00, 0x77,
|
||||
0x12, 0x1d, 0xe5, 0x3a, 0x5f, 0xca, 0xfe, 0xa1, 0xbf, 0xcc, 0x94, 0xf7, 0x64, 0x56, 0x20, 0xd1,
|
||||
0xd1, 0xe6, 0x30, 0x92, 0x48, 0x74, 0xc2, 0x1a, 0x76, 0x2a, 0x91, 0xdc, 0xb1, 0x3e, 0x56, 0x04,
|
||||
0xa6, 0x12, 0x65, 0xa3, 0x11, 0x12, 0x53, 0x49, 0x0b, 0x02, 0x01, 0xa9, 0x19, 0x06, 0x53, 0x34,
|
||||
0x20, 0x19, 0x69, 0x30, 0x20, 0xb9, 0x94, 0x0d, 0x14, 0x07, 0x79, 0x2a, 0xd2, 0x38, 0x1b, 0x33,
|
||||
0x71, 0x12, 0x97, 0xf1, 0x8c, 0x09, 0x56, 0xc2, 0x40, 0xa1, 0x91, 0x91, 0xc7, 0x10, 0x81, 0x82,
|
||||
0x62, 0xb5, 0xc3, 0xdf, 0x8d, 0xde, 0xa9, 0xe7, 0x7d, 0x96, 0xeb, 0x3f, 0xc1, 0xf1, 0x42, 0xfe,
|
||||
0xed, 0x9e, 0xe1, 0xbb, 0xc6, 0xc6, 0x58, 0x94, 0x2c, 0x9e, 0x35, 0xb6, 0xdf, 0x36, 0xbf, 0x4b,
|
||||
0xf0, 0xc9, 0xa0, 0xee, 0xcf, 0xc7, 0x5c, 0xa4, 0x97, 0xf5, 0x32, 0x5b, 0x7f, 0x41, 0x04, 0xfa,
|
||||
0xb3, 0x2b, 0x1e, 0x05, 0x6e, 0xd9, 0xc0, 0x38, 0x1b, 0xa7, 0x5d, 0xe9, 0x29, 0x2b, 0x32, 0x18,
|
||||
0xa7, 0x3d, 0x6d, 0x09, 0x10, 0x71, 0x1a, 0x05, 0xed, 0xe0, 0x74, 0xc5, 0x67, 0x2c, 0x5c, 0x99,
|
||||
0x33, 0xd6, 0xaf, 0x32, 0x67, 0xde, 0x47, 0x19, 0x59, 0xf4, 0xce, 0x11, 0x9b, 0x5d, 0xb0, 0xb2,
|
||||
0xba, 0x4a, 0x8b, 0xfd, 0x3a, 0xe1, 0x8a, 0xc5, 0x1c, 0x7e, 0xb6, 0x68, 0x89, 0x91, 0x41, 0x88,
|
||||
0xac, 0x94, 0x40, 0xed, 0x4c, 0x60, 0x81, 0x83, 0xea, 0x38, 0x9e, 0x31, 0x79, 0x67, 0x08, 0x98,
|
||||
0x09, 0x1c, 0x23, 0x0e, 0x44, 0xcc, 0x04, 0x24, 0xec, 0x7c, 0xdf, 0x65, 0x99, 0x53, 0x36, 0xad,
|
||||
0x7b, 0x58, 0x79, 0x12, 0x2f, 0x67, 0x2c, 0x17, 0xda, 0x24, 0xd8, 0x93, 0x77, 0x4c, 0xe2, 0x3c,
|
||||
0xb1, 0x27, 0xdf, 0x47, 0xcf, 0x09, 0x4d, 0xde, 0x83, 0x3f, 0xe1, 0xa5, 0x50, 0x7f, 0x60, 0xe7,
|
||||
0xbc, 0xcc, 0x40, 0x68, 0xf2, 0x1f, 0xaa, 0x47, 0x12, 0xa1, 0x29, 0xac, 0xe1, 0xdc, 0x4c, 0xef,
|
||||
0x95, 0xe1, 0x15, 0x2b, 0x4d, 0x3f, 0x79, 0x31, 0x8b, 0xd3, 0x4c, 0xf7, 0x86, 0x1f, 0x04, 0x6c,
|
||||
0x13, 0x3a, 0xc4, 0xcd, 0xf4, 0x7d, 0x75, 0x9d, 0xbb, 0xfc, 0xc3, 0x25, 0x04, 0xaf, 0x08, 0x3a,
|
||||
0xec, 0x13, 0xaf, 0x08, 0xba, 0xb5, 0xec, 0xca, 0xdd, 0xb2, 0x92, 0x5b, 0x4a, 0x62, 0x87, 0x27,
|
||||
0x70, 0xbf, 0xd0, 0xb1, 0x09, 0x40, 0x62, 0xe5, 0x1e, 0x54, 0xb0, 0xa9, 0x81, 0xc5, 0xf6, 0xd2,
|
||||
0x3c, 0xce, 0xd2, 0x9f, 0xc0, 0xb4, 0xde, 0xb1, 0xd3, 0x10, 0x44, 0x6a, 0x80, 0x93, 0x98, 0xab,
|
||||
0x7d, 0x26, 0xce, 0xd2, 0x3a, 0xf4, 0xaf, 0x05, 0x9e, 0x9b, 0x24, 0xba, 0x5d, 0x39, 0xa4, 0x73,
|
||||
0xfb, 0x2c, 0x7c, 0xac, 0xdb, 0x45, 0x31, 0xae, 0x67, 0xd5, 0x53, 0x36, 0x61, 0x69, 0x21, 0x86,
|
||||
0x9f, 0x84, 0x9f, 0x15, 0xc0, 0x89, 0x83, 0x16, 0x3d, 0xd4, 0x9c, 0xd7, 0xf7, 0x75, 0x2c, 0x19,
|
||||
0xab, 0xbf, 0x3c, 0x77, 0x5e, 0xb1, 0x52, 0x27, 0x1a, 0xfb, 0x4c, 0x80, 0xd1, 0xe9, 0x70, 0x23,
|
||||
0x07, 0xac, 0x2b, 0x4a, 0x8c, 0xce, 0xb0, 0x86, 0xdd, 0xec, 0x73, 0xb8, 0x53, 0x56, 0xf1, 0x6c,
|
||||
0xc1, 0xe4, 0x79, 0xc3, 0x0d, 0xd2, 0x98, 0x43, 0x11, 0x9b, 0x7d, 0x34, 0x6d, 0xb3, 0xb5, 0xb6,
|
||||
0xdb, 0xed, 0x7c, 0x79, 0x00, 0x8f, 0x4c, 0x20, 0x96, 0x24, 0x46, 0x64, 0x6b, 0x01, 0xdc, 0xd9,
|
||||
0x0c, 0x2f, 0x79, 0x9c, 0x4c, 0xe2, 0x4a, 0x9c, 0xc4, 0xcb, 0x8c, 0xc7, 0x89, 0x9c, 0xd7, 0xe1,
|
||||
0x66, 0x78, 0xc3, 0x8c, 0x5c, 0x88, 0xda, 0x0c, 0xa7, 0x60, 0x37, 0x3b, 0x93, 0x7f, 0x50, 0x4f,
|
||||
0x9f, 0xe5, 0x84, 0xd9, 0x99, 0x2c, 0x2f, 0x3c, 0xc7, 0xf9, 0x20, 0x0c, 0xd9, 0x6f, 0xd0, 0x94,
|
||||
0x48, 0xa6, 0x21, 0xf7, 0x30, 0x1d, 0x2f, 0x01, 0xf9, 0x20, 0x40, 0xd8, 0x5b, 0x3e, 0xd4, 0xef,
|
||||
0xcd, 0xdf, 0x84, 0x11, 0xfa, 0x8e, 0xee, 0x0d, 0x4c, 0xd7, 0x85, 0x46, 0xee, 0x65, 0x11, 0x9b,
|
||||
0x3d, 0x69, 0x9b, 0x66, 0xee, 0x5c, 0xc5, 0x62, 0x3b, 0x49, 0x8e, 0x58, 0x85, 0x7c, 0x50, 0x5e,
|
||||
0x0b, 0x47, 0x56, 0x4a, 0xa4, 0x99, 0x6d, 0xca, 0x76, 0xf4, 0x5a, 0xf6, 0x22, 0x49, 0x85, 0x96,
|
||||
0x35, 0x27, 0xa4, 0x37, 0xda, 0x06, 0xda, 0x14, 0x51, 0x2b, 0x9a, 0xb6, 0xb1, 0xbc, 0x66, 0xce,
|
||||
0xf8, 0x74, 0x9a, 0x31, 0x0d, 0x9d, 0xb2, 0x58, 0x5d, 0x51, 0xb8, 0xd5, 0xb6, 0x85, 0x82, 0x44,
|
||||
0x2c, 0x0f, 0x2a, 0xd8, 0x34, 0xb2, 0xc6, 0xd4, 0x2b, 0xa9, 0xe6, 0xc1, 0xae, 0xb6, 0xcd, 0x78,
|
||||
0x00, 0x91, 0x46, 0xa2, 0xa0, 0xfd, 0xee, 0xad, 0x16, 0xef, 0xb3, 0xe6, 0x49, 0xc0, 0x0b, 0x9d,
|
||||
0xa4, 0xb2, 0x23, 0x26, 0xbe, 0x7b, 0x43, 0x30, 0xbb, 0x4e, 0x00, 0x1e, 0x9e, 0x2f, 0x0f, 0x12,
|
||||
0xb8, 0x4e, 0x80, 0xfa, 0x92, 0x21, 0xd6, 0x09, 0x14, 0xeb, 0x37, 0x9d, 0xd9, 0xf7, 0x3a, 0x8c,
|
||||
0x2b, 0x5b, 0x39, 0xa4, 0xe9, 0x50, 0x30, 0xd4, 0x74, 0x94, 0x82, 0xff, 0x48, 0xdd, 0xad, 0x35,
|
||||
0xe4, 0x91, 0x62, 0xfb, 0x6a, 0x2b, 0x5d, 0x98, 0x8d, 0x4b, 0x66, 0x3d, 0x29, 0x8f, 0x2c, 0xe1,
|
||||
0x7f, 0x9b, 0x40, 0x09, 0x89, 0xb8, 0xd4, 0x82, 0x94, 0xed, 0xe7, 0x1f, 0xfc, 0xd7, 0x57, 0x77,
|
||||
0x06, 0x3f, 0xff, 0xea, 0xce, 0xe0, 0x7f, 0xbe, 0xba, 0x33, 0xf8, 0xd9, 0xd7, 0x77, 0xbe, 0xf5,
|
||||
0xf3, 0xaf, 0xef, 0x7c, 0xeb, 0xbf, 0xbf, 0xbe, 0xf3, 0xad, 0x2f, 0xdf, 0xd2, 0x7f, 0x68, 0xf5,
|
||||
0xe2, 0x17, 0xe4, 0x9f, 0x4b, 0x7d, 0xf6, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xab, 0xf4, 0x52,
|
||||
0x6c, 0x8c, 0x75, 0x00, 0x00,
|
||||
// 5307 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x9d, 0xdd, 0x6f, 0x1d, 0x49,
|
||||
0x56, 0xc0, 0xf7, 0xbe, 0x30, 0xd0, 0xcb, 0x0e, 0x70, 0x07, 0x86, 0xd9, 0x61, 0x37, 0xc9, 0x64,
|
||||
0x92, 0x38, 0x89, 0xed, 0xeb, 0x4c, 0x32, 0x5f, 0xec, 0x22, 0x81, 0x63, 0xc7, 0x1e, 0xb3, 0xb6,
|
||||
0x63, 0x7c, 0xaf, 0x13, 0x69, 0x24, 0x24, 0xda, 0xb7, 0xcb, 0xd7, 0x8d, 0xfb, 0x76, 0xf5, 0x76,
|
||||
0xd7, 0xbd, 0xce, 0x5d, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2b, 0xbe, 0xc4, 0x1b, 0x12, 0x7f,
|
||||
0x01, 0x7f, 0x06, 0x8f, 0xfb, 0xc8, 0x23, 0x9a, 0x79, 0xe3, 0x9d, 0x77, 0xd4, 0x55, 0xd5, 0xf5,
|
||||
0x71, 0xfa, 0x9c, 0xea, 0xf6, 0xf0, 0x94, 0xe8, 0x9e, 0xdf, 0x39, 0xa7, 0x3e, 0x4f, 0x9d, 0xaa,
|
||||
0xae, 0x6e, 0x47, 0xb7, 0x8b, 0xf3, 0xad, 0xa2, 0xe4, 0x82, 0x57, 0x5b, 0x15, 0x2b, 0x97, 0xe9,
|
||||
0x94, 0x35, 0xff, 0x8e, 0xe4, 0xcf, 0xc3, 0xb7, 0xe2, 0x7c, 0x25, 0x56, 0x05, 0x7b, 0xff, 0x3d,
|
||||
0x4b, 0x4e, 0xf9, 0x7c, 0x1e, 0xe7, 0x49, 0xa5, 0x90, 0xf7, 0xdf, 0xb5, 0x12, 0xb6, 0x64, 0xb9,
|
||||
0xd0, 0xbf, 0x3f, 0xfd, 0xdf, 0xff, 0x19, 0x44, 0x6f, 0xef, 0x64, 0x29, 0xcb, 0xc5, 0x8e, 0xd6,
|
||||
0x18, 0x7e, 0x19, 0x7d, 0x67, 0xbb, 0x28, 0xf6, 0x99, 0x78, 0xc5, 0xca, 0x2a, 0xe5, 0xf9, 0xf0,
|
||||
0xc3, 0x91, 0x76, 0x30, 0x3a, 0x2d, 0xa6, 0xa3, 0xed, 0xa2, 0x18, 0x59, 0xe1, 0xe8, 0x94, 0xfd,
|
||||
0x78, 0xc1, 0x2a, 0xf1, 0xfe, 0xbd, 0x30, 0x54, 0x15, 0x3c, 0xaf, 0xd8, 0xf0, 0x22, 0xfa, 0x95,
|
||||
0xed, 0xa2, 0x18, 0x33, 0xb1, 0xcb, 0xea, 0x0a, 0x8c, 0x45, 0x2c, 0xd8, 0x70, 0xad, 0xa5, 0xea,
|
||||
0x03, 0xc6, 0xc7, 0xc3, 0x6e, 0x50, 0xfb, 0x99, 0x44, 0xdf, 0xae, 0xfd, 0x5c, 0x2e, 0x44, 0xc2,
|
||||
0xaf, 0xf3, 0xe1, 0x07, 0x6d, 0x45, 0x2d, 0x32, 0xb6, 0xef, 0x86, 0x10, 0x6d, 0xf5, 0x75, 0xf4,
|
||||
0x8b, 0xaf, 0xe3, 0x2c, 0x63, 0x62, 0xa7, 0x64, 0x75, 0xc1, 0x7d, 0x1d, 0x25, 0x1a, 0x29, 0x99,
|
||||
0xb1, 0xfb, 0x61, 0x90, 0xd1, 0x86, 0xbf, 0x8c, 0xbe, 0xa3, 0x24, 0xa7, 0x6c, 0xca, 0x97, 0xac,
|
||||
0x1c, 0xa2, 0x5a, 0x5a, 0x48, 0x34, 0x79, 0x0b, 0x82, 0xb6, 0x77, 0x78, 0xbe, 0x64, 0xa5, 0xc0,
|
||||
0x6d, 0x6b, 0x61, 0xd8, 0xb6, 0x85, 0xb4, 0xed, 0xbf, 0x1e, 0x44, 0xdf, 0xdb, 0x9e, 0x4e, 0xf9,
|
||||
0x22, 0x17, 0x87, 0x7c, 0x1a, 0x67, 0x87, 0x69, 0x7e, 0x75, 0xcc, 0xae, 0x77, 0x2e, 0x6b, 0x3e,
|
||||
0x9f, 0xb1, 0xe1, 0x33, 0xbf, 0x55, 0x15, 0x3a, 0x32, 0xec, 0xc8, 0x85, 0x8d, 0xef, 0x8f, 0x6f,
|
||||
0xa6, 0xa4, 0xcb, 0xf2, 0xf7, 0x83, 0xe8, 0x16, 0x2c, 0xcb, 0x98, 0x67, 0x4b, 0x66, 0x4b, 0xf3,
|
||||
0x49, 0x87, 0x61, 0x1f, 0x37, 0xe5, 0xf9, 0xf4, 0xa6, 0x6a, 0xba, 0x44, 0x59, 0xf4, 0x8e, 0x3b,
|
||||
0x5c, 0xc6, 0xac, 0x92, 0xd3, 0xe9, 0x11, 0x3d, 0x22, 0x34, 0x62, 0x3c, 0x3f, 0xee, 0x83, 0x6a,
|
||||
0x6f, 0x69, 0x34, 0xd4, 0xde, 0x32, 0x5e, 0x19, 0x67, 0x0f, 0x51, 0x0b, 0x0e, 0x61, 0x7c, 0x3d,
|
||||
0xea, 0x41, 0x6a, 0x57, 0x7f, 0x10, 0xfd, 0xd2, 0x6b, 0x5e, 0x5e, 0x55, 0x45, 0x3c, 0x65, 0x7a,
|
||||
0x2a, 0xdc, 0xf7, 0xb5, 0x1b, 0x29, 0x9c, 0x0d, 0x0f, 0xba, 0x30, 0x67, 0xd0, 0x36, 0xc2, 0x97,
|
||||
0x05, 0x83, 0x31, 0xc8, 0x2a, 0xd6, 0x42, 0x6a, 0xd0, 0x42, 0x48, 0xdb, 0xbe, 0x8a, 0x86, 0xd6,
|
||||
0xf6, 0xf9, 0x1f, 0xb2, 0xa9, 0xd8, 0x4e, 0x12, 0xd8, 0x2b, 0x56, 0x57, 0x12, 0xa3, 0xed, 0x24,
|
||||
0xa1, 0x7a, 0x05, 0x47, 0xb5, 0xb3, 0xeb, 0xe8, 0x5d, 0xe0, 0xec, 0x30, 0xad, 0xa4, 0xc3, 0xcd,
|
||||
0xb0, 0x15, 0x8d, 0x19, 0xa7, 0xa3, 0xbe, 0xb8, 0x76, 0xfc, 0xa7, 0x83, 0xe8, 0xbb, 0x88, 0xe7,
|
||||
0x53, 0x36, 0xe7, 0x4b, 0x36, 0x7c, 0xd2, 0x6d, 0x4d, 0x91, 0xc6, 0xff, 0x47, 0x37, 0xd0, 0x40,
|
||||
0x86, 0xc9, 0x98, 0x65, 0x6c, 0x2a, 0xc8, 0x61, 0xa2, 0xc4, 0x9d, 0xc3, 0xc4, 0x60, 0xce, 0x0c,
|
||||
0x6b, 0x84, 0xfb, 0x4c, 0xec, 0x2c, 0xca, 0x92, 0xe5, 0x82, 0xec, 0x4b, 0x8b, 0x74, 0xf6, 0xa5,
|
||||
0x87, 0x22, 0xf5, 0xd9, 0x67, 0x62, 0x3b, 0xcb, 0xc8, 0xfa, 0x28, 0x71, 0x67, 0x7d, 0x0c, 0xa6,
|
||||
0x3d, 0x4c, 0xa3, 0x5f, 0x76, 0x5a, 0x4c, 0x1c, 0xe4, 0x17, 0x7c, 0x48, 0xb7, 0x85, 0x94, 0x1b,
|
||||
0x1f, 0x6b, 0x9d, 0x1c, 0x52, 0x8d, 0x17, 0x6f, 0x0a, 0x5e, 0xd2, 0xdd, 0xa2, 0xc4, 0x9d, 0xd5,
|
||||
0x30, 0x98, 0xf6, 0xf0, 0xfb, 0xd1, 0xdb, 0x3a, 0x4a, 0x36, 0xeb, 0xd9, 0x3d, 0x34, 0x84, 0xc2,
|
||||
0x05, 0xed, 0x7e, 0x07, 0x65, 0x83, 0x83, 0x96, 0xe9, 0xe0, 0xf3, 0x21, 0xaa, 0x07, 0x42, 0xcf,
|
||||
0xbd, 0x30, 0xd4, 0xb2, 0xbd, 0xcb, 0x32, 0x46, 0xda, 0x56, 0xc2, 0x0e, 0xdb, 0x06, 0xd2, 0xb6,
|
||||
0xcb, 0xe8, 0xd7, 0x4c, 0xb3, 0xd4, 0xeb, 0xa8, 0x94, 0xd7, 0x41, 0x7a, 0x9d, 0xa8, 0xb7, 0x0b,
|
||||
0x19, 0x5f, 0x1b, 0xfd, 0xe0, 0x56, 0x7d, 0xf4, 0x0c, 0xc4, 0xeb, 0x03, 0xe6, 0xdf, 0xbd, 0x30,
|
||||
0xa4, 0x6d, 0xff, 0xcd, 0x20, 0xfa, 0xbe, 0x96, 0xbd, 0xc8, 0xe3, 0xf3, 0x8c, 0xc9, 0x25, 0xf1,
|
||||
0x98, 0x89, 0x6b, 0x5e, 0x5e, 0x8d, 0x57, 0xf9, 0x94, 0x58, 0xfe, 0x71, 0xb8, 0x63, 0xf9, 0x27,
|
||||
0x95, 0x9c, 0x8c, 0x4f, 0x57, 0x54, 0xf0, 0x02, 0x66, 0x7c, 0x4d, 0x0d, 0x04, 0x2f, 0xa8, 0x8c,
|
||||
0xcf, 0x47, 0x5a, 0x56, 0x8f, 0xea, 0xb0, 0x89, 0x5b, 0x3d, 0x72, 0xe3, 0xe4, 0xdd, 0x10, 0x62,
|
||||
0xc3, 0x56, 0x33, 0x80, 0x79, 0x7e, 0x91, 0xce, 0xce, 0x8a, 0xa4, 0x1e, 0xc6, 0x8f, 0xf0, 0x11,
|
||||
0xea, 0x20, 0x44, 0xd8, 0x22, 0x50, 0xed, 0xed, 0xef, 0x6c, 0x62, 0xa4, 0xa7, 0xd2, 0x5e, 0xc9,
|
||||
0xe7, 0x87, 0x6c, 0x16, 0x4f, 0x57, 0x7a, 0xfe, 0x7f, 0x1c, 0x9a, 0x78, 0x90, 0x36, 0x85, 0xf8,
|
||||
0xe4, 0x86, 0x5a, 0xba, 0x3c, 0xff, 0x36, 0x88, 0xee, 0x35, 0xd5, 0xbf, 0x8c, 0xf3, 0x19, 0xd3,
|
||||
0xfd, 0xa9, 0x4a, 0xbf, 0x9d, 0x27, 0xa7, 0xac, 0x12, 0x71, 0x29, 0x86, 0x3f, 0xc0, 0x2b, 0x19,
|
||||
0xd2, 0x31, 0x65, 0xfb, 0xe1, 0x37, 0xd2, 0xb5, 0xbd, 0x3e, 0xae, 0x03, 0x9b, 0x0e, 0x01, 0x7e,
|
||||
0xaf, 0x4b, 0x09, 0x0c, 0x00, 0x77, 0x43, 0x88, 0xed, 0x75, 0x29, 0x38, 0xc8, 0x97, 0xa9, 0x60,
|
||||
0xfb, 0x2c, 0x67, 0x65, 0xbb, 0xd7, 0x95, 0xaa, 0x8f, 0x10, 0xbd, 0x4e, 0xa0, 0x36, 0xd8, 0x78,
|
||||
0xde, 0xcc, 0xe2, 0xb8, 0x1e, 0x30, 0xd2, 0x5a, 0x1e, 0x37, 0xfa, 0xc1, 0x76, 0x77, 0xe7, 0xf8,
|
||||
0x3c, 0x65, 0x4b, 0x7e, 0x05, 0x77, 0x77, 0xae, 0x09, 0x05, 0x10, 0xbb, 0x3b, 0x14, 0xb4, 0x2b,
|
||||
0x98, 0xe3, 0xe7, 0x55, 0xca, 0xae, 0xc1, 0x0a, 0xe6, 0x2a, 0xd7, 0x62, 0x62, 0x05, 0x43, 0x30,
|
||||
0xed, 0xe1, 0x38, 0xfa, 0x05, 0x29, 0xfc, 0x5d, 0x9e, 0xe6, 0xc3, 0xdb, 0x88, 0x52, 0x2d, 0x30,
|
||||
0x56, 0xef, 0xd0, 0x00, 0x28, 0x71, 0xfd, 0xeb, 0x4e, 0x9c, 0x4f, 0x59, 0x86, 0x96, 0xd8, 0x8a,
|
||||
0x83, 0x25, 0xf6, 0x30, 0x9b, 0x3a, 0x48, 0x61, 0x1d, 0xbf, 0xc6, 0x97, 0x71, 0x99, 0xe6, 0xb3,
|
||||
0x21, 0xa6, 0xeb, 0xc8, 0x89, 0xd4, 0x01, 0xe3, 0xc0, 0x10, 0xd6, 0x8a, 0xdb, 0x45, 0x51, 0xd6,
|
||||
0x61, 0x11, 0x1b, 0xc2, 0x3e, 0x12, 0x1c, 0xc2, 0x2d, 0x14, 0xf7, 0xb6, 0xcb, 0xa6, 0x59, 0x9a,
|
||||
0x07, 0xbd, 0x69, 0xa4, 0x8f, 0x37, 0x8b, 0x82, 0xc1, 0x7b, 0xc8, 0xe2, 0x25, 0x6b, 0x6a, 0x86,
|
||||
0xb5, 0x8c, 0x0b, 0x04, 0x07, 0x2f, 0x00, 0xed, 0x3e, 0x4d, 0x8a, 0x8f, 0xe2, 0x2b, 0x56, 0x37,
|
||||
0x30, 0xab, 0xd7, 0xb5, 0x21, 0xa6, 0xef, 0x11, 0xc4, 0x3e, 0x0d, 0x27, 0xb5, 0xab, 0x45, 0xf4,
|
||||
0xae, 0x94, 0x9f, 0xc4, 0xa5, 0x48, 0xa7, 0x69, 0x11, 0xe7, 0x4d, 0xfe, 0x8f, 0xcd, 0xeb, 0x16,
|
||||
0x65, 0x5c, 0x6e, 0xf6, 0xa4, 0xb5, 0xdb, 0x7f, 0x19, 0x44, 0x1f, 0x40, 0xbf, 0x27, 0xac, 0x9c,
|
||||
0xa7, 0x72, 0x1b, 0x59, 0xa9, 0x20, 0x3c, 0xfc, 0x2c, 0x6c, 0xb4, 0xa5, 0x60, 0x4a, 0xf3, 0xf9,
|
||||
0xcd, 0x15, 0x75, 0xc1, 0x7e, 0x2f, 0x8a, 0xd4, 0x76, 0x45, 0x6e, 0x29, 0xfd, 0x59, 0xab, 0xf7,
|
||||
0x31, 0xde, 0x7e, 0xf2, 0x83, 0x00, 0x61, 0x97, 0x0a, 0xf5, 0xbb, 0xdc, 0x29, 0x0f, 0x51, 0x0d,
|
||||
0x29, 0x22, 0x96, 0x0a, 0x80, 0xc0, 0x82, 0x8e, 0x2f, 0xf9, 0x35, 0x5e, 0xd0, 0x5a, 0x12, 0x2e,
|
||||
0xa8, 0x26, 0xec, 0xd9, 0x95, 0x2e, 0x28, 0x76, 0x76, 0xd5, 0x14, 0x23, 0x74, 0x76, 0x05, 0x19,
|
||||
0x6d, 0x98, 0x47, 0xbf, 0xea, 0x1a, 0x7e, 0xce, 0xf9, 0xd5, 0x3c, 0x2e, 0xaf, 0x86, 0x8f, 0x69,
|
||||
0xe5, 0x86, 0x31, 0x8e, 0xd6, 0x7b, 0xb1, 0x36, 0x2c, 0xb8, 0x0e, 0xeb, 0x44, 0xe3, 0xac, 0xcc,
|
||||
0x40, 0x58, 0xf0, 0x6c, 0x68, 0x84, 0x08, 0x0b, 0x04, 0x6a, 0x23, 0xb7, 0xeb, 0x6d, 0xcc, 0xe0,
|
||||
0x6e, 0xc9, 0x53, 0x1f, 0x33, 0x6a, 0xb7, 0x84, 0x60, 0x70, 0x08, 0xed, 0x97, 0x71, 0x71, 0x89,
|
||||
0x0f, 0x21, 0x29, 0x0a, 0x0f, 0xa1, 0x06, 0x81, 0xfd, 0x3d, 0x66, 0x71, 0x39, 0xbd, 0xc4, 0xfb,
|
||||
0x5b, 0xc9, 0xc2, 0xfd, 0x6d, 0x18, 0xd8, 0xdf, 0x4a, 0xf0, 0x3a, 0x15, 0x97, 0x47, 0x4c, 0xc4,
|
||||
0x78, 0x7f, 0xfb, 0x4c, 0xb8, 0xbf, 0x5b, 0xac, 0xcd, 0x64, 0x5c, 0x87, 0xe3, 0xc5, 0x79, 0x35,
|
||||
0x2d, 0xd3, 0x73, 0x36, 0x0c, 0x58, 0x31, 0x10, 0x91, 0xc9, 0x90, 0xb0, 0xf6, 0xf9, 0xd3, 0x41,
|
||||
0x74, 0xbb, 0xe9, 0x76, 0x5e, 0x55, 0x6a, 0x65, 0x05, 0xee, 0x3f, 0xc1, 0xfb, 0x97, 0xc0, 0x89,
|
||||
0xd3, 0xc4, 0x1e, 0x6a, 0x4e, 0x54, 0xc5, 0x8b, 0x74, 0x96, 0x57, 0xa6, 0x50, 0x9f, 0xf5, 0xb1,
|
||||
0xee, 0x28, 0x10, 0x51, 0xb5, 0x97, 0xa2, 0x5d, 0xd0, 0x74, 0xff, 0x34, 0xb2, 0x83, 0xa4, 0x02,
|
||||
0x0b, 0x5a, 0xd3, 0xde, 0x0e, 0x41, 0x2c, 0x68, 0x38, 0x09, 0x87, 0xc2, 0x7e, 0xc9, 0x17, 0x45,
|
||||
0xd5, 0x31, 0x14, 0x00, 0x14, 0x1e, 0x0a, 0x6d, 0x58, 0xfb, 0x7c, 0x13, 0xfd, 0xba, 0x3b, 0xfc,
|
||||
0xdc, 0xc6, 0xde, 0xa4, 0xc7, 0x14, 0xd6, 0xc4, 0xa3, 0xbe, 0xb8, 0x4d, 0xe9, 0x1a, 0xcf, 0x62,
|
||||
0x97, 0x89, 0x38, 0xcd, 0xaa, 0xe1, 0x03, 0xdc, 0x46, 0x23, 0x27, 0x52, 0x3a, 0x8c, 0x83, 0xf1,
|
||||
0x6d, 0x77, 0x51, 0x64, 0xe9, 0xb4, 0x7d, 0x96, 0xab, 0x75, 0x8d, 0x38, 0x1c, 0xdf, 0x5c, 0x0c,
|
||||
0xc6, 0xeb, 0x31, 0x13, 0xea, 0x3f, 0x93, 0x55, 0xc1, 0xf0, 0x78, 0xed, 0x21, 0xe1, 0x78, 0x0d,
|
||||
0x51, 0x58, 0x9f, 0x31, 0x13, 0x87, 0xf1, 0x8a, 0x2f, 0x88, 0x78, 0x6d, 0xc4, 0xe1, 0xfa, 0xb8,
|
||||
0x98, 0xcd, 0xaa, 0x8c, 0x87, 0x83, 0x5c, 0xb0, 0x32, 0x8f, 0xb3, 0xbd, 0x2c, 0x9e, 0x55, 0x43,
|
||||
0x22, 0xc6, 0xf8, 0x14, 0x91, 0x55, 0xd1, 0x34, 0xd2, 0x8c, 0x07, 0xd5, 0x5e, 0xbc, 0xe4, 0x65,
|
||||
0x2a, 0xe8, 0x66, 0xb4, 0x48, 0x67, 0x33, 0x7a, 0x28, 0xea, 0x6d, 0xbb, 0x9c, 0x5e, 0xa6, 0x4b,
|
||||
0x96, 0x04, 0xbc, 0x35, 0x48, 0x0f, 0x6f, 0x0e, 0x8a, 0x74, 0xda, 0x98, 0x2f, 0xca, 0x29, 0x23,
|
||||
0x3b, 0x4d, 0x89, 0x3b, 0x3b, 0xcd, 0x60, 0xda, 0xc3, 0x5f, 0x0c, 0xa2, 0xdf, 0x50, 0x52, 0xf7,
|
||||
0x80, 0x75, 0x37, 0xae, 0x2e, 0xcf, 0x79, 0x5c, 0x26, 0xc3, 0x8f, 0x30, 0x3b, 0x28, 0x6a, 0x5c,
|
||||
0x3f, 0xbd, 0x89, 0x0a, 0x6c, 0xd6, 0xc3, 0xb4, 0x72, 0x66, 0x1c, 0xda, 0xac, 0x1e, 0x12, 0x6e,
|
||||
0x56, 0x88, 0xc2, 0x00, 0x22, 0xe5, 0xea, 0x30, 0xe3, 0x01, 0xa9, 0xef, 0x9f, 0x68, 0xac, 0x75,
|
||||
0x72, 0x30, 0x3e, 0xd6, 0x42, 0x7f, 0xb4, 0x6c, 0x52, 0x36, 0xf0, 0x11, 0x33, 0xea, 0x8b, 0x93,
|
||||
0x9e, 0xcd, 0xac, 0x08, 0x7b, 0x6e, 0xcd, 0x8c, 0x51, 0x5f, 0x9c, 0xf0, 0xec, 0x84, 0xb5, 0x90,
|
||||
0x67, 0x24, 0xb4, 0x8d, 0xfa, 0xe2, 0x30, 0xfb, 0xd2, 0x4c, 0xb3, 0x2e, 0x3c, 0x0e, 0xd8, 0x81,
|
||||
0x6b, 0xc3, 0x7a, 0x2f, 0x56, 0x3b, 0xfc, 0xab, 0x41, 0xf4, 0x3d, 0xeb, 0xf1, 0x88, 0x27, 0xe9,
|
||||
0xc5, 0x4a, 0x41, 0xaf, 0xe2, 0x6c, 0xc1, 0xaa, 0xe1, 0x53, 0xca, 0x5a, 0x9b, 0x35, 0x25, 0x78,
|
||||
0x76, 0x23, 0x1d, 0x38, 0x77, 0xb6, 0x8b, 0x22, 0x5b, 0x4d, 0xd8, 0xbc, 0xc8, 0xc8, 0xb9, 0xe3,
|
||||
0x21, 0xe1, 0xb9, 0x03, 0x51, 0x98, 0x95, 0x4f, 0x78, 0x9d, 0xf3, 0xa3, 0x59, 0xb9, 0x14, 0x85,
|
||||
0xb3, 0xf2, 0x06, 0x81, 0xb9, 0xd2, 0x84, 0xef, 0xf0, 0x2c, 0x63, 0x53, 0xd1, 0x7e, 0x48, 0x6b,
|
||||
0x34, 0x2d, 0x11, 0xce, 0x95, 0x00, 0x69, 0xcf, 0x33, 0x9a, 0x3d, 0x64, 0x5c, 0xb2, 0xe7, 0xab,
|
||||
0xc3, 0x34, 0xbf, 0x1a, 0xe2, 0x69, 0x81, 0x05, 0x88, 0xf3, 0x0c, 0x14, 0x84, 0x7b, 0xd5, 0xb3,
|
||||
0x3c, 0xe1, 0xf8, 0x5e, 0xb5, 0x96, 0x84, 0xf7, 0xaa, 0x9a, 0x80, 0x26, 0x4f, 0x19, 0x65, 0xb2,
|
||||
0x96, 0x84, 0x4d, 0x6a, 0x02, 0x0b, 0x85, 0xfa, 0xd4, 0x9b, 0x0c, 0x85, 0xe0, 0x9c, 0x7b, 0xad,
|
||||
0x93, 0x83, 0x23, 0xb4, 0xd9, 0xb4, 0xee, 0x31, 0x31, 0xbd, 0xc4, 0x47, 0xa8, 0x87, 0x84, 0x47,
|
||||
0x28, 0x44, 0x61, 0x95, 0x26, 0xdc, 0x6c, 0xba, 0x1f, 0xe0, 0xe3, 0xa3, 0xb5, 0xe1, 0x5e, 0xeb,
|
||||
0xe4, 0xe0, 0x36, 0xf2, 0x60, 0x2e, 0xdb, 0x0c, 0x1d, 0xe4, 0x4a, 0x16, 0xde, 0x46, 0x1a, 0x06,
|
||||
0x96, 0x5e, 0x09, 0xea, 0xe6, 0xc4, 0x4b, 0x6f, 0xe5, 0xe1, 0xd2, 0x7b, 0x9c, 0x76, 0xf2, 0x4f,
|
||||
0x66, 0x1b, 0xa7, 0xa4, 0xc7, 0xbc, 0x9e, 0x23, 0xaf, 0xe2, 0x2c, 0x4d, 0x62, 0xc1, 0x26, 0xfc,
|
||||
0x8a, 0xe5, 0xf8, 0x8e, 0x49, 0x97, 0x56, 0xf1, 0x23, 0x4f, 0x21, 0xbc, 0x63, 0x0a, 0x2b, 0xc2,
|
||||
0x71, 0xa2, 0xe8, 0xb3, 0x8a, 0xed, 0xc4, 0x15, 0x11, 0xc9, 0x3c, 0x24, 0x3c, 0x4e, 0x20, 0x0a,
|
||||
0xf3, 0x55, 0x25, 0x7f, 0xf1, 0xa6, 0x60, 0x65, 0xca, 0xf2, 0x29, 0xc3, 0xf3, 0x55, 0x48, 0x85,
|
||||
0xf3, 0x55, 0x84, 0x86, 0x7b, 0xb5, 0xdd, 0x58, 0xb0, 0xe7, 0xab, 0x49, 0x3a, 0x67, 0x95, 0x88,
|
||||
0xe7, 0x05, 0xbe, 0x57, 0x03, 0x50, 0x78, 0xaf, 0xd6, 0x86, 0x5b, 0x47, 0x43, 0x26, 0x20, 0xb6,
|
||||
0xef, 0x76, 0x40, 0x22, 0x70, 0xb7, 0x83, 0x40, 0x61, 0xc3, 0x5a, 0x00, 0x3d, 0x5e, 0x6d, 0x59,
|
||||
0x09, 0x1e, 0xaf, 0xd2, 0x74, 0xeb, 0xc0, 0xcd, 0x30, 0xe3, 0x7a, 0x6a, 0x76, 0x14, 0x7d, 0xec,
|
||||
0x4e, 0xd1, 0xf5, 0x5e, 0x2c, 0x7e, 0xc2, 0x77, 0xca, 0xb2, 0x58, 0x2e, 0x5b, 0x81, 0x63, 0xb4,
|
||||
0x86, 0xe9, 0x73, 0xc2, 0xe7, 0xb0, 0xda, 0xe1, 0x9f, 0x0d, 0xa2, 0xf7, 0x31, 0x8f, 0x2f, 0x0b,
|
||||
0xe9, 0xf7, 0x49, 0xb7, 0x2d, 0x45, 0x12, 0x97, 0x57, 0xc2, 0x1a, 0xba, 0x0c, 0x7f, 0x14, 0xbd,
|
||||
0xd7, 0x88, 0xec, 0xdd, 0x16, 0x5d, 0x00, 0x3f, 0x69, 0x33, 0xe5, 0x87, 0x9c, 0x71, 0xbf, 0xd5,
|
||||
0x9b, 0xb7, 0xfb, 0x21, 0xbf, 0x5c, 0x15, 0xd8, 0x0f, 0x19, 0x1b, 0x5a, 0x4c, 0xec, 0x87, 0x10,
|
||||
0xcc, 0xce, 0x4e, 0xb7, 0x7a, 0xaf, 0x53, 0x71, 0x29, 0xf3, 0x2d, 0x30, 0x3b, 0xbd, 0xb2, 0x1a,
|
||||
0x88, 0x98, 0x9d, 0x24, 0x0c, 0x33, 0x92, 0x06, 0xac, 0xe7, 0x26, 0x16, 0xcb, 0x8d, 0x21, 0x77,
|
||||
0x66, 0x3e, 0xec, 0x06, 0xe1, 0x78, 0x6d, 0xc4, 0x7a, 0xeb, 0xf3, 0x38, 0x64, 0x01, 0x6c, 0x7f,
|
||||
0xd6, 0x7b, 0xb1, 0xda, 0xe1, 0x9f, 0x44, 0xdf, 0x6d, 0x55, 0x6c, 0x8f, 0xc5, 0x62, 0x51, 0xb2,
|
||||
0x64, 0xb8, 0xd5, 0x51, 0xee, 0x06, 0x34, 0xae, 0x9f, 0xf4, 0x57, 0x68, 0xe5, 0xe8, 0x0d, 0xa7,
|
||||
0x86, 0x95, 0x29, 0xc3, 0xd3, 0x90, 0x49, 0x9f, 0x0d, 0xe6, 0xe8, 0xb4, 0x4e, 0x6b, 0x9b, 0xed,
|
||||
0x8e, 0xae, 0xed, 0x65, 0x9c, 0x66, 0xf2, 0x31, 0xd7, 0x47, 0x21, 0xa3, 0x1e, 0x1a, 0xdc, 0x66,
|
||||
0x93, 0x2a, 0xad, 0xc8, 0x2c, 0xe7, 0xb8, 0xb3, 0x3d, 0xdb, 0xa0, 0x23, 0x01, 0xb2, 0x3b, 0xdb,
|
||||
0xec, 0x49, 0x6b, 0xb7, 0xa2, 0x59, 0xf2, 0xea, 0x9f, 0xdd, 0x41, 0x8e, 0x79, 0xd5, 0xaa, 0xc8,
|
||||
0x48, 0xdf, 0xec, 0x49, 0x6b, 0xaf, 0x7f, 0x1c, 0xbd, 0xd7, 0xf6, 0xaa, 0x17, 0xa2, 0xad, 0x4e,
|
||||
0x53, 0x60, 0x2d, 0x7a, 0xd2, 0x5f, 0x41, 0xbb, 0xff, 0x57, 0x73, 0x2e, 0xad, 0xfc, 0x4f, 0xf9,
|
||||
0x7c, 0xce, 0xf2, 0x84, 0x25, 0x8d, 0x46, 0x55, 0xef, 0x9f, 0x3e, 0xa7, 0xed, 0x1a, 0x85, 0x91,
|
||||
0xab, 0x61, 0x4a, 0xf4, 0x9b, 0xdf, 0x40, 0x53, 0x17, 0xed, 0x3f, 0x06, 0xd1, 0x23, 0xb4, 0x68,
|
||||
0xcd, 0xc0, 0xf5, 0x8a, 0xf8, 0x3b, 0x7d, 0x1c, 0x61, 0x9a, 0xa6, 0xa8, 0xdb, 0xff, 0x0f, 0x0b,
|
||||
0x76, 0x83, 0xf8, 0x45, 0x5a, 0x09, 0x5e, 0xae, 0xc6, 0x97, 0xfc, 0xba, 0xb9, 0x81, 0xef, 0xc7,
|
||||
0x3e, 0x0d, 0x8c, 0x1c, 0x82, 0xd8, 0x20, 0xe2, 0x64, 0xcb, 0x95, 0xbd, 0xa9, 0x5f, 0x11, 0xae,
|
||||
0x1c, 0xa2, 0xc3, 0x95, 0x4f, 0xda, 0xc8, 0xdf, 0xd4, 0xca, 0xbe, 0x56, 0xb0, 0x86, 0x17, 0xb5,
|
||||
0xfd, 0x6a, 0xc1, 0xc3, 0x6e, 0xd0, 0xe6, 0x7f, 0x5a, 0xbc, 0x9b, 0x5e, 0x5c, 0x98, 0x3a, 0xe1,
|
||||
0x25, 0x75, 0x11, 0x22, 0xff, 0x23, 0x50, 0xbb, 0x85, 0xd9, 0x4b, 0x33, 0x26, 0x9f, 0x8f, 0xbc,
|
||||
0xbc, 0xb8, 0xc8, 0x78, 0x9c, 0x80, 0x2d, 0x4c, 0x2d, 0x1e, 0xb9, 0x72, 0x62, 0x0b, 0x83, 0x71,
|
||||
0xf6, 0x02, 0x5f, 0x2d, 0xad, 0x47, 0x50, 0x3e, 0x4d, 0x33, 0x78, 0x21, 0x51, 0x6a, 0x1a, 0x21,
|
||||
0x71, 0x81, 0xaf, 0x05, 0xd9, 0x34, 0xa3, 0x16, 0xd5, 0x41, 0xb4, 0x29, 0xff, 0xfd, 0xb6, 0xa2,
|
||||
0x23, 0x26, 0xd2, 0x0c, 0x04, 0xb3, 0x3b, 0xf9, 0x5a, 0x78, 0x56, 0x48, 0xe3, 0x77, 0xda, 0x5a,
|
||||
0x4a, 0x42, 0xec, 0xe4, 0x7d, 0xc2, 0xee, 0x48, 0xeb, 0xdf, 0x77, 0xf9, 0x75, 0x2e, 0x8d, 0xde,
|
||||
0x6d, 0xab, 0x34, 0x32, 0x62, 0x47, 0x0a, 0x19, 0x6d, 0xf8, 0x47, 0xd1, 0xcf, 0x4b, 0xc3, 0x25,
|
||||
0x2f, 0x86, 0xb7, 0x10, 0x85, 0xd2, 0xb9, 0x3b, 0x78, 0x9b, 0x94, 0xdb, 0x2b, 0xb0, 0x66, 0x6c,
|
||||
0x9c, 0x55, 0xf1, 0x8c, 0x0d, 0xef, 0x11, 0x3d, 0x2e, 0xa5, 0xc4, 0x15, 0xd8, 0x36, 0xe5, 0x8f,
|
||||
0x8a, 0x63, 0x9e, 0x68, 0xeb, 0x48, 0x0d, 0x8d, 0x30, 0x34, 0x2a, 0x5c, 0xc8, 0xa6, 0x86, 0xc7,
|
||||
0xf1, 0x32, 0x9d, 0x99, 0xe5, 0x5b, 0x05, 0xb2, 0x0a, 0xa4, 0x86, 0x96, 0x19, 0x39, 0x10, 0x91,
|
||||
0x1a, 0x92, 0xb0, 0xf6, 0xf9, 0x8f, 0x83, 0xe8, 0x8e, 0x65, 0xf6, 0x9b, 0xb3, 0xcf, 0x83, 0xfc,
|
||||
0x82, 0xd7, 0x89, 0xe4, 0x61, 0x9a, 0x5f, 0x55, 0xc3, 0x4f, 0x29, 0x93, 0x38, 0x6f, 0x8a, 0xf2,
|
||||
0xd9, 0x8d, 0xf5, 0xec, 0x1e, 0xa0, 0x39, 0x18, 0xb4, 0xb7, 0x03, 0x94, 0x06, 0xd8, 0x03, 0x98,
|
||||
0xf3, 0x43, 0xc8, 0x11, 0x7b, 0x80, 0x10, 0x6f, 0xbb, 0xd8, 0x38, 0xcf, 0x78, 0x0e, 0xbb, 0xd8,
|
||||
0x5a, 0xa8, 0x85, 0x44, 0x17, 0xb7, 0x20, 0x1b, 0x8f, 0x1b, 0x91, 0x3a, 0xc3, 0xda, 0xce, 0x32,
|
||||
0x10, 0x8f, 0x8d, 0xaa, 0x01, 0x88, 0x78, 0x8c, 0x82, 0xda, 0xcf, 0x69, 0xf4, 0xed, 0xba, 0x49,
|
||||
0x4f, 0x4a, 0xb6, 0x4c, 0x19, 0xbc, 0xc8, 0xe2, 0x48, 0x88, 0xf9, 0xef, 0x13, 0x76, 0x66, 0x9d,
|
||||
0xe5, 0x55, 0x91, 0xc5, 0xd5, 0xa5, 0xbe, 0xda, 0xe0, 0xd7, 0xb9, 0x11, 0xc2, 0xcb, 0x0d, 0xf7,
|
||||
0x3b, 0x28, 0x1b, 0xd4, 0x1b, 0x99, 0x09, 0x31, 0x0f, 0x70, 0xd5, 0x56, 0x98, 0x59, 0xeb, 0xe4,
|
||||
0xec, 0xf3, 0x83, 0xfd, 0x38, 0xcb, 0x58, 0xb9, 0x6a, 0x64, 0x47, 0x71, 0x9e, 0x5e, 0xb0, 0x4a,
|
||||
0x80, 0xe7, 0x07, 0x9a, 0x1a, 0x41, 0x8c, 0x78, 0x7e, 0x10, 0xc0, 0xed, 0xde, 0x08, 0x78, 0x3e,
|
||||
0xc8, 0x13, 0xf6, 0x06, 0xec, 0x8d, 0xa0, 0x1d, 0xc9, 0x10, 0x7b, 0x23, 0x8a, 0xb5, 0xe7, 0xe8,
|
||||
0xcf, 0x33, 0x3e, 0xbd, 0xd2, 0x4b, 0x80, 0xdf, 0xc1, 0x52, 0x02, 0xd7, 0x80, 0xbb, 0x21, 0xc4,
|
||||
0x2e, 0x02, 0x52, 0x70, 0xca, 0x8a, 0x2c, 0x9e, 0xc2, 0xdb, 0x4c, 0x4a, 0x47, 0xcb, 0x88, 0x45,
|
||||
0x00, 0x32, 0xa0, 0xb8, 0xfa, 0x96, 0x14, 0x56, 0x5c, 0x70, 0x49, 0xea, 0x6e, 0x08, 0xb1, 0xcb,
|
||||
0xa0, 0x14, 0x8c, 0x8b, 0x2c, 0x15, 0x60, 0x1a, 0x28, 0x0d, 0x29, 0x21, 0xa6, 0x81, 0x4f, 0x00,
|
||||
0x93, 0x47, 0xac, 0x9c, 0x31, 0xd4, 0xa4, 0x94, 0x04, 0x4d, 0x36, 0x84, 0xbd, 0xf4, 0xaa, 0xea,
|
||||
0xce, 0x8b, 0x15, 0xb8, 0xf4, 0xaa, 0xab, 0xc5, 0x8b, 0x15, 0x71, 0xe9, 0xd5, 0x03, 0x40, 0x11,
|
||||
0x4f, 0xe2, 0x4a, 0xe0, 0x45, 0x94, 0x92, 0x60, 0x11, 0x1b, 0xc2, 0xae, 0xd1, 0xaa, 0x88, 0x0b,
|
||||
0x01, 0xd6, 0x68, 0x5d, 0x00, 0xe7, 0x79, 0xfe, 0x6d, 0x52, 0x6e, 0x23, 0x89, 0xea, 0x15, 0x26,
|
||||
0xf6, 0x52, 0x96, 0x25, 0x15, 0x88, 0x24, 0xba, 0xdd, 0x1b, 0x29, 0x11, 0x49, 0xda, 0x14, 0x18,
|
||||
0x4a, 0xfa, 0x69, 0x03, 0x56, 0x3b, 0xf0, 0xa0, 0xe1, 0x6e, 0x08, 0xb1, 0xf1, 0xa9, 0x29, 0xf4,
|
||||
0x4e, 0x5c, 0x96, 0x69, 0xbd, 0xf8, 0x3f, 0xc0, 0x0b, 0xd4, 0xc8, 0x89, 0xf8, 0x84, 0x71, 0x60,
|
||||
0x7a, 0x35, 0x81, 0x1b, 0x2b, 0x18, 0x0c, 0xdd, 0x1f, 0x06, 0x19, 0x9b, 0x71, 0x4a, 0x89, 0xf3,
|
||||
0x40, 0x1a, 0x6b, 0x4d, 0xe4, 0x79, 0xf4, 0x83, 0x2e, 0xcc, 0x79, 0x29, 0xc5, 0xb8, 0x38, 0xe2,
|
||||
0x4b, 0x36, 0xe1, 0x2f, 0xde, 0xa4, 0x95, 0x48, 0xf3, 0x99, 0x5e, 0xb9, 0x9f, 0x11, 0x96, 0x30,
|
||||
0x98, 0x78, 0x29, 0xa5, 0x53, 0xc9, 0x26, 0x10, 0xa0, 0x2c, 0xc7, 0xec, 0x1a, 0x4d, 0x20, 0xa0,
|
||||
0x45, 0xc3, 0x11, 0x09, 0x44, 0x88, 0xb7, 0xa7, 0x52, 0xc6, 0xb9, 0x7e, 0x73, 0x77, 0xc2, 0x9b,
|
||||
0x5c, 0x8e, 0xb2, 0x06, 0x41, 0xe2, 0x60, 0x20, 0xa8, 0x60, 0xf7, 0x97, 0xc6, 0xbf, 0x9d, 0x62,
|
||||
0x0f, 0x09, 0x3b, 0xed, 0x69, 0xf6, 0xa8, 0x07, 0x89, 0xb8, 0xb2, 0xb7, 0x2a, 0x28, 0x57, 0xed,
|
||||
0x4b, 0x15, 0x8f, 0x7a, 0x90, 0xce, 0x09, 0x97, 0x5b, 0xad, 0xe7, 0xf1, 0xf4, 0x6a, 0x56, 0xf2,
|
||||
0x45, 0x9e, 0xec, 0xf0, 0x8c, 0x97, 0xe0, 0x84, 0xcb, 0x2b, 0x35, 0x40, 0x89, 0x13, 0xae, 0x0e,
|
||||
0x15, 0x9b, 0xc1, 0xb9, 0xa5, 0xd8, 0xce, 0xd2, 0x19, 0xdc, 0x51, 0x7b, 0x86, 0x24, 0x40, 0x64,
|
||||
0x70, 0x28, 0x88, 0x0c, 0x22, 0xb5, 0xe3, 0x16, 0xe9, 0x34, 0xce, 0x94, 0xbf, 0x2d, 0xda, 0x8c,
|
||||
0x07, 0x76, 0x0e, 0x22, 0x44, 0x01, 0xa9, 0xe7, 0x64, 0x51, 0xe6, 0x07, 0xb9, 0xe0, 0x64, 0x3d,
|
||||
0x1b, 0xa0, 0xb3, 0x9e, 0x0e, 0x08, 0xc2, 0xea, 0x84, 0xbd, 0xa9, 0x4b, 0x53, 0xff, 0x83, 0x85,
|
||||
0xd5, 0xfa, 0xf7, 0x91, 0x96, 0x87, 0xc2, 0x2a, 0xe0, 0x40, 0x65, 0xb4, 0x13, 0x35, 0x60, 0x02,
|
||||
0xda, 0xfe, 0x30, 0x79, 0xd8, 0x0d, 0xe2, 0x7e, 0xc6, 0x62, 0x95, 0xb1, 0x90, 0x1f, 0x09, 0xf4,
|
||||
0xf1, 0xd3, 0x80, 0xf6, 0xb8, 0xc5, 0xab, 0xcf, 0x25, 0x9b, 0x5e, 0xb5, 0x2e, 0x89, 0xf9, 0x05,
|
||||
0x55, 0x08, 0x71, 0xdc, 0x42, 0xa0, 0x78, 0x17, 0x1d, 0x4c, 0x79, 0x1e, 0xea, 0xa2, 0x5a, 0xde,
|
||||
0xa7, 0x8b, 0x34, 0x67, 0x37, 0xbf, 0x46, 0xaa, 0x47, 0xa6, 0xea, 0xa6, 0x75, 0xc2, 0x82, 0x0b,
|
||||
0x11, 0x9b, 0x5f, 0x12, 0xb6, 0x39, 0x39, 0xf4, 0x79, 0xd4, 0xbe, 0x41, 0xdf, 0xb2, 0x72, 0x44,
|
||||
0xdf, 0xa0, 0xa7, 0x58, 0xba, 0x92, 0x6a, 0x8c, 0x74, 0x58, 0xf1, 0xc7, 0xc9, 0x46, 0x3f, 0xd8,
|
||||
0x6e, 0x79, 0x3c, 0x9f, 0x3b, 0x19, 0x8b, 0x4b, 0xe5, 0x75, 0x33, 0x60, 0xc8, 0x62, 0xc4, 0x96,
|
||||
0x27, 0x80, 0x83, 0x10, 0xe6, 0x79, 0xde, 0xe1, 0xb9, 0x60, 0xb9, 0xc0, 0x42, 0x98, 0x6f, 0x4c,
|
||||
0x83, 0xa1, 0x10, 0x46, 0x29, 0x80, 0x71, 0x2b, 0xcf, 0x83, 0x98, 0x38, 0x8e, 0xe7, 0x68, 0xc6,
|
||||
0xa6, 0xce, 0x7a, 0x94, 0x3c, 0x34, 0x6e, 0x01, 0xe7, 0x3c, 0x32, 0x75, 0xbd, 0x4c, 0xe2, 0x72,
|
||||
0x66, 0x4e, 0x37, 0x92, 0xe1, 0x13, 0xda, 0x8e, 0x4f, 0x12, 0x8f, 0x4c, 0xc3, 0x1a, 0x20, 0xec,
|
||||
0x1c, 0xcc, 0xe3, 0x99, 0xa9, 0x29, 0x52, 0x03, 0x29, 0x6f, 0x55, 0xf5, 0x61, 0x37, 0x08, 0xfc,
|
||||
0xbc, 0x4a, 0x13, 0xc6, 0x03, 0x7e, 0xa4, 0xbc, 0x8f, 0x1f, 0x08, 0x82, 0xec, 0xad, 0xae, 0xb7,
|
||||
0xda, 0xd1, 0x6d, 0xe7, 0x89, 0xde, 0xc7, 0x8e, 0x88, 0xe6, 0x01, 0x5c, 0x28, 0x7b, 0x23, 0x78,
|
||||
0x30, 0x47, 0x9b, 0x03, 0xda, 0xd0, 0x1c, 0x35, 0xe7, 0xaf, 0x7d, 0xe6, 0x28, 0x06, 0x6b, 0x9f,
|
||||
0x3f, 0xd1, 0x73, 0x74, 0x37, 0x16, 0x71, 0x9d, 0xb7, 0xbf, 0x4a, 0xd9, 0xb5, 0xde, 0x08, 0x23,
|
||||
0xf5, 0x6d, 0xa8, 0x91, 0x7c, 0x75, 0x12, 0xec, 0x8a, 0xb7, 0x7a, 0xf3, 0x01, 0xdf, 0x7a, 0x87,
|
||||
0xd0, 0xe9, 0x1b, 0x6c, 0x15, 0xb6, 0x7a, 0xf3, 0x01, 0xdf, 0xfa, 0x9d, 0xec, 0x4e, 0xdf, 0xe0,
|
||||
0xc5, 0xec, 0xad, 0xde, 0xbc, 0xf6, 0xfd, 0xe7, 0xcd, 0xc4, 0x75, 0x9d, 0xd7, 0x79, 0xd8, 0x54,
|
||||
0xa4, 0x4b, 0x86, 0xa5, 0x93, 0xbe, 0x3d, 0x83, 0x86, 0xd2, 0x49, 0x5a, 0xc5, 0xf9, 0x90, 0x0f,
|
||||
0x56, 0x8a, 0x13, 0x5e, 0xa5, 0xf2, 0xca, 0xc3, 0xb3, 0x1e, 0x46, 0x1b, 0x38, 0xb4, 0x69, 0x0a,
|
||||
0x29, 0xd9, 0x87, 0xb7, 0x1e, 0x6a, 0xef, 0x84, 0x6f, 0x04, 0xec, 0xb5, 0xaf, 0x86, 0x6f, 0xf6,
|
||||
0xa4, 0xed, 0x63, 0x54, 0x8f, 0x71, 0x9f, 0xdf, 0x86, 0x7a, 0x15, 0x7d, 0x84, 0xfb, 0xa4, 0xbf,
|
||||
0x82, 0x76, 0xff, 0x97, 0xcd, 0xbe, 0x02, 0xfa, 0xd7, 0x93, 0xe0, 0x69, 0x1f, 0x8b, 0x60, 0x22,
|
||||
0x3c, 0xbb, 0x91, 0x8e, 0x2e, 0xc8, 0xdf, 0x36, 0x1b, 0xe8, 0x06, 0x95, 0x6f, 0xc6, 0xbc, 0x2c,
|
||||
0x13, 0x56, 0xea, 0x39, 0x11, 0xea, 0x56, 0x0b, 0xc3, 0x99, 0xf1, 0xc9, 0x0d, 0xb5, 0x9c, 0xcf,
|
||||
0x3a, 0x79, 0xb0, 0x7e, 0x83, 0xd3, 0x29, 0x4f, 0xc8, 0xb2, 0x43, 0xc3, 0x02, 0x7d, 0x7a, 0x53,
|
||||
0x35, 0x6a, 0xae, 0x38, 0xb0, 0xfc, 0x4a, 0xc4, 0xb3, 0x9e, 0x86, 0xbd, 0xef, 0x46, 0x7c, 0x7c,
|
||||
0x33, 0x25, 0x5d, 0x96, 0x7f, 0x1f, 0x44, 0xf7, 0x3d, 0xd6, 0x3e, 0x4f, 0x00, 0xa7, 0x1e, 0x3f,
|
||||
0x0c, 0xd8, 0xa7, 0x94, 0x4c, 0xe1, 0x7e, 0xeb, 0x9b, 0x29, 0xdb, 0x6f, 0x20, 0x79, 0x2a, 0x7b,
|
||||
0x69, 0x26, 0x58, 0xd9, 0xfe, 0x06, 0x92, 0x6f, 0x57, 0x51, 0x23, 0xfa, 0x1b, 0x48, 0x01, 0xdc,
|
||||
0xf9, 0x06, 0x12, 0xe2, 0x19, 0xfd, 0x06, 0x12, 0x6a, 0x2d, 0xf8, 0x0d, 0xa4, 0xb0, 0x06, 0x15,
|
||||
0xde, 0x9b, 0x22, 0xa8, 0x73, 0xeb, 0x5e, 0x16, 0xfd, 0x63, 0xec, 0xa7, 0x37, 0x51, 0x21, 0x16,
|
||||
0x38, 0xc5, 0xc9, 0x5b, 0x83, 0x3d, 0xda, 0xd4, 0xbb, 0x39, 0xb8, 0xd5, 0x9b, 0xd7, 0xbe, 0x7f,
|
||||
0xac, 0x77, 0x37, 0x26, 0x9c, 0xf3, 0x52, 0x7e, 0xff, 0x6a, 0x3d, 0x14, 0x9e, 0x6b, 0x0b, 0x6e,
|
||||
0xcf, 0x6f, 0xf4, 0x83, 0x89, 0xea, 0xd6, 0x84, 0xee, 0xf4, 0x51, 0x97, 0x21, 0xd0, 0xe5, 0x5b,
|
||||
0xbd, 0x79, 0x62, 0x19, 0x51, 0xbe, 0x55, 0x6f, 0xf7, 0x30, 0xe6, 0xf7, 0xf5, 0x93, 0xfe, 0x0a,
|
||||
0xda, 0xfd, 0x52, 0xa7, 0x8d, 0xae, 0x7b, 0xd9, 0xcf, 0x9b, 0x5d, 0xa6, 0xc6, 0x5e, 0x37, 0x8f,
|
||||
0xfa, 0xe2, 0xa1, 0x04, 0xc2, 0x5d, 0x42, 0xbb, 0x12, 0x08, 0x74, 0x19, 0xfd, 0xf8, 0x66, 0x4a,
|
||||
0xba, 0x2c, 0xff, 0x30, 0x88, 0x6e, 0x93, 0x65, 0xd1, 0xe3, 0xe0, 0xd3, 0xbe, 0x96, 0xc1, 0x78,
|
||||
0xf8, 0xec, 0xc6, 0x7a, 0xba, 0x50, 0xff, 0x3c, 0x88, 0xee, 0x04, 0x0a, 0xa5, 0x06, 0xc8, 0x0d,
|
||||
0xac, 0xfb, 0x03, 0xe5, 0xf3, 0x9b, 0x2b, 0x52, 0xcb, 0xbd, 0x8b, 0x8f, 0xdb, 0x1f, 0x07, 0x0a,
|
||||
0xd8, 0x1e, 0xd3, 0x1f, 0x07, 0xea, 0xd6, 0x82, 0x87, 0x3c, 0xf1, 0x79, 0xb3, 0xe9, 0x42, 0x0f,
|
||||
0x79, 0xe4, 0x7d, 0x3f, 0xb0, 0xe7, 0x58, 0xeb, 0xe4, 0x30, 0x27, 0x2f, 0xde, 0x14, 0x71, 0x9e,
|
||||
0xd0, 0x4e, 0x94, 0xbc, 0xdb, 0x89, 0xe1, 0xe0, 0xe1, 0x58, 0x2d, 0x3d, 0xe5, 0xcd, 0x46, 0xea,
|
||||
0x11, 0xa5, 0x6f, 0x90, 0xe0, 0xe1, 0x58, 0x0b, 0x25, 0xbc, 0xe9, 0xac, 0x31, 0xe4, 0x0d, 0x24,
|
||||
0x8b, 0x8f, 0xfb, 0xa0, 0x20, 0x45, 0x37, 0xde, 0xcc, 0x99, 0xfb, 0x46, 0xc8, 0x4a, 0xeb, 0xdc,
|
||||
0x7d, 0xb3, 0x27, 0x4d, 0xb8, 0x1d, 0x33, 0xf1, 0x05, 0x8b, 0x13, 0x56, 0x06, 0xdd, 0x1a, 0xaa,
|
||||
0x97, 0x5b, 0x97, 0xc6, 0xdc, 0xee, 0xf0, 0x6c, 0x31, 0xcf, 0x75, 0x67, 0x92, 0x6e, 0x5d, 0xaa,
|
||||
0xdb, 0x2d, 0xa0, 0xe1, 0xb1, 0xa0, 0x75, 0x2b, 0xd3, 0xcb, 0xc7, 0x61, 0x33, 0x5e, 0x56, 0xb9,
|
||||
0xde, 0x8b, 0xa5, 0xeb, 0xa9, 0x87, 0x51, 0x47, 0x3d, 0xc1, 0x48, 0xda, 0xec, 0x49, 0xc3, 0xf3,
|
||||
0x39, 0xc7, 0xad, 0x19, 0x4f, 0x5b, 0x1d, 0xb6, 0x5a, 0x43, 0xea, 0x49, 0x7f, 0x05, 0x78, 0x1a,
|
||||
0xaa, 0x47, 0xd5, 0x61, 0x5a, 0x89, 0xbd, 0x34, 0xcb, 0x86, 0xeb, 0x81, 0x61, 0xd2, 0x40, 0xc1,
|
||||
0xd3, 0x50, 0x04, 0x26, 0x46, 0x72, 0x73, 0x7a, 0x98, 0x0f, 0xbb, 0xec, 0x48, 0xaa, 0xd7, 0x48,
|
||||
0x76, 0x69, 0x70, 0xa2, 0xe5, 0x34, 0xb5, 0xa9, 0xed, 0x28, 0xdc, 0x70, 0xad, 0x0a, 0x6f, 0xf5,
|
||||
0xe6, 0xc1, 0xe3, 0x76, 0x49, 0xc9, 0x95, 0xe5, 0x1e, 0x65, 0xc2, 0x5b, 0x49, 0xee, 0x77, 0x50,
|
||||
0xe0, 0x54, 0x50, 0x4d, 0xa3, 0xd7, 0x69, 0x32, 0x63, 0x02, 0x7d, 0x52, 0xe4, 0x02, 0xc1, 0x27,
|
||||
0x45, 0x00, 0x04, 0x5d, 0xa7, 0x7e, 0x37, 0xc7, 0xa1, 0x07, 0x09, 0xd6, 0x75, 0x5a, 0xd9, 0xa1,
|
||||
0x42, 0x5d, 0x87, 0xd2, 0x20, 0x1a, 0x18, 0xb7, 0xfa, 0xe3, 0x06, 0x8f, 0x43, 0x66, 0xc0, 0x17,
|
||||
0x0e, 0xd6, 0x7b, 0xb1, 0x60, 0x45, 0xb1, 0x0e, 0xd3, 0x79, 0x2a, 0xb0, 0x15, 0xc5, 0xb1, 0x51,
|
||||
0x23, 0xa1, 0x15, 0xa5, 0x8d, 0x52, 0xd5, 0xab, 0x73, 0x84, 0x83, 0x24, 0x5c, 0x3d, 0xc5, 0xf4,
|
||||
0xab, 0x9e, 0x61, 0x5b, 0x0f, 0x36, 0x73, 0x33, 0x64, 0xc4, 0xa5, 0xde, 0x2c, 0x23, 0x63, 0x5b,
|
||||
0xbe, 0xf4, 0x0a, 0xc1, 0x50, 0xd4, 0xa1, 0x14, 0xe0, 0x81, 0x7d, 0xcd, 0x35, 0xcf, 0x5e, 0x8b,
|
||||
0x82, 0xc5, 0x65, 0x9c, 0x4f, 0xd1, 0xcd, 0xa9, 0x34, 0xd8, 0x22, 0x43, 0x9b, 0x53, 0x52, 0x03,
|
||||
0x3c, 0x36, 0xf7, 0x5f, 0x57, 0x45, 0xa6, 0x82, 0x79, 0x2f, 0xd4, 0x7f, 0x5b, 0xf5, 0x51, 0x0f,
|
||||
0x12, 0x3e, 0x36, 0x6f, 0x00, 0x73, 0xf0, 0xad, 0x9c, 0x7e, 0x14, 0x30, 0xe5, 0xa3, 0xa1, 0x8d,
|
||||
0x30, 0xad, 0x02, 0x06, 0xb5, 0x49, 0x70, 0x99, 0xf8, 0x11, 0x5b, 0x61, 0x83, 0xda, 0xe6, 0xa7,
|
||||
0x12, 0x09, 0x0d, 0xea, 0x36, 0x0a, 0xf2, 0x4c, 0x77, 0x1f, 0xf4, 0x20, 0xa0, 0xef, 0x6e, 0x7d,
|
||||
0xd6, 0x3a, 0x39, 0x30, 0x73, 0x76, 0xd3, 0xa5, 0xf7, 0x9c, 0x00, 0x29, 0xe8, 0x6e, 0xba, 0xc4,
|
||||
0x1f, 0x13, 0xac, 0xf7, 0x62, 0xe1, 0x23, 0xf9, 0x58, 0xb0, 0x37, 0xcd, 0xb3, 0x72, 0xa4, 0xb8,
|
||||
0x52, 0xde, 0x7a, 0x58, 0xfe, 0xb0, 0x1b, 0xb4, 0x17, 0x60, 0x4f, 0x4a, 0x3e, 0x65, 0x55, 0xa5,
|
||||
0xbf, 0x98, 0xe8, 0xdf, 0x30, 0xd2, 0xb2, 0x11, 0xf8, 0x5e, 0xe2, 0xbd, 0x30, 0x64, 0x7b, 0x46,
|
||||
0x8b, 0xec, 0x37, 0x84, 0x1e, 0xa0, 0x9a, 0xed, 0xcf, 0x07, 0xad, 0x75, 0x72, 0x76, 0x7a, 0x69,
|
||||
0xa9, 0xfb, 0xd1, 0xa0, 0x87, 0xa8, 0x3a, 0xf6, 0xbd, 0xa0, 0x47, 0x3d, 0x48, 0xed, 0xea, 0x8b,
|
||||
0xe8, 0xad, 0x43, 0x3e, 0x1b, 0xb3, 0x3c, 0x19, 0x7e, 0xdf, 0xbf, 0x42, 0xcb, 0x67, 0xa3, 0xfa,
|
||||
0x67, 0x63, 0xf4, 0x16, 0x25, 0xb6, 0x97, 0x00, 0x77, 0xd9, 0xf9, 0x62, 0x36, 0x16, 0xb1, 0x00,
|
||||
0x97, 0x00, 0xe5, 0xef, 0xa3, 0x5a, 0x40, 0x5c, 0x02, 0xf4, 0x00, 0x60, 0x6f, 0x52, 0x32, 0x86,
|
||||
0xda, 0xab, 0x05, 0x41, 0x7b, 0x1a, 0xb0, 0x59, 0x84, 0xb1, 0x57, 0x27, 0xea, 0xf0, 0xd2, 0x9e,
|
||||
0xd5, 0x91, 0x52, 0x22, 0x8b, 0x68, 0x53, 0x76, 0x70, 0xab, 0xea, 0xcb, 0x6f, 0xb8, 0x2c, 0xe6,
|
||||
0xf3, 0xb8, 0x5c, 0x81, 0xc1, 0xad, 0x6b, 0xe9, 0x00, 0xc4, 0xe0, 0x46, 0x41, 0x3b, 0x6b, 0x9b,
|
||||
0x66, 0x9e, 0x5e, 0xed, 0xf3, 0x92, 0x2f, 0x44, 0x9a, 0x33, 0xf8, 0x1d, 0x0f, 0xd3, 0xa0, 0x2e,
|
||||
0x43, 0xcc, 0x5a, 0x8a, 0xb5, 0x59, 0xae, 0x24, 0xd4, 0x7d, 0x42, 0xf9, 0x1d, 0xe5, 0x4a, 0xf0,
|
||||
0x12, 0x3e, 0x4f, 0x54, 0x56, 0x20, 0x44, 0x64, 0xb9, 0x24, 0x0c, 0xfa, 0xfe, 0x24, 0xcd, 0x67,
|
||||
0x68, 0xdf, 0x9f, 0xb8, 0x5f, 0x21, 0xbd, 0x43, 0x03, 0x76, 0x42, 0xa9, 0x46, 0x53, 0x13, 0x40,
|
||||
0xbf, 0x19, 0x8b, 0x36, 0xba, 0x4b, 0x10, 0x13, 0x0a, 0x27, 0x81, 0xab, 0x97, 0x05, 0xcb, 0x59,
|
||||
0xd2, 0xdc, 0x9a, 0xc3, 0x5c, 0x79, 0x44, 0xd0, 0x15, 0x24, 0x6d, 0x2c, 0x92, 0xf2, 0xd3, 0x45,
|
||||
0x7e, 0x52, 0xf2, 0x8b, 0x34, 0x63, 0x25, 0x88, 0x45, 0x4a, 0xdd, 0x91, 0x13, 0xb1, 0x08, 0xe3,
|
||||
0xec, 0xf5, 0x0b, 0x29, 0xf5, 0x3e, 0x06, 0x3e, 0x29, 0xe3, 0x29, 0xbc, 0x7e, 0xa1, 0x6c, 0xb4,
|
||||
0x31, 0xe2, 0x64, 0x30, 0x80, 0x3b, 0x89, 0x8e, 0x72, 0x9d, 0xaf, 0xe4, 0xf8, 0xd0, 0x6f, 0x66,
|
||||
0xca, 0x6f, 0x73, 0x56, 0x20, 0xd1, 0xd1, 0xe6, 0x30, 0x92, 0x48, 0x74, 0xc2, 0x1a, 0x76, 0x29,
|
||||
0x91, 0xdc, 0xb1, 0xbe, 0x56, 0x04, 0x96, 0x12, 0x65, 0xa3, 0x11, 0x12, 0x4b, 0x49, 0x0b, 0x02,
|
||||
0x01, 0xa9, 0x99, 0x06, 0x33, 0x34, 0x20, 0x19, 0x69, 0x30, 0x20, 0xb9, 0x94, 0x0d, 0x14, 0x07,
|
||||
0x79, 0x2a, 0xd2, 0x38, 0x1b, 0x33, 0x71, 0x12, 0x97, 0xf1, 0x9c, 0x09, 0x56, 0xc2, 0x40, 0xa1,
|
||||
0x91, 0x91, 0xc7, 0x10, 0x81, 0x82, 0x62, 0xb5, 0xc3, 0xdf, 0x8e, 0xde, 0xa9, 0xd7, 0x7d, 0x96,
|
||||
0xeb, 0x3f, 0xfb, 0xf1, 0x42, 0xfe, 0xbd, 0xa0, 0xe1, 0xbb, 0xc6, 0xc6, 0x58, 0x94, 0x2c, 0x9e,
|
||||
0x37, 0xb6, 0xdf, 0x36, 0xbf, 0x4b, 0xf0, 0xc9, 0xa0, 0x1e, 0xcf, 0xc7, 0x5c, 0xa4, 0x17, 0xf5,
|
||||
0x36, 0x5b, 0xbf, 0x41, 0x04, 0xc6, 0xb3, 0x2b, 0x1e, 0x05, 0xbe, 0xec, 0x81, 0x71, 0x36, 0x4e,
|
||||
0xbb, 0xd2, 0x53, 0x56, 0x64, 0x30, 0x4e, 0x7b, 0xda, 0x12, 0x20, 0xe2, 0x34, 0x0a, 0xda, 0xc9,
|
||||
0xe9, 0x8a, 0x27, 0x2c, 0x5c, 0x99, 0x09, 0xeb, 0x57, 0x99, 0x89, 0xf7, 0x52, 0x46, 0x16, 0xbd,
|
||||
0x73, 0xc4, 0xe6, 0xe7, 0xac, 0xac, 0x2e, 0xd3, 0x62, 0xbf, 0x4e, 0xb8, 0x62, 0xb1, 0x80, 0xaf,
|
||||
0x2d, 0x5a, 0x62, 0x64, 0x10, 0x22, 0x2b, 0x25, 0x50, 0xbb, 0x12, 0x58, 0xe0, 0xa0, 0x3a, 0x8e,
|
||||
0xe7, 0x4c, 0x7e, 0xa7, 0x04, 0xac, 0x04, 0x8e, 0x11, 0x07, 0x22, 0x56, 0x02, 0x12, 0x76, 0xde,
|
||||
0xef, 0xb2, 0xcc, 0x29, 0x9b, 0xd5, 0x23, 0xac, 0x3c, 0x89, 0x57, 0x73, 0x96, 0x0b, 0x6d, 0x12,
|
||||
0x9c, 0xc9, 0x3b, 0x26, 0x71, 0x9e, 0x38, 0x93, 0xef, 0xa3, 0xe7, 0x84, 0x26, 0xaf, 0xe1, 0x4f,
|
||||
0x78, 0x29, 0xd4, 0x1f, 0xf5, 0x39, 0x2b, 0x33, 0x10, 0x9a, 0xfc, 0x46, 0xf5, 0x48, 0x22, 0x34,
|
||||
0x85, 0x35, 0x9c, 0xaf, 0xe1, 0x7b, 0x65, 0x78, 0xc5, 0x4a, 0x33, 0x4e, 0x5e, 0xcc, 0xe3, 0x34,
|
||||
0xd3, 0xa3, 0xe1, 0x07, 0x01, 0xdb, 0x84, 0x0e, 0xf1, 0x35, 0xfc, 0xbe, 0xba, 0xce, 0xdf, 0x0f,
|
||||
0x08, 0x97, 0x10, 0x3c, 0x22, 0xe8, 0xb0, 0x4f, 0x3c, 0x22, 0xe8, 0xd6, 0xb2, 0x3b, 0x77, 0xcb,
|
||||
0x4a, 0x6e, 0x25, 0x89, 0x1d, 0x9e, 0xc0, 0xf3, 0x42, 0xc7, 0x26, 0x00, 0x89, 0x9d, 0x7b, 0x50,
|
||||
0xc1, 0xa6, 0x06, 0x16, 0xdb, 0x4b, 0xf3, 0x38, 0x4b, 0x7f, 0x02, 0xd3, 0x7a, 0xc7, 0x4e, 0x43,
|
||||
0x10, 0xa9, 0x01, 0x4e, 0x62, 0xae, 0xf6, 0x99, 0x98, 0xa4, 0x75, 0xe8, 0x7f, 0x18, 0x68, 0x37,
|
||||
0x49, 0x74, 0xbb, 0x72, 0x48, 0xe7, 0x8b, 0xb7, 0xb0, 0x59, 0xb7, 0x8b, 0x62, 0x5c, 0xaf, 0xaa,
|
||||
0xa7, 0x6c, 0xca, 0xd2, 0x42, 0x0c, 0x3f, 0x09, 0xb7, 0x15, 0xc0, 0x89, 0x8b, 0x16, 0x3d, 0xd4,
|
||||
0x9c, 0xc7, 0xf7, 0x75, 0x2c, 0x19, 0xab, 0xbf, 0x76, 0x77, 0x56, 0xb1, 0x52, 0x27, 0x1a, 0xfb,
|
||||
0x4c, 0x80, 0xd9, 0xe9, 0x70, 0x23, 0x07, 0xac, 0x2b, 0x4a, 0xcc, 0xce, 0xb0, 0x86, 0x3d, 0xec,
|
||||
0x73, 0xb8, 0x53, 0x56, 0xf1, 0x6c, 0xc9, 0xe4, 0x7d, 0xc3, 0x0d, 0xd2, 0x98, 0x43, 0x11, 0x87,
|
||||
0x7d, 0x34, 0x6d, 0xb3, 0xb5, 0xb6, 0xdb, 0xed, 0x7c, 0x75, 0x00, 0xaf, 0x4c, 0x20, 0x96, 0x24,
|
||||
0x46, 0x64, 0x6b, 0x01, 0xdc, 0x39, 0x0c, 0x2f, 0x79, 0x9c, 0x4c, 0xe3, 0x4a, 0x9c, 0xc4, 0xab,
|
||||
0x8c, 0xc7, 0x89, 0x5c, 0xd7, 0xe1, 0x61, 0x78, 0xc3, 0x8c, 0x5c, 0x88, 0x3a, 0x0c, 0xa7, 0x60,
|
||||
0x37, 0x3b, 0x93, 0x7f, 0xc4, 0x4f, 0xdf, 0xe5, 0x84, 0xd9, 0x99, 0x2c, 0x2f, 0xbc, 0xc7, 0x79,
|
||||
0x2f, 0x0c, 0xd9, 0x77, 0xd0, 0x94, 0x48, 0xa6, 0x21, 0x77, 0x30, 0x1d, 0x2f, 0x01, 0xf9, 0x20,
|
||||
0x40, 0xd8, 0xaf, 0x7c, 0xa8, 0xdf, 0x9b, 0xbf, 0x43, 0x23, 0xf4, 0x77, 0xc1, 0x37, 0x30, 0x5d,
|
||||
0x17, 0x1a, 0xb9, 0x1f, 0x8b, 0xd8, 0xec, 0x49, 0xdb, 0x34, 0x73, 0xe7, 0x32, 0x16, 0xdb, 0x49,
|
||||
0x72, 0xc4, 0x2a, 0xe4, 0x85, 0xf2, 0x5a, 0x38, 0xb2, 0x52, 0x22, 0xcd, 0x6c, 0x53, 0x76, 0xa0,
|
||||
0xd7, 0xb2, 0x17, 0x49, 0x2a, 0xb4, 0xac, 0xb9, 0x21, 0xbd, 0xd1, 0x36, 0xd0, 0xa6, 0x88, 0x5a,
|
||||
0xd1, 0xb4, 0x8d, 0xe5, 0x35, 0x33, 0xe1, 0xb3, 0x59, 0xc6, 0x34, 0x74, 0xca, 0x62, 0xf5, 0x59,
|
||||
0xc4, 0xad, 0xb6, 0x2d, 0x14, 0x24, 0x62, 0x79, 0x50, 0xc1, 0xa6, 0x91, 0x35, 0xa6, 0x1e, 0x49,
|
||||
0x35, 0x0d, 0xbb, 0xd6, 0x36, 0xe3, 0x01, 0x44, 0x1a, 0x89, 0x82, 0xf6, 0xbd, 0xb7, 0x5a, 0xbc,
|
||||
0xcf, 0x9a, 0x96, 0x80, 0x1f, 0x74, 0x92, 0xca, 0x8e, 0x98, 0x78, 0xef, 0x0d, 0xc1, 0xec, 0x3e,
|
||||
0x01, 0x78, 0x78, 0xbe, 0x3a, 0x48, 0xe0, 0x3e, 0x01, 0xea, 0x4b, 0x86, 0xd8, 0x27, 0x50, 0xac,
|
||||
0xdf, 0x75, 0xe6, 0xdc, 0xeb, 0x30, 0xae, 0x6c, 0xe5, 0x90, 0xae, 0x43, 0xc1, 0x50, 0xd7, 0x51,
|
||||
0x0a, 0x7e, 0x93, 0xba, 0x47, 0x6b, 0x48, 0x93, 0x62, 0xe7, 0x6a, 0x0f, 0xba, 0x30, 0x1b, 0x97,
|
||||
0xcc, 0x7e, 0x52, 0x5e, 0x59, 0xc2, 0xff, 0x1e, 0x82, 0x12, 0x12, 0x71, 0xa9, 0x05, 0x29, 0xdb,
|
||||
0xcf, 0x3f, 0xf8, 0xcf, 0xaf, 0x6e, 0x0d, 0x7e, 0xf6, 0xd5, 0xad, 0xc1, 0x7f, 0x7f, 0x75, 0x6b,
|
||||
0xf0, 0xd3, 0xaf, 0x6f, 0x7d, 0xeb, 0x67, 0x5f, 0xdf, 0xfa, 0xd6, 0x7f, 0x7d, 0x7d, 0xeb, 0x5b,
|
||||
0x5f, 0xbe, 0xa5, 0xff, 0xb8, 0xeb, 0xf9, 0xcf, 0xc9, 0x3f, 0xd1, 0xfa, 0xec, 0xff, 0x02, 0x00,
|
||||
0x00, 0xff, 0xff, 0x4c, 0x64, 0x5e, 0x0f, 0x00, 0x76, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
|
@ -477,6 +478,7 @@ type ClientCommandsClient interface {
|
|||
ObjectImportNotionValidateToken(ctx context.Context, in *pb.RpcObjectImportNotionValidateTokenRequest, opts ...grpc.CallOption) (*pb.RpcObjectImportNotionValidateTokenResponse, error)
|
||||
ObjectImportUseCase(ctx context.Context, in *pb.RpcObjectImportUseCaseRequest, opts ...grpc.CallOption) (*pb.RpcObjectImportUseCaseResponse, error)
|
||||
ObjectImportExperience(ctx context.Context, in *pb.RpcObjectImportExperienceRequest, opts ...grpc.CallOption) (*pb.RpcObjectImportExperienceResponse, error)
|
||||
ObjectDateByTimestamp(ctx context.Context, in *pb.RpcObjectDateByTimestampRequest, opts ...grpc.CallOption) (*pb.RpcObjectDateByTimestampResponse, error)
|
||||
// Collections
|
||||
// ***
|
||||
ObjectCollectionAdd(ctx context.Context, in *pb.RpcObjectCollectionAddRequest, opts ...grpc.CallOption) (*pb.RpcObjectCollectionAddResponse, error)
|
||||
|
@ -1531,6 +1533,15 @@ func (c *clientCommandsClient) ObjectImportExperience(ctx context.Context, in *p
|
|||
return out, nil
|
||||
}
|
||||
|
||||
func (c *clientCommandsClient) ObjectDateByTimestamp(ctx context.Context, in *pb.RpcObjectDateByTimestampRequest, opts ...grpc.CallOption) (*pb.RpcObjectDateByTimestampResponse, error) {
|
||||
out := new(pb.RpcObjectDateByTimestampResponse)
|
||||
err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ObjectDateByTimestamp", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *clientCommandsClient) ObjectCollectionAdd(ctx context.Context, in *pb.RpcObjectCollectionAddRequest, opts ...grpc.CallOption) (*pb.RpcObjectCollectionAddResponse, error) {
|
||||
out := new(pb.RpcObjectCollectionAddResponse)
|
||||
err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ObjectCollectionAdd", in, out, opts...)
|
||||
|
@ -3263,6 +3274,7 @@ type ClientCommandsServer interface {
|
|||
ObjectImportNotionValidateToken(context.Context, *pb.RpcObjectImportNotionValidateTokenRequest) *pb.RpcObjectImportNotionValidateTokenResponse
|
||||
ObjectImportUseCase(context.Context, *pb.RpcObjectImportUseCaseRequest) *pb.RpcObjectImportUseCaseResponse
|
||||
ObjectImportExperience(context.Context, *pb.RpcObjectImportExperienceRequest) *pb.RpcObjectImportExperienceResponse
|
||||
ObjectDateByTimestamp(context.Context, *pb.RpcObjectDateByTimestampRequest) *pb.RpcObjectDateByTimestampResponse
|
||||
// Collections
|
||||
// ***
|
||||
ObjectCollectionAdd(context.Context, *pb.RpcObjectCollectionAddRequest) *pb.RpcObjectCollectionAddResponse
|
||||
|
@ -3767,6 +3779,9 @@ func (*UnimplementedClientCommandsServer) ObjectImportUseCase(ctx context.Contex
|
|||
func (*UnimplementedClientCommandsServer) ObjectImportExperience(ctx context.Context, req *pb.RpcObjectImportExperienceRequest) *pb.RpcObjectImportExperienceResponse {
|
||||
return nil
|
||||
}
|
||||
func (*UnimplementedClientCommandsServer) ObjectDateByTimestamp(ctx context.Context, req *pb.RpcObjectDateByTimestampRequest) *pb.RpcObjectDateByTimestampResponse {
|
||||
return nil
|
||||
}
|
||||
func (*UnimplementedClientCommandsServer) ObjectCollectionAdd(ctx context.Context, req *pb.RpcObjectCollectionAddRequest) *pb.RpcObjectCollectionAddResponse {
|
||||
return nil
|
||||
}
|
||||
|
@ -5944,6 +5959,24 @@ func _ClientCommands_ObjectImportExperience_Handler(srv interface{}, ctx context
|
|||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _ClientCommands_ObjectDateByTimestamp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(pb.RpcObjectDateByTimestampRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(ClientCommandsServer).ObjectDateByTimestamp(ctx, in), nil
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/anytype.ClientCommands/ObjectDateByTimestamp",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(ClientCommandsServer).ObjectDateByTimestamp(ctx, req.(*pb.RpcObjectDateByTimestampRequest)), nil
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _ClientCommands_ObjectCollectionAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(pb.RpcObjectCollectionAddRequest)
|
||||
if err := dec(in); err != nil {
|
||||
|
@ -9520,6 +9553,10 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{
|
|||
MethodName: "ObjectImportExperience",
|
||||
Handler: _ClientCommands_ObjectImportExperience_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "ObjectDateByTimestamp",
|
||||
Handler: _ClientCommands_ObjectDateByTimestamp_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "ObjectCollectionAdd",
|
||||
Handler: _ClientCommands_ObjectCollectionAdd_Handler,
|
||||
|
|
|
@ -9,7 +9,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
)
|
||||
|
||||
const RelationChecksum = "ee87cfabadaa575c8e4c1a74a737cbbd8520d37dbe71668120e516db416947df"
|
||||
const RelationChecksum = "40664f94553807e45b8ad3ab00ba848505de50bd499545f42673bad8175e135d"
|
||||
const (
|
||||
RelationKeyTag domain.RelationKey = "tag"
|
||||
RelationKeyCamera domain.RelationKey = "camera"
|
||||
|
@ -1015,9 +1015,10 @@ var (
|
|||
Id: "_brlastUsedDate",
|
||||
Key: "lastUsedDate",
|
||||
MaxCount: 1,
|
||||
Name: "Last Used date",
|
||||
Name: "Last used date",
|
||||
ReadOnly: true,
|
||||
ReadOnlyRelation: true,
|
||||
Revision: 1,
|
||||
Scope: model.Relation_type,
|
||||
},
|
||||
RelationKeyLatestAclHeadId: {
|
||||
|
|
|
@ -1251,9 +1251,10 @@
|
|||
"hidden": true,
|
||||
"key": "lastUsedDate",
|
||||
"maxCount": 1,
|
||||
"name": "Last Used date",
|
||||
"name": "Last used date",
|
||||
"readonly": true,
|
||||
"source": "local"
|
||||
"source": "local",
|
||||
"revision": 1
|
||||
},
|
||||
{
|
||||
"description": "Revision of system object",
|
||||
|
|
|
@ -52,7 +52,7 @@ func (s dateOnlySort) AppendKey(tuple anyenc.Tuple, v *anyenc.Value) anyenc.Tupl
|
|||
}
|
||||
|
||||
if s.reverse {
|
||||
return tuple.Append(s.arena.NewNumberFloat64(float64(ts)))
|
||||
return tuple.AppendInverted(s.arena.NewNumberFloat64(float64(ts)))
|
||||
} else {
|
||||
return tuple.Append(s.arena.NewNumberFloat64(float64(ts)))
|
||||
}
|
||||
|
|
|
@ -149,12 +149,12 @@ func makeFilterByCondition(spaceID string, rawFilter *model.BlockContentDataview
|
|||
Value: rawFilter.Value,
|
||||
}}, nil
|
||||
case model.BlockContentDataviewFilter_In:
|
||||
// hack for queries for relations containing date objects ids with format _date_YYYY-MM-DD-hh-mm-ss
|
||||
// hack for queries for relations containing date objects ids with format _date_YYYY-MM-DD-hh-mm-ssZ-zzzz
|
||||
// to find all date object ids of the same day we search by prefix _date_YYYY-MM-DD
|
||||
if ts, err := dateutil.ParseDateId(rawFilter.Value.GetStringValue()); err == nil {
|
||||
if dateObject, err := dateutil.BuildDateObjectFromId(rawFilter.Value.GetStringValue()); err == nil {
|
||||
return FilterHasPrefix{
|
||||
Key: rawFilter.RelationKey,
|
||||
Prefix: dateutil.TimeToDateId(ts),
|
||||
Prefix: dateutil.NewDateObject(dateObject.Time(), false).Id(),
|
||||
}, nil
|
||||
}
|
||||
list, err := pbtypes.ValueListWrapper(rawFilter.Value)
|
||||
|
|
|
@ -939,16 +939,16 @@ func TestFilterHasPrefix_FilterObject(t *testing.T) {
|
|||
now := time.Now()
|
||||
f := FilterHasPrefix{
|
||||
Key: key,
|
||||
Prefix: dateutil.TimeToDateId(now), // _date_YYYY-MM-DD
|
||||
Prefix: dateutil.NewDateObject(now, false).Id(), // _date_YYYY-MM-DD
|
||||
}
|
||||
obj1 := &types.Struct{Fields: map[string]*types.Value{
|
||||
key: pbtypes.StringList([]string{"obj2", dateutil.TimeToDateId(now.Add(30 * time.Minute)), "obj3"}), // _date_YYYY-MM-DD-hh-mm-ss
|
||||
key: pbtypes.StringList([]string{"obj2", dateutil.NewDateObject(now.Add(30*time.Minute), true).Id(), "obj3"}), // _date_YYYY-MM-DD-hh-mm-ssZ-zzzz
|
||||
}}
|
||||
obj2 := &types.Struct{Fields: map[string]*types.Value{
|
||||
key: pbtypes.StringList([]string{dateutil.TimeToDateId(now.Add(24 * time.Hour)), "obj1", "obj3"}), // same format, but next day
|
||||
key: pbtypes.StringList([]string{dateutil.NewDateObject(now.Add(24*time.Hour), true).Id(), "obj1", "obj3"}), // same format, but next day
|
||||
}}
|
||||
obj3 := &types.Struct{Fields: map[string]*types.Value{
|
||||
key: pbtypes.StringList([]string{"obj2", "obj3", dateutil.TimeToDateId(now.Add(30 * time.Minute))}), // _date_YYYY-MM-DD
|
||||
key: pbtypes.StringList([]string{"obj2", "obj3", dateutil.NewDateObject(now.Add(30*time.Minute), true).Id()}), // _date_YYYY-MM-DD
|
||||
}}
|
||||
assertFilter(t, f, obj1, true)
|
||||
assertFilter(t, f, obj2, false)
|
||||
|
|
|
@ -266,6 +266,19 @@ func TestKeyOrder_Compare(t *testing.T) {
|
|||
assertCompare(t, asc, a, b, 1)
|
||||
})
|
||||
|
||||
t.Run("desc_date", func(t *testing.T) {
|
||||
a := &types.Struct{Fields: map[string]*types.Value{"k": pbtypes.Int64(date.Unix())}}
|
||||
b := &types.Struct{Fields: map[string]*types.Value{"k": pbtypes.Int64(time.Now().Unix())}}
|
||||
asc := &KeyOrder{arena: arena,
|
||||
Key: "k",
|
||||
Type: model.BlockContentDataviewSort_Desc,
|
||||
EmptyPlacement: model.BlockContentDataviewSort_Start,
|
||||
IncludeTime: false,
|
||||
relationFormat: model.RelationFormat_date,
|
||||
}
|
||||
assertCompare(t, asc, a, b, 1)
|
||||
})
|
||||
|
||||
t.Run("asc_nil_emptylast", func(t *testing.T) {
|
||||
a := &types.Struct{Fields: map[string]*types.Value{"k": pbtypes.String("a")}}
|
||||
b := &types.Struct{Fields: map[string]*types.Value{"k": nil}}
|
||||
|
|
|
@ -29,13 +29,28 @@ func (fx *StoreFixture) TechSpaceId() string {
|
|||
return fx.techSpaceIdProvider.TechSpaceId()
|
||||
}
|
||||
|
||||
type virtualDetailsHandler interface {
|
||||
AddVirtualDetails(id string, det *types.Struct)
|
||||
}
|
||||
|
||||
type detailsFromId struct {
|
||||
details map[string]*types.Struct
|
||||
}
|
||||
|
||||
func (d *detailsFromId) DetailsFromIdBasedSource(id domain.FullID) (*types.Struct, error) {
|
||||
if det, found := d.details[id.ObjectID]; found {
|
||||
return det, nil
|
||||
}
|
||||
return nil, fmt.Errorf("not found")
|
||||
}
|
||||
|
||||
func (d *detailsFromId) AddVirtualDetails(id string, det *types.Struct) {
|
||||
if d.details == nil {
|
||||
d.details = map[string]*types.Struct{}
|
||||
}
|
||||
d.details[id] = det
|
||||
}
|
||||
|
||||
type stubTechSpaceIdProvider struct{}
|
||||
|
||||
func (s *stubTechSpaceIdProvider) TechSpaceId() string {
|
||||
|
@ -118,3 +133,9 @@ func makeDetails(fields spaceindex.TestObject) *types.Struct {
|
|||
}
|
||||
return &types.Struct{Fields: f}
|
||||
}
|
||||
|
||||
func (fx *StoreFixture) AddVirtualDetails(id string, details *types.Struct) {
|
||||
if handler := fx.sourceService.(virtualDetailsHandler); handler != nil {
|
||||
handler.AddVirtualDetails(id, details)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,8 +10,6 @@ import (
|
|||
|
||||
crypto "github.com/anyproto/any-sync/util/crypto"
|
||||
|
||||
domain "github.com/anyproto/anytype-heart/core/domain"
|
||||
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
|
@ -437,64 +435,6 @@ func (_c *MockService_GetPersonalSpace_Call) RunAndReturn(run func(context.Conte
|
|||
return _c
|
||||
}
|
||||
|
||||
// GetRelationIdByKey provides a mock function with given fields: ctx, spaceId, key
|
||||
func (_m *MockService) GetRelationIdByKey(ctx context.Context, spaceId string, key domain.RelationKey) (string, error) {
|
||||
ret := _m.Called(ctx, spaceId, key)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for GetRelationIdByKey")
|
||||
}
|
||||
|
||||
var r0 string
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, domain.RelationKey) (string, error)); ok {
|
||||
return rf(ctx, spaceId, key)
|
||||
}
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, domain.RelationKey) string); ok {
|
||||
r0 = rf(ctx, spaceId, key)
|
||||
} else {
|
||||
r0 = ret.Get(0).(string)
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(1).(func(context.Context, string, domain.RelationKey) error); ok {
|
||||
r1 = rf(ctx, spaceId, key)
|
||||
} else {
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// MockService_GetRelationIdByKey_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetRelationIdByKey'
|
||||
type MockService_GetRelationIdByKey_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// GetRelationIdByKey is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - spaceId string
|
||||
// - key domain.RelationKey
|
||||
func (_e *MockService_Expecter) GetRelationIdByKey(ctx interface{}, spaceId interface{}, key interface{}) *MockService_GetRelationIdByKey_Call {
|
||||
return &MockService_GetRelationIdByKey_Call{Call: _e.mock.On("GetRelationIdByKey", ctx, spaceId, key)}
|
||||
}
|
||||
|
||||
func (_c *MockService_GetRelationIdByKey_Call) Run(run func(ctx context.Context, spaceId string, key domain.RelationKey)) *MockService_GetRelationIdByKey_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run(args[0].(context.Context), args[1].(string), args[2].(domain.RelationKey))
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_GetRelationIdByKey_Call) Return(id string, err error) *MockService_GetRelationIdByKey_Call {
|
||||
_c.Call.Return(id, err)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_GetRelationIdByKey_Call) RunAndReturn(run func(context.Context, string, domain.RelationKey) (string, error)) *MockService_GetRelationIdByKey_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// GetTechSpace provides a mock function with given fields: ctx
|
||||
func (_m *MockService) GetTechSpace(ctx context.Context) (clientspace.Space, error) {
|
||||
ret := _m.Called(ctx)
|
||||
|
@ -553,64 +493,6 @@ func (_c *MockService_GetTechSpace_Call) RunAndReturn(run func(context.Context)
|
|||
return _c
|
||||
}
|
||||
|
||||
// GetTypeIdByKey provides a mock function with given fields: ctx, spaceId, key
|
||||
func (_m *MockService) GetTypeIdByKey(ctx context.Context, spaceId string, key domain.TypeKey) (string, error) {
|
||||
ret := _m.Called(ctx, spaceId, key)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for GetTypeIdByKey")
|
||||
}
|
||||
|
||||
var r0 string
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, domain.TypeKey) (string, error)); ok {
|
||||
return rf(ctx, spaceId, key)
|
||||
}
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, domain.TypeKey) string); ok {
|
||||
r0 = rf(ctx, spaceId, key)
|
||||
} else {
|
||||
r0 = ret.Get(0).(string)
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(1).(func(context.Context, string, domain.TypeKey) error); ok {
|
||||
r1 = rf(ctx, spaceId, key)
|
||||
} else {
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// MockService_GetTypeIdByKey_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetTypeIdByKey'
|
||||
type MockService_GetTypeIdByKey_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// GetTypeIdByKey is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - spaceId string
|
||||
// - key domain.TypeKey
|
||||
func (_e *MockService_Expecter) GetTypeIdByKey(ctx interface{}, spaceId interface{}, key interface{}) *MockService_GetTypeIdByKey_Call {
|
||||
return &MockService_GetTypeIdByKey_Call{Call: _e.mock.On("GetTypeIdByKey", ctx, spaceId, key)}
|
||||
}
|
||||
|
||||
func (_c *MockService_GetTypeIdByKey_Call) Run(run func(ctx context.Context, spaceId string, key domain.TypeKey)) *MockService_GetTypeIdByKey_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run(args[0].(context.Context), args[1].(string), args[2].(domain.TypeKey))
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_GetTypeIdByKey_Call) Return(id string, err error) *MockService_GetTypeIdByKey_Call {
|
||||
_c.Call.Return(id, err)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_GetTypeIdByKey_Call) RunAndReturn(run func(context.Context, string, domain.TypeKey) (string, error)) *MockService_GetTypeIdByKey_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)
|
||||
|
|
|
@ -19,7 +19,6 @@ import (
|
|||
"go.uber.org/zap"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/anytype/config"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/localstore/addr"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
|
@ -71,11 +70,6 @@ type Service interface {
|
|||
AccountMetadataSymKey() crypto.SymKey
|
||||
AccountMetadataPayload() []byte
|
||||
WaitPersonalSpaceMigration(ctx context.Context) (err error)
|
||||
|
||||
// TODO: GO-4494 - Remove these temporary methods
|
||||
GetRelationIdByKey(ctx context.Context, spaceId string, key domain.RelationKey) (id string, err error)
|
||||
GetTypeIdByKey(ctx context.Context, spaceId string, key domain.TypeKey) (id string, err error)
|
||||
|
||||
app.ComponentRunnable
|
||||
}
|
||||
|
||||
|
@ -495,23 +489,3 @@ func (s *service) getTechSpace(ctx context.Context) (*clientspace.TechSpace, err
|
|||
return nil, ctx.Err()
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: GO-4494 - Remove this temporary method
|
||||
func (s *service) GetRelationIdByKey(ctx context.Context, spaceId string, key domain.RelationKey) (id string, err error) {
|
||||
spc, err := s.Get(ctx, spaceId)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return spc.GetRelationIdByKey(ctx, key)
|
||||
}
|
||||
|
||||
// TODO: GO-4494 - Remove this temporary method
|
||||
func (s *service) GetTypeIdByKey(ctx context.Context, spaceId string, key domain.TypeKey) (id string, err error) {
|
||||
spc, err := s.Get(ctx, spaceId)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return spc.GetTypeIdByKey(ctx, key)
|
||||
}
|
||||
|
|
|
@ -64,21 +64,9 @@ type widgetParameters struct {
|
|||
//go:embed data/get_started.zip
|
||||
var getStartedZip []byte
|
||||
|
||||
//go:embed data/personal_projects.zip
|
||||
var personalProjectsZip []byte
|
||||
|
||||
//go:embed data/knowledge_base.zip
|
||||
var knowledgeBaseZip []byte
|
||||
|
||||
//go:embed data/notes_diary.zip
|
||||
var notesDiaryZip []byte
|
||||
|
||||
//go:embed data/migration_dashboard.zip
|
||||
var migrationDashboardZip []byte
|
||||
|
||||
//go:embed data/strategic_writing.zip
|
||||
var strategicWritingZip []byte
|
||||
|
||||
//go:embed data/empty.zip
|
||||
var emptyZip []byte
|
||||
|
||||
|
@ -86,12 +74,8 @@ var (
|
|||
log = logging.Logger("anytype-mw-builtinobjects")
|
||||
|
||||
archives = map[pb.RpcObjectImportUseCaseRequestUseCase][]byte{
|
||||
pb.RpcObjectImportUseCaseRequest_GET_STARTED: getStartedZip,
|
||||
pb.RpcObjectImportUseCaseRequest_PERSONAL_PROJECTS: personalProjectsZip,
|
||||
pb.RpcObjectImportUseCaseRequest_KNOWLEDGE_BASE: knowledgeBaseZip,
|
||||
pb.RpcObjectImportUseCaseRequest_NOTES_DIARY: notesDiaryZip,
|
||||
pb.RpcObjectImportUseCaseRequest_STRATEGIC_WRITING: strategicWritingZip,
|
||||
pb.RpcObjectImportUseCaseRequest_EMPTY: emptyZip,
|
||||
pb.RpcObjectImportUseCaseRequest_GET_STARTED: getStartedZip,
|
||||
pb.RpcObjectImportUseCaseRequest_EMPTY: emptyZip,
|
||||
}
|
||||
|
||||
// TODO: GO-2009 Now we need to create widgets by hands, widget import is not implemented yet
|
||||
|
@ -104,32 +88,6 @@ var (
|
|||
pb.RpcObjectImportUseCaseRequest_GET_STARTED: {
|
||||
{model.BlockContentWidget_Link, "bafyreic75ulgm2yz426hjwdjkzqw3kafniknki7qkhufqgrspmxzdppixa", "", true},
|
||||
},
|
||||
pb.RpcObjectImportUseCaseRequest_PERSONAL_PROJECTS: {
|
||||
{model.BlockContentWidget_CompactList, widget.DefaultWidgetFavorite, "", false},
|
||||
{model.BlockContentWidget_CompactList, widget.DefaultWidgetSet, "", false},
|
||||
{model.BlockContentWidget_CompactList, "bafyreibdfkwnnj6xndyzazkm2gersm5fk3yg2274d5hqr6drurncxiyeoi", "", true}, // Tasks
|
||||
{model.BlockContentWidget_CompactList, widget.DefaultWidgetRecent, "", false},
|
||||
},
|
||||
pb.RpcObjectImportUseCaseRequest_KNOWLEDGE_BASE: {
|
||||
{model.BlockContentWidget_Link, "bafyreiaszkibjyfls2og3ztgxfllqlom422y5ic64z7w3k3oio6f3pc2ia", "", true},
|
||||
{model.BlockContentWidget_CompactList, widget.DefaultWidgetFavorite, "", false},
|
||||
{model.BlockContentWidget_CompactList, widget.DefaultWidgetSet, "", false},
|
||||
{model.BlockContentWidget_CompactList, widget.DefaultWidgetRecent, "", false},
|
||||
},
|
||||
pb.RpcObjectImportUseCaseRequest_NOTES_DIARY: {
|
||||
{model.BlockContentWidget_Link, "bafyreiexkrata5ofvswxyisuumukmkyerdwv3xa34qkxpgx6jtl7waah34", "", true},
|
||||
{model.BlockContentWidget_CompactList, widget.DefaultWidgetFavorite, "", false},
|
||||
{model.BlockContentWidget_CompactList, widget.DefaultWidgetSet, "", false},
|
||||
{model.BlockContentWidget_CompactList, widget.DefaultWidgetRecent, "", false},
|
||||
},
|
||||
pb.RpcObjectImportUseCaseRequest_STRATEGIC_WRITING: {
|
||||
{model.BlockContentWidget_List, "bafyreido5lhh4vntmlxh2hwn4b3xfmz53yw5rrfmcl22cdb4phywhjlcdu", "f984ddde-eb13-497e-809a-2b9a96fd3503", true}, // Task tracker
|
||||
{model.BlockContentWidget_List, widget.DefaultWidgetFavorite, "", false},
|
||||
{model.BlockContentWidget_Tree, "bafyreicblsgojhhlfduz7ek4g4jh6ejy24fle2q5xjbue5kkcd7ifbc4ki", "", true}, // My Home
|
||||
{model.BlockContentWidget_CompactList, widget.DefaultWidgetRecent, "", false},
|
||||
{model.BlockContentWidget_Link, "bafyreiaoeaxv4dkw4xgdcgubetieyuqlf24q2kg5pdysz4prun6qg5v2ru", "", true}, // About Anytype
|
||||
{model.BlockContentWidget_CompactList, widget.DefaultWidgetSet, "", false},
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -8,26 +8,57 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
dateIdLayout = "2006-01-02"
|
||||
dateNameLayout = "02 Jan 2006"
|
||||
shortDateIdLayout = "2006-01-02"
|
||||
dateIdLayout = "2006-01-02-15-04-05Z-0700"
|
||||
shortDateNameLayout = "Mon, Jan 02, 2006"
|
||||
dateNameLayout = "Mon, Jan 02, 2006 3:04 PM"
|
||||
)
|
||||
|
||||
func TimeToDateId(t time.Time) string {
|
||||
return addr.DatePrefix + t.Format(dateIdLayout)
|
||||
type DateObject interface {
|
||||
Id() string
|
||||
Name() string
|
||||
Time() time.Time
|
||||
}
|
||||
|
||||
func ParseDateId(id string) (time.Time, error) {
|
||||
return time.Parse(dateIdLayout, strings.TrimPrefix(id, addr.DatePrefix))
|
||||
type dateObject struct {
|
||||
t time.Time
|
||||
includeTime bool
|
||||
}
|
||||
|
||||
func TimeToDateName(t time.Time) string {
|
||||
return t.Format(dateNameLayout)
|
||||
func NewDateObject(t time.Time, includeTime bool) DateObject {
|
||||
return dateObject{t, includeTime}
|
||||
}
|
||||
|
||||
func DateNameToId(name string) (string, error) {
|
||||
t, err := time.Parse(dateNameLayout, name)
|
||||
if err != nil {
|
||||
return "", err
|
||||
func BuildDateObjectFromId(id string) (DateObject, error) {
|
||||
formatted := strings.TrimPrefix(id, addr.DatePrefix)
|
||||
formatted = strings.Replace(formatted, "_", "+", 1)
|
||||
t, err := time.Parse(dateIdLayout, formatted)
|
||||
if err == nil {
|
||||
return dateObject{t, true}, nil
|
||||
}
|
||||
return TimeToDateId(t), nil
|
||||
t, err = time.ParseInLocation(shortDateIdLayout, formatted, time.Local)
|
||||
if err == nil {
|
||||
return dateObject{t, false}, nil
|
||||
}
|
||||
return dateObject{}, err
|
||||
}
|
||||
|
||||
func (do dateObject) Id() string {
|
||||
if do.includeTime {
|
||||
formatted := do.t.Format(dateIdLayout)
|
||||
formatted = strings.Replace(formatted, "+", "_", 1)
|
||||
return addr.DatePrefix + formatted
|
||||
}
|
||||
return addr.DatePrefix + do.t.Format(shortDateIdLayout)
|
||||
}
|
||||
|
||||
func (do dateObject) Name() string {
|
||||
if do.includeTime {
|
||||
return do.t.Format(dateNameLayout)
|
||||
}
|
||||
return do.t.Format(shortDateNameLayout)
|
||||
}
|
||||
|
||||
func (do dateObject) Time() time.Time {
|
||||
return do.t
|
||||
}
|
||||
|
|
|
@ -7,43 +7,116 @@ import (
|
|||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestTimeToDateId(t *testing.T) {
|
||||
assert.Equal(t, "_date_2024-11-07", TimeToDateId(time.Date(2024, time.November, 7, 12, 25, 59, 0, time.UTC)))
|
||||
assert.Equal(t, "_date_1998-01-01", TimeToDateId(time.Date(1998, time.January, 1, 0, 1, 1, 0, time.UTC)))
|
||||
assert.Equal(t, "_date_2124-12-25", TimeToDateId(time.Date(2124, time.December, 25, 23, 34, 0, 0, time.UTC)))
|
||||
func TestNewDateObject(t *testing.T) {
|
||||
t.Run("include time", func(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
ts time.Time
|
||||
expectedId string
|
||||
expectedName string
|
||||
}{
|
||||
{
|
||||
ts: time.Date(2024, time.November, 7, 12, 25, 59, 0, time.UTC),
|
||||
expectedId: "_date_2024-11-07-12-25-59Z_0000",
|
||||
expectedName: "Thu, Nov 07, 2024 12:25 PM",
|
||||
},
|
||||
{
|
||||
ts: time.Date(1998, time.January, 1, 0, 1, 1, 0, time.UTC),
|
||||
expectedId: "_date_1998-01-01-00-01-01Z_0000",
|
||||
expectedName: "Thu, Jan 01, 1998 12:01 AM",
|
||||
},
|
||||
{
|
||||
ts: time.Date(1998, time.January, 1, 0, 1, 1, 0, time.FixedZone("UTC", +4*60*60)),
|
||||
expectedId: "_date_1998-01-01-00-01-01Z_0400",
|
||||
expectedName: "Thu, Jan 01, 1998 12:01 AM",
|
||||
},
|
||||
{
|
||||
ts: time.Date(2124, time.December, 25, 23, 34, 0, 0, time.UTC),
|
||||
expectedId: "_date_2124-12-25-23-34-00Z_0000",
|
||||
expectedName: "Mon, Dec 25, 2124 11:34 PM",
|
||||
},
|
||||
{
|
||||
ts: time.Date(2124, time.December, 25, 23, 34, 0, 0, time.FixedZone("UTC", -2*60*60)),
|
||||
expectedId: "_date_2124-12-25-23-34-00Z-0200",
|
||||
expectedName: "Mon, Dec 25, 2124 11:34 PM",
|
||||
},
|
||||
} {
|
||||
do := NewDateObject(tc.ts, true)
|
||||
assert.Equal(t, tc.expectedId, do.Id())
|
||||
assert.Equal(t, tc.expectedName, do.Name())
|
||||
assert.Equal(t, tc.ts, do.Time())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("do not include time", func(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
ts time.Time
|
||||
expectedId string
|
||||
expectedName string
|
||||
}{
|
||||
{
|
||||
ts: time.Date(2024, time.November, 7, 12, 25, 59, 0, time.UTC),
|
||||
expectedId: "_date_2024-11-07",
|
||||
expectedName: "Thu, Nov 07, 2024",
|
||||
},
|
||||
{
|
||||
ts: time.Date(1998, time.January, 1, 0, 1, 1, 0, time.UTC),
|
||||
expectedId: "_date_1998-01-01",
|
||||
expectedName: "Thu, Jan 01, 1998",
|
||||
},
|
||||
{
|
||||
ts: time.Date(1998, time.January, 1, 0, 1, 1, 0, time.FixedZone("UTC", +4*60*60)),
|
||||
expectedId: "_date_1998-01-01",
|
||||
expectedName: "Thu, Jan 01, 1998",
|
||||
},
|
||||
{
|
||||
ts: time.Date(2124, time.December, 25, 23, 34, 0, 0, time.UTC),
|
||||
expectedId: "_date_2124-12-25",
|
||||
expectedName: "Mon, Dec 25, 2124",
|
||||
},
|
||||
{
|
||||
ts: time.Date(2124, time.December, 25, 23, 34, 0, 0, time.FixedZone("UTC", -2*60*60)),
|
||||
expectedId: "_date_2124-12-25",
|
||||
expectedName: "Mon, Dec 25, 2124",
|
||||
},
|
||||
} {
|
||||
do := NewDateObject(tc.ts, false)
|
||||
assert.Equal(t, tc.expectedId, do.Id())
|
||||
assert.Equal(t, tc.expectedName, do.Name())
|
||||
assert.Equal(t, tc.ts, do.Time())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestTimeToDateName(t *testing.T) {
|
||||
assert.Equal(t, "07 Nov 2024", TimeToDateName(time.Date(2024, time.November, 7, 12, 25, 59, 0, time.UTC)))
|
||||
assert.Equal(t, "01 Jan 1998", TimeToDateName(time.Date(1998, time.January, 1, 0, 1, 1, 0, time.UTC)))
|
||||
assert.Equal(t, "25 Dec 2124", TimeToDateName(time.Date(2124, time.December, 25, 23, 34, 0, 0, time.UTC)))
|
||||
}
|
||||
|
||||
func TestParseDateId(t *testing.T) {
|
||||
t.Run("date format", func(t *testing.T) {
|
||||
func TestBuildDateObjectFromId(t *testing.T) {
|
||||
t.Run("date object ids", func(t *testing.T) {
|
||||
for _, ts := range []time.Time{
|
||||
time.Date(2024, time.December, 7, 12, 25, 59, 0, time.UTC),
|
||||
time.Date(2024, time.November, 7, 12, 25, 59, 0, time.UTC),
|
||||
time.Date(1998, time.January, 1, 0, 1, 1, 0, time.UTC),
|
||||
time.Date(1998, time.January, 1, 0, 1, 1, 0, time.FixedZone("UTC", +4*60*60)),
|
||||
time.Date(2124, time.December, 25, 23, 34, 0, 0, time.UTC),
|
||||
time.Date(2124, time.December, 25, 23, 34, 0, 0, time.FixedZone("UTC", -2*60*60)),
|
||||
} {
|
||||
dateId := TimeToDateId(ts)
|
||||
ts2, err := ParseDateId(dateId)
|
||||
withTime1 := NewDateObject(ts, true)
|
||||
withTime2, err := BuildDateObjectFromId(withTime1.Id())
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, ts.Year(), ts2.Year())
|
||||
assert.Equal(t, ts.Month(), ts2.Month())
|
||||
assert.Equal(t, ts.Day(), ts2.Day())
|
||||
assert.Zero(t, ts2.Hour())
|
||||
assert.Zero(t, ts2.Minute())
|
||||
assert.Zero(t, ts2.Second())
|
||||
assert.Equal(t, withTime2.Time().Unix(), withTime1.Time().Unix())
|
||||
assert.Equal(t, withTime2.Id(), withTime1.Id())
|
||||
|
||||
withoutTime1 := NewDateObject(ts, true)
|
||||
withoutTime2, err := BuildDateObjectFromId(withoutTime1.Id())
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, withoutTime2.Time().Unix(), withoutTime1.Time().Unix())
|
||||
assert.Equal(t, withoutTime2.Id(), withoutTime1.Id())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("wrong format", func(t *testing.T) {
|
||||
_, err := ParseDateId("_date_2024")
|
||||
_, err := BuildDateObjectFromId("_date_2024")
|
||||
assert.Error(t, err)
|
||||
|
||||
_, err = ParseDateId("object1")
|
||||
_, err = BuildDateObjectFromId("object1")
|
||||
assert.Error(t, err)
|
||||
})
|
||||
|
||||
}
|
||||
|
|
|
@ -530,6 +530,13 @@ func Map(s *types.Struct, keys ...string) *types.Struct {
|
|||
return ns
|
||||
}
|
||||
|
||||
func MapN(structs []*types.Struct, keys ...string) []*types.Struct {
|
||||
for i, s := range structs {
|
||||
structs[i] = Map(s, keys...)
|
||||
}
|
||||
return structs
|
||||
}
|
||||
|
||||
func StructIterate(st *types.Struct, f func(path []string, v *types.Value)) {
|
||||
var iterate func(s *types.Struct, f func(path []string, v *types.Value), path []string)
|
||||
iterate = func(s *types.Struct, f func(path []string, v *types.Value), path []string) {
|
||||
|
|
|
@ -6,6 +6,8 @@ import (
|
|||
|
||||
"github.com/gogo/protobuf/types"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"golang.org/x/exp/maps"
|
||||
)
|
||||
|
||||
func TestGet(t *testing.T) {
|
||||
|
@ -177,3 +179,34 @@ func TestIsEmptyValueOrAbsent(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestMapN(t *testing.T) {
|
||||
// given
|
||||
structs := []*types.Struct{
|
||||
{Fields: map[string]*types.Value{
|
||||
"name": String("obj1"),
|
||||
"id": String("obj1"),
|
||||
"key": String("obj1"),
|
||||
}},
|
||||
{Fields: map[string]*types.Value{
|
||||
"name": String("obj2"),
|
||||
"id": String("obj2"),
|
||||
"links": StringList([]string{"obj1", "obj3"}),
|
||||
}},
|
||||
{Fields: map[string]*types.Value{
|
||||
"name": String("obj3"),
|
||||
"id": String("obj3"),
|
||||
"number": Int64(42),
|
||||
}},
|
||||
}
|
||||
keys := []string{"name", "id"}
|
||||
|
||||
// when
|
||||
mapped := MapN(structs, keys...)
|
||||
|
||||
// then
|
||||
require.Len(t, mapped, 3)
|
||||
assert.Len(t, maps.Keys(mapped[0].Fields), 2)
|
||||
assert.Len(t, maps.Keys(mapped[1].Fields), 2)
|
||||
assert.Len(t, maps.Keys(mapped[2].Fields), 2)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue